Large Language Models meet Collaborative Filtering: An Efficient All‐round LLM‐based Recommender System 논문리뷰 - Songwooseok123/Study_Space GitHub Wiki
- 논문 제목: Large Language Models meet Collaborative Filtering: An Efficient All‐round LLM‐based Recommender System
- 학회 및 출판 정보: KDD 2024/08 (ACM SIGKDD Conference on Knowledge Discovery and Data Mining)
- 저자: Sein Kim, Hongseok Kang,...(카이스트/네이버)
이 논문은 "Sequential Recommendation" task를 수행하는데 있어서, 기존 추천 시스템의 한계를 보완하기 위해 LLM을 활용한 새로운 추천 시스템, "A-LLMRec" 을 제안함.
- 기존 추천시스템의 한계: cold/warm 시나리오에 대한 성능 저하
- 참고로, cold 시나리오: 추천 시스템에서 데이터가 적은 경우(추천시스템의 초기상태로써 사용자 또는 아이템간의 관계나 상호작용 데이터가 적거나 없는 경우)
- warm 시나리오: cold와 반대로, 상호작용 데이터가 맣은 경우
Figure 1: Comparisons between collaborative filtering model (SASRec), modality-aware model (i.e., MoRec), and LLMbased model (i.e., TALLRec) under the cold/warm1 scenarios on Amazon Movies/Video Games dataset (Hit@1)2.
-
협업 필터링(Collaborative Filtering RecSys) 기반 방법의 한계
- 콜드(cold) 시나리오 상황에서는 한계가 있다는 점
-
CF(Collaborative Filtering)의 한계를 보완하기 위해 modality-aware 추천 시스템, llm 기반 추천시스템이 등장
- 기존 CF에 비해서 cold 시나리오에 대한 효과는 좋았지만, Collaborative knowledge(사용자-상품 상호작용 정보)의 부족으로 warm 시나리오에 대한 성능은 안 좋음
- 즉, textual information에만 의존함, 따라서 Warm 시나리오에선 기존 CF보다 성능이 안 좋음
- 즉, Cold/Warm 상황에서 모두 Collaborative knowledge와 Text knowledge를 활용할 수 있도록, 기존 CF와 LLM을 결합하고 잠재공간을 Align하는 방법이 필요함.
- 기존 CF에 비해서 cold 시나리오에 대한 효과는 좋았지만, Collaborative knowledge(사용자-상품 상호작용 정보)의 부족으로 warm 시나리오에 대한 성능은 안 좋음
-
본 논문 제안 방법:
- 기존 CF 모델이 학습한 사용자/아이템 임베딩 을 그대로 활용하면서, LLM의 추론 능력과 표현력을 함께 사용하는 방식
- 구체적으로, CF의 아이템 임베딩을 LLM의 토큰 공간과 정렬(alignment)시키는 정렬 네트워크(alignment network)를 고안
-
특징
- 콜드/웜 시나리오 모두에서 강력한 성능
- 모델 독립적(model-agnostic): 기존 CF 모델이나 LLM과 쉽게 결합할 수 있다.
- CF-RecSys, LLM 둘 다 학습 필요없음, 둘 사이를 연결하는 정렬 네트워크(alignment network)만 학습시키면 됨.
- 자연어 생성까지 가능(예를 들어, 사용자의 선호 장르 예측)
- 다른 부가 정보 없이 collaborative information만 활용
- NCF, NextItNet, GRU4Rec, SASRec
- 아이템의 text 정보를 이용하지만 LLM을 기반으로하지 않는 방법론
-
MoRec, CTRL: 두 단계로 구성된 방법론
- Text 정보를 기반으로 아이템 임베딩 획득
- 획득한 아이템 임베딩으로 CF-RecSys 모델 훈련 (본 실험 시 SASRec 활용)
- Reformer: collaborative 정보 없이 오직 text 정보만을 이용해 Longformer를 추천 과업 전용 언어 모델로 활용
- LLM-only: facebook/opt-6.7b를 이용하여 해당 prompt로 추천과업 진행
- TALLRec: text 정보로만 구성된 prompt를 통해 LLM을 LoRA 방식으로 finetuning 진행
-
MLP-LLM: A-LLMRec 구조에서 stage-1에서 획득한 사용자 및 아이템 임베딩 활용이 아닌,
frozen CF-RecSys에서 획득한 사용자 및 아이템 임베딩을 LLM의 임베딩 사이즈에 맞게 조정하여 활용한 경우

