LLM을 추천시스템으로 사용할 수 있을까 - 3
0
33
지난호 랩업
안녕하세요! 지난호부터 시작한 LLM for Rec, 추천을 위한 LLM 연구 리뷰를 (정말 오랜만에 돌아왔지만) 이번호에도 계속 이어나가고자 합니다. 작년말부터 석사 졸업 이후 취업과 같은 중요한 일이 많아서, 늦게 돌아왔지만 유종의 미를 거둘 수 있도록 이렇게 글을 작성해봅니다. 지난호에서는 추천 Task에 대한 Fine-tuning을 통해 언어모델을 활용한 연구를 살펴봤습니다. 아래 모델은 (텍스트 데이터로) 사전학습된 언어모델을 평점 예측 또는 클릭 확률을 예측하는 추천 Task로 파인튜닝을 수행했습니다.
- Do LLMs Understand User Preferences? Evaluating LLMs On User Rating Prediction(2023, ArXiv)
- ONCE: Boosting Content-based Recommendation with Both Open- and Closed-source Large Language Models(2024, WSDM)
이번 호에는 파인튜닝 외에 프롬프트 튜닝과 관련한 연구를 살펴보려 합니다. 파인튜닝과 프롬프트 튜닝은 어떻게 다를까요? 지난 월호 연구의 방법들은
- 언어모델을 인코더로 활용해 유저 또는 아이템의 representation을 추출하고,
- 추출한 representation 기반으로 특정 모듈(또는 loss)을 통해 평점과 클릭율을 예측했습니다.
프롬프트 튜닝은 언어모델의 아웃풋이 텍스트 그 자체입니다. 텍스트를 활용해 기존 언어모델링처럼 모델을 튜닝합니다. 예를 들면 아이템을 구매했으면 yes, 구매하지 않았으면 no로 텍스트 정답을 구성하고 이 답안을 학습하는 것이죠. (즉, 평점과 클릭율과 달리 학습할 정답이 텍스트라는 것이 중요 포인트입니다.)
관련한 연구를 살펴보겠습니다.
TALLRec: An E!ective and E!icient Tuning Framework to Align Large Language Model with Recommendation(RecSys, 2023)
논문 TALLRec에서는 추천 데이터로 LLM을 튜닝하여, LLM을 추천 Task에 적합하도록 하는데 목적을 두었습니다. 학습 프로세스는 두 가지 단계로 나눠집니다. 첫번째, Alpaca tuning은 많이 알려진 튜닝 방식으로 라마를 self-instruct 데이터로 학습시켜, 일반화 성능을 향상시킵니다. (* Alpaca tuning에 대한 좋은 자료들이 많으니, 관련해서 검색을 통해 이해해보시는 것을 추천드립니다.) 두번째, alpaca 방식을 모방해서 추천용 instruct 데이터로 언어모델을 튜닝합니다. 두 번째 과정이 TALLRec 논문의 핵심이라고 할 수 있습니다.
추천용 instruct 데이터를 좀 더 살펴보겠습니다. 아래 테이블처럼, 추천 데이터를 새로운 형식으로 변환합니다. 수행하는 Task에 대한 지시사항(Task Instruction)과 유저의 상호작용 데이터(Task Input)을 바탕으로 새로운 아이템을 좋아하는지(Yes), 싫어하는지(No) 결과(Task Output)가 나오는 형태입니다.
튜닝은 LoRA 방식을 활용하여, 학습에 소요되는 연산량과 시간을 줄입니다. (* LORA는 언어모델 파인튜닝에 많이 활용되는 방식으로, 사전학습된 파라마터를 고정(Freeze)하고 대신 학습가능한 rank decomposition matrices를 레이어에 추가하여 학습하는 방식입니다.) 또한, LLM으로 LLaMA를 선택하여 학습과 실험을 수행했습니다.
요약하면, TALLRec은 alpaca 방식을 모방해서 추천용 instruct 데이터로 언어모델을 튜닝하는 과정을 통해 LLM을 추천태스크로 전환(Align)하였습니다.
Harnessing Large Language Models for Text-Rich Sequential Recommendation(WWW, 2024)
두번째 논문은 아이템 정보(즉 텍스트)가 많은 상황에서의 시퀀셜 추천을 제안한 연구입니다. 먼저 아이템 정보로 이루어진 구매 이력을 분리(segment)하고 LLM기반으로 유저 선호를 요약합니다. (* 일정 수준으로 요약된 유저 선호 텍스트를 만드는 것이 핵심입니다) 요약된 유저 선호와 최근 유저 이력, 아이템 정보를 프롬프트로 구성하여 해당 아이템을 좋아할지(yes), 좋아하지 않을지(No)를 예측하도록 LoRA 방식으로 LLM을 파인튜닝합니다.
프롬프트는 아래에 예시를 참고하시면 이해가 쉬우실 겁니다. 추천테스크에 대해 설명하는 지시문(Instruction)과 요약된 유저 선호(Preference Summary), 최근 유저 이력(Historical Items), 다음 아이템, 즉 예측할 아이템 정보(Next Item)으로 프롬프트가 구성됩니다. 이 프롬프트가 언어모델에 입력되면, LLM은 Yes 또는 No로 답변하는 방식인 것이죠.
별도로 다루지는 않겠지만, 이 논문에서는 Preference Summary를 만드는 방식에 초점을 맞추고 있습니다. LLM으로 유저 선호(요약)을 만들기 위해 계층적으로 LLM 기반 요약을 하거나, 순차적(순환적)으로 요약하는 방식에 대해서 제안하였습니다. 혹시 (유저가 방대한 콘텐츠를 탐색하는) 뉴스 또는 책 등 콘텐츠 기반 추천시스템에 관심있는 분은 참고하시면 좋을 것 같습니다.
정리하며
이번 월호는 짧게 끝난 느낌이 있습니다만, 프롬프트 튜닝을 활용한 LLM을 추천시스템에 활용하는 방법에 대해 개략적으로 이해하실 수 있으셨길 바랍니다. 다음월호에서는 파인튜닝, 프롬프트 튜닝에 이어, 인스트럭션 튜닝에 대해 살펴보고자 합니다.
Leave a Comment:
로그인 후 댓글을 작성할 수 있습니다.
Comments:
No comments yet. Be the first to comment!