Large Language Models meet Collaborative Filtering: An Efficient All-round LLM-based Recommender System

HanJu Han·2025년 4월 20일
0

A-LLMRec: 대규모 언어 모델과 협업 필터링의 만남

이 논문은 대규모 언어 모델(LLM)과 협업 필터링(Collaborative Filtering) 기술을 결합한 새로운 추천 시스템인 A-LLMRec(All-round LLM-based Recommender system)을 소개합니다. 이 시스템의 핵심 아이디어는 이미 훈련된 협업 필터링 추천 시스템(CF-RecSys)의 협업 지식을 LLM의 토큰 공간에 정렬시켜, 두 기술의 장점을 모두 활용하는 것입니다.

문제 배경

기존 추천 시스템들은 다음과 같은 한계가 있습니다:

  1. 협업 필터링 시스템: 사용자-아이템 상호작용이 많은 "웜(warm)" 시나리오에서는 효과적이지만, 상호작용이 적은 "콜드(cold)" 시나리오에서는 성능이 떨어집니다.

  2. 텍스트 기반 LLM 추천 시스템: 텍스트 정보를 활용해 콜드 시나리오에서 효과적이지만, 협업 지식이 부족하여 웜 시나리오에서는 성능이 떨어집니다.

이 연구는 두 접근법의 장점을 결합하여 콜드와 웜 시나리오 모두에서 우수한 성능을 보이는 "올라운드" 추천 시스템을 개발하는 것을 목표로 합니다.

A-LLMRec 구조

A-LLMRec은 두 단계로 구성됩니다:

1단계: 협업 지식과 텍스트 지식 정렬

첫 번째 단계에서는 사전훈련된 CF-RecSys의 아이템 임베딩과 해당 아이템의 텍스트 정보를 정렬시킵니다:

  • 입력:

    • 아이템 임베딩 (CF-RecSys에서 추출)
    • 아이템 텍스트 정보 (제목, 설명)
  • 방법:

    • Sentence-BERT(SBERT)를 사용하여 텍스트 임베딩 추출
    • 아이템 인코더(f_enc_I)와 텍스트 인코더(f_enc_T)를 도입하여 두 임베딩 유형을 잠재 공간에서 정렬
  • 손실 함수:

    • 매칭 손실(Lmatching): MSE(e_i, q_i) - 아이템 임베딩과 텍스트 임베딩 간의 정렬
    • 아이템 재구성 손실(Litem-recon): 원본 아이템 임베딩 정보 보존
    • 텍스트 재구성 손실(Ltext-recon): 원본 텍스트 임베딩 정보 보존
    • 추천 손실(Lrec): 협업 지식 명시적 통합

2단계: 결합 임베딩과 LLM 정렬

두 번째 단계에서는 1단계에서 얻은 결합 임베딩을 LLM의 토큰 공간에 투영합니다:

  • 입력:

    • 사용자 표현(x_u)
    • 결합 임베딩(e_i)
  • 방법:

    • 두 개의 MLP(F_U, F_I)를 사용하여 사용자 표현과 결합 임베딩을 LLM 토큰 공간에 투영
    • 투영된 임베딩을 LLM 프롬프트에 통합
  • 손실 함수:

    • 사용자 이력과 후보 아이템이 주어졌을 때 정확한 다음 아이템 타이틀 생성 확률 최대화

예시 데이터와 학습 과정

아래 예를 통해 A-LLMRec의 작동 방식을 설명하겠습니다:

예시 데이터:

  • 사용자: 사용자_123

  • 상호작용 기록: ["쇼생크 탈출", "대부", "펄프 픽션"]

  • 후보 아이템: ["다크 나이트", "인셉션", "인터스텔라", "매트릭스"]

  • 아이템 텍스트 정보:

    다크 나이트:
      제목: 다크 나이트
      설명: 조커라는 악당이 고담시티에 혼란을 일으킬 때, 배트맨은 정의를 위해 싸우는 자신의 능력에 대한 가장 큰 심리적 시험 중 하나를 받아들여야 합니다.
    
    인셉션:
      제목: 인셉션
      설명: 꿈 공유 기술을 통해 기업 비밀을 훔치는 도둑이 CEO의 마음에 아이디어를 심는 임무를 맡게 됩니다.