-
(𝑈, 𝐼, 𝒯, S) ∈ 𝒟
→ historical user-item interaction dataset (사용자와 아이템의 과거 상호작용 데이터를 의미)-
𝑈: 사용자 집합
- 𝑈 = {u1, u2, ..., uN}
-
𝐼: 아이템 집합
- 영화 추천이라면 영화들의 집합.
-
i ∈ 𝐼 → (tⁱ, dⁱ) ∈ 𝒯
→ 아이템 i는 제목(tⁱ)과 설명(dⁱ)의 정보를 가진다.
-
𝒯: 아이템 제목(title) + 설명(description) 집합
-
S: 아이템 시퀀스(sequence) 집합
- Sᵘ: 한 사용자 u가 순서대로 클릭한 아이템들.
-
Sᵘ = (i₁ᵘ, i₂ᵘ, ..., iₖᵘ, ..., iₛᵘᵘ) ∈ S
→ 사용자의 아이템 상호작용 시퀀스 (user u의 interaction 순서를 나타냄)
-
Sequential Recommendation: 사용자의 아이템 상호작용 시퀀스를 기반으로 다음 아이템을 예측하는 것이 목표
-
E ∈ ℝ|𝐼|×d
→ 아이템 임베딩 행렬(CF-RecSys에 아이템 시퀀스 S를 입력하면 나오는 output)- |I|는 전체 아이템 개수, d는 임베딩 차원 수.
-
S = {SS¹, S², ..., S|𝑈|}
→ 모든 사용자의 interaction 시퀀스 집합 -
S1:ku = (i₁ᵘ, ..., iₖᵘ) ⊂ Sᵘ
→ user u의 interaction 시퀀스에서 앞부분 k개만 사용한 것 -
E1:ku = (Ei₁ᵘ, ..., Eiₖᵘ) ∈ ℝk×d
→ 위 시퀀스에 해당하는 아이템 임베딩 벡터들의 시퀀스- 각각의 아이템 i에 대해 임베딩 벡터 Eᵢ를 가져온 것.
- 이걸 CF의 입력으로 사용해서 다음 아이템을 예측
- 모든 사용자 u에 대해서 그 사용자의 시퀀스를 앞에서부터 한 칸씩 늘려가면서 , 다음 아이템 i_{k+1}이 나올 확률을 예측하고, 그 확률들을 곱해서 전체 확률을 최대화하는 것. 즉, 과거에 본 아이템들(S₁:k)을 보고, 다음 아이템(iₖ₊₁)을 예측하는 모델을 학습한다.(위의 식의 값이 최대화가 되도록 Θ를 최적화 한다)
- 모든 사용자 u에 대해, 주어진 k개까지의 시퀀스 ( S_{1:k}^u )로부터 다음 아이템 ( i_{k+1}^u )을 예측하는 확률을 최대화하는 것이 목표.
- 모델 파라미터는 ( \theta )로 표시됨.
- 이는 sequence-aware 추천 시스템에서 흔히 사용되는 방식으로, 예측 정확도를 높이기 위해 과거 시퀀스를 고려함.
밑의 2개 단계로 나뉨
- 1단계: Collaborative knowledge와 Textual knowledge를 정렬하는 단계
- 2단계: Joint Collaborative-Text 임베딩과 LLM을 정렬하는 단계

