-
#LLM+추천시스템 Large Language Models meet Collaborative Filtering: An EfficientAll-round LLM-based Recommender System 논문 리뷰REVIEW 2024. 7. 19. 01:34반응형
정말 오랜만에 남기는 논문 리뷰. 최근 추천시스템을 개인적으로 개발하면서, 추천시스템에 어떻게 LLM을 적용할 것이냐? 에 대한 관심을 가지고 있던 와중에 발견한 논문을 리뷰한다.
오늘 소개하는 논문은 Large Language Models meet Collaborative Filtering: An Efficient All-round LLM-based Recommender System이다. (link)(github)
논문들어가기에 앞서서 관련 연구의 내용부터 집고 넘어가려고 한다.
사전 지식
Collaborative Filtering (CF)
추천시스템을 공부해 본사람이라면 아마 모르는 사람이 없을 듯, 한국어로는 협업필터링이라고 불리우는 이 기술은 추천 시스템의 근간을 이루며, 사용자의 과거 선호도를 바탕으로 미래의 추천을 제공하는 방식이다. 핵심 아이디어는 유사한 사용자/아이템을 기반으로 추천을 생성하는 것이라고 보면 된다.
이는 두가지 방식이 존재한다.- 사용자 기반 협업 필터링 : 사용자 기반 협업 필터링은 비슷한 취향을 가진 사용자들이 어떤 아이템을 좋아하는지를 기반으로 추천을 제공한다.. 즉, 특정 사용자와 유사한 취향을 가진 사용자 그룹을 찾아서, 유사한 사용자들이 선호하는 아이템을 바탕으로 특정되어있는 사용자에게 아이템을 추천.
- 아이템 기반 협업 필터링 : 아이템 기반 협업 필터링은 유사한 아이템들 간의 관계를 기반으로 추천을 제공한다. 즉, 특정 아이템과 유사한 다른아이템을 찾고, 특정 사용자가 이미 선호하는 아이템들과 유사한 아이템을 추천
두 방식은 복합적으로 사용하는 경우가 많다. 일반적으로 사용자 기반 필터링이 초기단계에서 구현이 쉽고, 아이템 기반 협업 필터링은 대규모 데이터셋에서 효율적이다.
이 논문에서는 초기의 CF 논문 부터 최근의 신경망 기반으로 접근한 논문까지 소개해준다. AutoRec와 Neural Matrix Factorization과 같다. 이들은 복잡한 사용자-아이템간의 관계에 대한 패턴을 찾는데 집중하고 있다고 소개 한다.
Cold scenario (콜드 시나리오)
다음껄 설명하기에 앞서서 콜드 시나리오를 봐야한다. 콜드 시나리오는 추천시스템에서 데이터가 적은 경우이다. 즉, 사용자 또는 아이템간의 관계 혹은 상요 작용 데이터가 매우 적거나 없는 경우다. 일반적인 추천시스템의 초기 상태라고 볼수도 있다.
- 차가운 사용자(Cold User) 시나리오: 시스템에 새로운 사용자가 가입했거나 특정 사용자에 대한 상호작용 데이터가 거의 없는 경우다. 이 경우, 시스템은 해당 사용자의 선호도를 추정하기 어렵기 때문에 적절한 추천을 제공하기 어렵다.
- 차가운 아이템(Cold Item) 시나리오: 시스템에 새로운 아이템이 추가되었거나 특정 아이템에 대한 상호작용 데이터가 거의 없는 경우. 이 경우, 시스템은 해당 아이템을 적절히 추천하기 위한 충분한 정보를 가지고 있지 않다.
결국 이 상황은 협업필터링이 동작하기에 어려운 상태이다. 이를 해결하기위해 다음에서 보는 Modality-aware Recommender System을 연구되었다.
Modality-aware Recommender Systems
이 분야는 결국 콜드 시나리오를 해결하기 위한 방법이다. 사용자 프로필, 아이템의 텍스트 설명, 이미지 등의 데이터를 통해 모델을 보완하는 방식이다. 초기에는 CNN을 통해 시각적 특징을 추출하고, 최근에는 bert, vision-transformer 모델과 같이 사전학습된 인코더를 사용하여 모달리티 지식을 추천에 사용한다. NOVA, DMRL, MoRec, CTRL 모델과 가장 최근 모델은 RECFORMER을 통해서 설명한다. 이 모델들은 결국 모달리티 지식을 아이템 임베딩에 연산을 해서 추가한다거나, 학습을 추가로 하는 방식을 사용한다.
LLM-based Recommender Systeams
내가 최근 고민하는 것처럼 결국 Chatgpt 등으로 대표되는 LLM을 추천 시스템에 활용하는 방식이 요새 많이 연구되고 있다. 해당 리뷰에서도 다양한 모델과 In context learning등을 소개하는데, 사실 최고의 방법으로 확정된것 없어보인다. 그러나 LLM의 사전 학습된 지식과 고급 언어 이해 능력은 추천 작업에서 새로운 가능성을 열것으로 보이고. 특히, 콜드 시나리오에서 텍스트 정보를 효과적으로 활용하여 추천 성능을 향상시킬 수 있다.
협업 지식과 대규모 언어 모델의 결합
그럼 이제부터 이 논문에서 이야기하는 것을 살펴보자.
동기 : 실세계의 추천 시스템에서는 콜드 시나리오에서의 성능을 유지할 방법이 없다.
목표 : 만능 LLM 기반 추천 시스템인 A-LLMRec을 제안한다.
주요 아이디어
협업 지식과 대규모 언어 모델의 결합: A-LLMRec이라는 새로운 추천 시스템은 협업 필터링(CF) 모델과 대규모 언어 모델(LLM)을 결합하여, 두 모델의 장점을 모두 활용 한다. 협업 필터링 모델의 고품질 사용자/아이템 임베딩과 LLM의 고급 언어 이해 능력을 동시에 활용하여 추천 성능을 극대화. 베이스 모델은 CF-RecSys 인데, 순서가 있는 경우에는 SASRec고, 아닌경우에는 NCF를 사용한다.
모델 소개
모델은 그림과 같이 두 개의 스테이지로 나누어진다.
Stage1. frozen CF-RecSys (학습하지 않음) 와 Textual Knowledge를 어떻게 연결시킬 것인가?
- 먼저 SBERT model를 통해서 아이템과 관련된 텍스트 데이터로 부터 텍스트 임베딩을 추출한다. SBERT는 학습중에 fine-tuning을 진행한다.
- 그 다음에 두개의 인코더가 있다. 아이템 인코더, 텍스트 인코더는 1-layer MLP로 구성되어 있다. 여기서 텍스트 인코더의 인풋사이즈는 768이다. (SBERT 때문). 아후 이 두 개의 모델을 합치는 손실함수(Mathing Loss)를 사용한다. 왜냐면 결과적으로 텍스트와 아이템의 벡터를 align 시키는 것이 중요하기 때문.
- 하지만, 두개의 인코더의 손실함수를 최소화만 시키다보면 과적합 상태가 오기때문에 해당 논문에서 Avoiding Over-smoothed Representation 라는 내용으로 각 인코더의 Reconstruction Loss를 제안한다.
- 해당 손실 함수는 아이템 인코더와 디코더에 추가된 디코더이고 이들은 원래 정보를 보존하는 역할을 한다.
- 다음으로 모델이 추천작업을 올바르게 할수 있도록 학습하는 Recommendation Loss가 있다. 해당 로스는 추천의 시퀀스 데이터에 따라서 올바르게 추천하도록 학습하는 부분이라 이해하면된다. 자세한건 코드와 수식을 직접보면 도움이 되지 않을까?
Stage2. 앞서 정렬한 정보와 LLM의 정렬 (2단계)
- 먼저 단어를 정리해봅시다
- Joint Collaborative-Text Embedding (공동 협업-텍스트 임베딩) 앞서 CF-RecSys와 SBERT의 정보를 결합하여 생성된 임베딩
- 아이템 임베딩 : CF-RecSys에서 학습된 아이템 임베딩
- 텍스트 임베딩 : SBERT를 사용하여 생성된 아이템의 텍스트 임베딩
- User Representation : 사용자 표현은 CF-RecSys에서 학습된 사용자 임베딩입니다. 이는 사용자의 과거 상호작용 데이터를 기반으로 사용자의 선호도를 나타내는 벡터
- 프로젝션 네트워크
- User Representation 프로젝션 : 사용자 표현을 LLM의 토큰 공간으로 투영합니다. 구조는 2-layer MLP
- Iteam Embedding 프로젝션 : 공동 협업-텍스트 임베딩을 LLM의 토큰 공간으로 투영, 구조는 2-layer MLP
- 프롬프트 디자인 : 프롬프트 형식은 LLM이 사용자 표현과 과거 상호작용한 아이템 목록을 입력으로 받아, 다음에 추천할 아이템을 예측하도록 합니다. 사용자 표현과 아이템 임베딩은 각각 프로젝션 네트워크를 통해 변환된 값을 사용합니다.
- 벡터 값 (Emb): 사용자 표현과 아이템 임베딩은 프로젝션 네트워크를 통해 변환된 벡터 값으로, LLM의 입력으로 사용
- 프롬프트 구성: 사용자 표현, 과거 상호작용한 아이템, 추천 후보군 아이템, 그리고 LLM이 예측한 추천 결과로 구성
[User Representation] is a user representation. This user has watched [HISTORY (Item Titles, Item Emb)] in the past. Recommend a movie for this user to watch next from the following set of movie titles, [CANDIDATE (Item Titles, Item Emb)]. The recommendation is [Next Item Title].
- 학습 목표
- 프롬프터를 통한 LLM의 결과가 사용자에게 맞춤으로 추천을 하도록 한다.
- 프롬프터 예시
[0.2, 0.4, 0.1, ...] is a user representation. This user has watched ["The Matrix" (0.3, 0.5, 0.2, ...), "Inception" (0.4, 0.1, 0.3, ...)] in the past. Recommend a movie for this user to watch next from the following set of movie titles, ["Avatar" (0.2, 0.2, 0.5, ...), "Titanic" (0.3, 0.4, 0.2, ...)]. The recommendation is "Avatar".
실험 결과
3가지 종류의 다양한 모델들과 비교했다. 그리고 다음 실험 중에는 모델이 목표로하는 콜드 시나리오에 대한 실험도 있어서 흥미로웠다.
반응형'REVIEW' 카테고리의 다른 글
CV#1 A ConvNet for the 2020s 논문 리뷰 (0) 2022.04.26 지식 그래프를 Ai에 활용하기 (0) 2022.03.21 추천 #2) 컨텐츠 기반 모델 - 유사도 함수, TF-IDF (0) 2021.08.08 추천#1) 룰 기반의 연관 분석, Apriori, FP-Growth (0) 2021.08.07 KG#3 ) Translation Model for KC (TransE, TransR 리뷰) (0) 2021.04.11