학습 과정:

1단계:

  1. CF-RecSys(SASRec)에서 모든 아이템의 임베딩 추출:

    E_쇼생크 = [0.2, 0.5, -0.1, ...]
    E_대부 = [0.3, -0.2, 0.4, ...]
    ...
  2. SBERT로 각 아이템의 텍스트 정보 인코딩:

    Q_다크나이트 = SBERT("제목: 다크 나이트, 설명: 조커라는 악당이...")
  3. 인코더를 통해 임베딩 정렬:

    e_다크나이트 = f_enc_I(E_다크나이트)
    q_다크나이트 = f_enc_T(Q_다크나이트)
  4. 손실 함수 최적화:

    Lstage-1 = Lmatching + α·Litem-recon + β·Ltext-recon + Lrec

2단계:

  1. 사용자 표현과 결합 임베딩을 LLM 토큰 공간에 투영:

    O_사용자123 = F_U(x_사용자123)
    O_다크나이트 = F_I(e_다크나이트)
  2. LLM 프롬프트 생성:

    [User Representation] is a user representation.
    This user has watched [쇼생크 탈출 (Item Emb), 대부 (Item Emb), 펄프 픽션 (Item Emb)] in the past. 
    Recommend a movie for this user to watch next from the following set of movie titles, 
    [다크 나이트 (Item Emb), 인셉션 (Item Emb), 인터스텔라 (Item Emb), 매트릭스 (Item Emb)]. 
    The recommendation is
  3. LLM이 다음 아이템 제목 생성: "다크 나이트"

학습 데이터

연구에서는 다음 네 가지 Amazon 데이터셋을 사용합니다:

  1. Movies and TV (대규모):

    • 약 297,498명의 사용자
    • 약 59,944개의 아이템
    • 약 3,409,147개의 상호작용
    • 평균 시퀀스 길이: 11.46
  2. Video Games (중간 규모):

    • 약 64,073명의 사용자
    • 약 33,614개의 아이템
    • 약 598,509개의 상호작용
    • 평균 시퀀스 길이: 8.88
  3. Beauty (소규모):

    • 약 9,930명의 사용자
    • 약 6,141개의 아이템
    • 약 63,953개의 상호작용
    • 평균 시퀀스 길이: 6.44
  4. Toys (아이템 > 사용자):

    • 약 30,831명의 사용자
    • 약 61,081개의 아이템
    • 약 282,213개의 상호작용
    • 평균 시퀀스 길이: 9.15

A-LLMRec의 주요 장점

  1. 모델 불가지론적(Model-agnostic): 어떤 기존 CF-RecSys와도 통합 가능
  2. 효율성: LLM이나 CF-RecSys의 미세 조정이 필요 없이 정렬 네트워크만 훈련
  3. 올라운드 성능: 콜드 및 웜 시나리오 모두에서 우수한 성능 발휘
  4. 자연어 생성: 협업 지식을 바탕으로 자연어 출력 생성 가능

실험 결과 하이라이트

  • 일반 추천 작업에서 기존 방법들보다 우수한 성능
  • 콜드/웜 아이템 시나리오, 콜드 사용자 시나리오, 소량 훈련 시나리오, 교차 도메인 시나리오 모두에서 우수한 성능
  • TALLRec보다 훈련 속도(2.53배) 및 추론 속도(1.71배) 향상
  • 장르 예측과 같은 언어 생성 작업에서도 효과적임을 입증

이 논문은 협업 필터링 기술과 대규모 언어 모델의 장점을 효과적으로 결합하여, 콜드와 웜 시나리오 모두에서 우수한 성능을 발휘하는 효율적인 추천 시스템을 제안했습니다.


LLM 토큰 공간과의 의미적 불일치: 예시와 설명