- 목적함수는 다음과 같다. 각각의 loss에 대해서 설명하겠음.
- CF에서 나온 Item embeddings(Collaborative knowledge)과 그와 관련된 Textual knowledge를 align하는 단계
- collaborative 정보가 담긴 아이템의 임베딩에 textual 정보를 주입한다고 생각하면 될듯
-
CF-RecSys(❄️)
- 사용자의 과거 user-item interation history를 기반으로 아이템 임베딩(
$E_i$ ) 생성
- 사용자의 과거 user-item interation history를 기반으로 아이템 임베딩(
-
SBERT(🔥) +텍스트 임베딩
- 아이템의 textual 정보(title+description)로 텍스트 임베딩(
$Qᵢ$ ) 생성
- 아이템의 textual 정보(title+description)로 텍스트 임베딩(
- 두 개의 인코더

- 아이템 임베딩과 텍스트 임베딩을 공통 잠재 공간(latent space) 으로 매핑하기 위해 두 개의 MLP 기반 인코더를 사용함:
-
$f^{enc}_I$ (🔥): CF-RecSys의 아이템 임베딩 Eᵢ → 잠재 임베딩 eᵢ (차원: d → d′) -
$f^{enc}_T$ (🔥): SBERT의 텍스트 임베딩 Qᵢ → 잠재 임베딩 qᵢ (차원: 768 → d′)
-

- 잠재 공간에서 eᵢ와 qᵢ를 최대한 가깝게 정렬(아이템 시퀀스 정보와 텍스트 정보가 유사해지도록)
- 이 정렬은 LLM이 이후에 협업 임베딩 정보를 텍스트처럼 이해하고 활용할 수 있도록 함.
-
문제점: Over-smoothing
- 단순히 eᵢ ≈ qᵢ가 되도록 학습하면, 두 임베딩이 무의미하게 평균화된 정보(즉, 모두 비슷하게)로 수렴할 위험이 있음.
- 극단적으로는 모든 벡터가 0으로 수렴할 수도 있음.
-
문제점: Over-smoothing

위의 Over-smoothing 현상을 방지하기 위해, 각 인코더 뒤에 디코더를 붙여 입력 복원을 시도함-> 핵심정보를 인코딩하도록 학습하는 loss임.
- user Representation(
$x_u$ )으로 아이템 추천을 잘 하도록 학습하는 loss

- 텍스트와 협업 지식을 매칭하는 것도 중요하지만, 모델이 추천(task)의 구조를 알도록 하는 명시적인 학습도 필요하다.
- 학습 방법: 진짜 클릭한 아이템은 높게, 무관한 아이템은 낮게 예측하게끔.
-
$x_u$ : 사용자$u$ 의 representation (CF-RecSys가 만들어냄) -
$E_{i^u}$ : positive item (사용자가 실제 클릭한 아이템)의 임베딩 -
$E_{i^{u,-}}$ : 부정 아이템 (사용자가 안 본 것)
- user representation(
$x_u$ )은 지금까지 본 아이템들 기반으로 만들어졌고, positive item 임베딩($E_{i^u}$ )이 인코더, 디코더를 통과해서 나온 임베딩은 앞으로 클릭할 아이템을 나타냄.- → 이 둘이 비슷해야 = 사용자 취향과 아이템이 잘 맞음 → 그래서 dot product가 커지도록 (= 유사도가 높게) 학습함.
- 위의 목적함수로 학습 후
$f_I^{enc}$ 에서 얻어지는 임베딩($e_i$ =$f_I^{enc}$ $(E_i)$ )을 "Joint Collaborative-Text Embedding" 이라고 함- CF에서 나온 Item embeddings(Collaborative knowledge)과 그와 관련된 Textual knowledge가 align 된 상태
- collaborative 정보가 담긴 아이템의 임베딩에 textual 정보를 주입되었다고 생각해도 됨
- CF에서 나온 Item embeddings(Collaborative knowledge)과 그와 관련된 Textual knowledge가 align 된 상태
- 학습된
$f_I^{enc}$ 는 stage 2에서 활용됨($f_I^{enc}$ 를 통해 나온$e_i$ 가 LLM의 입력으로 들어갈거임)
Stage-1에서 CF-RecSys와 SBERT를 통해 얻은 **joint collaborative-text embedding (eᵢ)**과 user representation (xᵤ)을 LLM이 이해할 수 있도록 LLM의 token embedding space로 **투영(project)**시키고, Prompt 형태로 LLM에 입력해서 사용자 맞춤 추천을 생성하는 게 목표.

- 왜 projection이 필요한가?
- LLM은 고정된 token embedding space (예: 768 or 1024 차원) 안에서만 작동함.
- 그런데 Stage-1에서 뽑은 xᵤ ∈ ℝᵈ, eᵢ ∈ ℝᵈ′ 는 그 공간과 차원이 다르고 의미도 다름.
- 그래서 xᵤ와 eᵢ를 LLM이 이해할 수 있도록 변환하는 두 개의 MLP를 사용해서 projection을 해줘야함.
- 여기서 Oᵤ, Oᵢ는 이제 LLM이 이해할 수 있는 token embedding처럼 사용할 수 있다.
**협업 정보(xᵤ)와 텍스트 정보(eᵢ)**를 모두 prompt에 녹여서 warm/cold 모두 다루는 추천이 가능하도록 하기 위함.

-
여기서 주황색 부분이 [Oᵤ]
- 사용자 u에 대한 임베딩 (soft prompt처럼 앞에 둬서 personalization)
-
하늘색부분이 [Oᵢ]
- 그 아이템의 joint embedding
-
이걸 통해 LLM은 “아, 이 사용자에 대해 이런 정보가 있고, 이런 아이템들을 봤구나”를 이해할 수 있는 듯.

-
θ: 학습 가능한 파라미터 (projection MLP들:
$F_U$ ,$F_I$ ) -
Θ: 고정된 LLM 파라미터 (즉, LLM은 fine-tuning 안 함)
-
$p^u$ : 사용자 u에 대한 prompt 입력 (Oᵤ 포함, 아이템들 정보 포함) -
$y^u$ : 사용자 u가 다음에 클릭한 아이템의 title 텍스트
→ 즉, LLM에게 prompt를 줘서 “이 사용자는 어떤 아이템을 클릭할까?” 하고, 실제 클릭한 아이템의 **제목(title)**을 token-by-token으로 예측하게 학습하는 것.
다양한 상황에서 실험을 엄청 많이함.
- Amazon dataset에서 4개 카테고리
- 영화, 게임, 뷰티, 장난감
- related works 에 있는 방법들
-
Test item:
$i_{|S^u|}^u$ -
Valid item:
$i_{1:|S^u|-1}^u$ -
Max length: 별도 설정 없음
-
Candidate: 총 20개의 아이템으로 구성
- target item을 제외하고
I^u
에 포함되지 않은 아이템 중 19개 임의 선택
- target item을 제외하고
-
Hit@k: k개의 아이템을 추천했을 때 추천된 아이템 안에 target item이 하나라도 포함된 경우
- 즉, target item의 수가 하나인 경우:
Hit@k = Recall@k
- 즉, target item의 수가 하나인 경우:
- Backbone: facebook/opt-6.7b
- CF-RecSys: SASRec
- movies and tv 학습시 A6000 48GB 4장 사용
-
A-LLMRec > collaborative 정보를 반영하지 않는 LLM 기반 방법론들 (LLM-only, TALLRec)
▪ Collaborative 정보를 반영하는 것이 추천 과업 성능 향상에 도움 됨 -
A-LLMRec > MLP-LLM
▪ CF-RecSys로부터 얻은 임베딩을 LLM에 거의 직접 활용(차원 변환)하는 방식은 그렇게 효과적이지 않음
▪ A-LLMRec의 alignment 과정의 효과로 보임 -
LLM-only가 LLM 기반 방법들 중 가장 성능 안 좋음
▪ LLM으로 하여금 단순히 prompt 통해 추천 과업을 진행하는 것에는 한계 존재 -
SASRec > TALLRec
▪ LLM을 fine-tuning하여도 text 정보만 있으면 안 됨 -
SASRec > Modality-aware
▪ text 정보가 더 강조되어 collaborative 정보를 학습하는 데 오히려 방해함
-
Interaction 수 기준 상위 35% → warm item / 하위 35% → cold item ▪ 학습 시, 기존과 동일하게 모든 데이터 활용
▪ 평가 시, target item의 cold/warm item 구분 후 각각 평가 -
Cold scenario: TALLRec > SASRec
-
Warm scenario: SASRec > TALLRec
▪ 선행 연구들의 결과와 유사함 -
Cold scenario: A-LLMRec(SBERT) > A-LLMRec
-
Warm scenario: A-LLMRec > A-LLMRec(SBERT)
▪ Cold에서는 조금이라도 textual 정보를 더 활용하는 것이 유리
▪ Warm에서는 collaborative 정보 활용이 더 유리
▪ 결론: Cold/warm 및 모든 데이터셋에서 A-LLMRec > other baselines