LLM 토큰 공간과 다른 임베딩 공간(CF 임베딩, 텍스트 임베딩)의 의미적 불일치를 구체적인 예시로 설명하겠습니다.

1. 각 공간의 특성과 예시 벡터

1.1 LLM 토큰 공간 (예: OPT-6.7B의 토큰 공간)

LLM의 토큰 공간은 단어나 서브워드의 의미를 언어 모델 사전학습 과정에서 학습한 방식으로 인코딩합니다.

예시 토큰 임베딩:

"영화" = [0.2, -0.5, 0.1, 0.7, -0.3, ...]  # 4096차원
"좋아하다" = [0.3, 0.1, -0.4, 0.2, 0.5, ...]  # 4096차원
"액션" = [0.1, 0.6, 0.3, -0.2, 0.4, ...]  # 4096차원

LLM 토큰 공간에서는 의미적으로 유사한 단어가 유사한 임베딩을 가집니다:

코사인 유사도(유사도):
sim("영화", "비디오") = 0.85  # 높음 (의미적으로 유사)
sim("영화", "액션") = 0.45    # 중간 (관련은 있지만 다름)
sim("영화", "사과") = 0.05    # 낮음 (관련 없음)

1.2 CF 임베딩 공간 (SASRec 등)

CF 임베딩은 사용자-아이템 상호작용 패턴에 기반하여 생성됩니다.

예시 CF 임베딩:

"다크 나이트" = [0.8, -0.2, 0.5, 0.1, -0.7]  # 50차원
"인셉션" = [0.7, -0.3, 0.6, 0.0, -0.6]       # 50차원
"쇼생크 탈출" = [0.1, 0.7, 0.2, -0.5, 0.3]   # 50차원

CF 공간에서는 같은 사용자들이 함께 시청한 영화가 유사한 임베딩을 가집니다:

sim("다크 나이트", "인셉션") = 0.92  # 높음 (같은 감독, 비슷한 팬층)
sim("다크 나이트", "쇼생크 탈출") = 0.25  # 낮음 (다른 장르와 팬층)

1.3 텍스트 임베딩 공간 (SBERT)

텍스트 임베딩은 언어적 의미와 맥락에 기반합니다.

예시 텍스트 임베딩:

"다크 나이트" = [0.3, 0.6, -0.2, 0.4, ...]  # 768차원
"인셉션" = [-0.1, 0.4, 0.5, 0.3, ...]       # 768차원
"쇼생크 탈출" = [0.2, 0.5, 0.3, -0.4, ...]   # 768차원

텍스트 공간에서는 설명이 비슷한 영화가 유사한 임베딩을 가집니다:

sim("다크 나이트", "배트맨 비긴즈") = 0.78  # 높음 (설명에 "배트맨", "고담시티" 등 공통 용어)
sim("다크 나이트", "인셉션") = 0.45  # 중간 (둘 다 크리스토퍼 놀란 영화지만 내용 다름)

2. 의미적 불일치 문제 예시

2.1 서로 다른 유사도 관계

"다크 나이트", "인셉션", "쇼생크 탈출"의 세 영화를 고려해봅시다:

CF 임베딩 기준 유사도:

sim_CF("다크 나이트", "인셉션") = 0.92  # 높음
sim_CF("다크 나이트", "쇼생크 탈출") = 0.25  # 낮음

텍스트 임베딩 기준 유사도:

sim_TEXT("다크 나이트", "인셉션") = 0.45  # 중간
sim_TEXT("다크 나이트", "쇼생크 탈출") = 0.38  # 중간

이처럼 각 공간에서 영화 간의 관계가 다르게 표현됩니다.

2.2 정규화 후 연결했을 때의 문제

두 임베딩을 정규화 후 연결하면:

concat_norm("다크 나이트") = [0.8/√1.49, -0.2/√1.49, ..., 0.3/√0.65, 0.6/√0.65, ...]
                          = [0.66, -0.16, ..., 0.37, 0.74, ...]

이 연결된 임베딩의 문제:
1. 두 부분이 서로 다른 의미 체계를 가짐
2. CF 부분이 "인셉션"과 유사하다고 말하는 반면, 텍스트 부분은 그렇지 않음
3. LLM은 이러한 연결된 임베딩을 해석하도록 훈련되지 않음

2.3 LLM 토큰 공간과의 불일치

LLM에 연결된 임베딩을 주입할 때:

LLM 토큰 공간의 "영화" = [0.2, -0.5, 0.1, 0.7, -0.3, ...]  # 4096차원
연결된 "다크 나이트" = [0.66, -0.16, ..., 0.37, 0.74, ...]  # 818차원

발생하는 문제:
1. 차원 불일치: 연결된 임베딩(818차원)은 LLM 토큰 공간(4096차원)과 차원이 다름
2. 의미 체계 불일치: LLM은 단어를 언어 모델링 관점에서 표현하는 반면, 연결된 임베딩은 혼합된 체계를 갖음

3. A-LLMRec의 해결 방법 예시

A-LLMRec은 이 문제를 두 단계로 해결합니다:

3.1 1단계: 의미 공간 정렬

임베딩 인코더를 통해 CF 임베딩과 텍스트 임베딩을 공통된 의미 공간으로 정렬합니다:

e_다크나이트 = f_enc_I(E_다크나이트) = [0.4, 0.2, -0.3, 0.5, -0.1]  # 128차원
q_다크나이트 = f_enc_T(Q_다크나이트) = [0.38, 0.23, -0.28, 0.48, -0.12]  # 128차원

이 정렬된 공간에서는 의미 관계가 보존됩니다:

sim(e_다크나이트, e_인셉션) ≈ sim(q_다크나이트, q_인셉션)

3.2 2단계: LLM 토큰 공간으로 투영

정렬된 임베딩을 LLM 토큰 공간으로 투영합니다:

O_다크나이트 = F_I(e_다크나이트) = [0.25, -0.42, 0.15, 0.6, -0.2, ...]  # 4096차원

이제 이 임베딩은:
1. LLM 토큰 공간과 동일한 차원(4096차원)
2. LLM이 해석할 수 있는 의미 체계를 가짐
3. 협업 필터링과 텍스트 의미 모두를 보존

결론

A-LLMRec의 두 단계 정렬 과정은 서로 다른 의미 공간 간의 불일치를 해소하여, 단순 연결이 해결할 수 없는 문제를 효과적으로 처리합니다. 이를 통해 LLM은 협업 필터링의 지식과 텍스트 의미를 모두 활용할 수 있게 됩니다.


A-LLMRec의 핵심 아이디어

SBERT 정보가 녹아있는 CF 임베딩 사용

  1. 웜 아이템(상호작용 많은 아이템)의 경우:

    • e_i = f_enc_I(E_i)를 사용합니다.
    • e_i주로 CF 정보에 기반하지만, 매칭 손실을 통해 SBERT의 텍스트 의미 정보도 함께 녹아있습니다.
  2. 콜드 아이템(상호작용 적은 아이템)의 경우:

    • q_i = f_enc_T(Q_i)를 사용합니다.
    • q_i주로 SBERT 텍스트 정보에 기반하지만, 매칭 손실을 통해 CF의 협업 지식도 함께 녹아있습니다.

즉, A-LLMRec의 첫 번째 단계 정렬 과정을 통해:

  • CF 임베딩에는 텍스트 의미가 더해지고
  • 텍스트 임베딩에는 협업 패턴이 더해집니다

이것이 바로 A-LLMRec이 콜드 시나리오와 웜 시나리오 모두에서 좋은 성능을 보이는 핵심 이유입니다:

  • 웜 시나리오: CF 기반이지만 텍스트 정보로 보강된 임베딩 사용
  • 콜드 시나리오: 텍스트 기반이지만 협업 패턴 지식이 녹아있는 임베딩 사용

이렇게 두 세계의 장점을 결합한 임베딩을 LLM에 전달함으로써, LLM은 협업 지식과 텍스트 의미를 모두 활용할 수 있게 됩니다.

profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글