ONCE: Boosting Content-based Recommendation with Both Open- and Closed-source Large Language Models
•
WSDM 2024 - Proceedings
ABSTRACT
•
콘텐츠 기반 개인화 추천시스템(Personalized content-based recommender systems) 분야
◦
(방대한 콘텐츠를 탐색하는) 뉴스 또는 책 추천에서 활용
•
기존 연구들은 아이템의 콘텐츠를 제대로 이해하는데 한계
◦
LLM이 문제 해결 가능
▪
더 나은 맥락 이해
▪
광범위한 사전 지식
•
(논문의 핵심 아이디어) Open & Closed - source LLM → 둘을 함께 활용 : 추천 개선
◦
Open LLM (ChatGPT) : Content encoder로 활용 → representation 개선
◦
Closed LLM (LLaMA) : prompting → token 레벨의 학습 data 개선
코드
INTRODUCTION
•
Content-based recommender systems
◦
아이템(e.g., articles, movies, books)의 콘텐츠, 속성을 분석 → 개인화 추천
◦
관련 플랫폼 : Google News, Goodreads(books)
•
추천시스템의 핵심 : content encoder
◦
이전 연구
▪
1D-CNN (with pre-trained word representations such as GloVe)
▪
PLMs (BERT)
▪
→ 아이템 콘텐츠를 제대로 이해하는 데는 한계가 있다.
◦
이전 연구의 한계를 LLMs로 극복할 수 있다.
▪
모델 파라미터 & 토큰 차원 ↑ : 엄청난 양의 정보를 저장
▪
(ex) ChatGPT : 특정 책에 대해 질문하면 저자, 주제 등 디테일한 지식 보여줌
직접해봄
•
Open & Closed - source LLMs : 각기 다른 방법을 채택해서 통합
◦
(Open) 컨텐츠 표현 추출을 기반으로 LLM 모델을 파인튜닝
◦
(Closed) 토큰 아웃풋에만 접근 가능
▪
다양한 프롬프트 전략 → 학습 데이터를 유용하게 만듦
•
두 가지 데이터셋으로 검증
◦
MIND(Microsoft News Recommendation Dataset)
◦
Goodreads(books)
•
실험적으로,
Finetuning LLaMA → 10% 이상의 성능 개선
Data generated by ChatGPT → 학습 효율과 추천 퀄리티를 향상
참고
•
콘텐츠 기반 추천 방법론
◦
데이터 구성
1.
타이틀, 카테고리, 세부내용 등 다양한 속성으로 이루어진 콘텐츠
2.
콘텐츠를 본 히스토리를 가지고 있는 유저
3.
유저가 특정 컨텐츠를 보았는지(click)/안보았는지(no-click) 상호작용
◦
목적
▪
콘텐츠 후보군이 주어졌을 때 유저의 선호를 예측
◦
방법론 : 3가지 모듈로 크게 구분
1.
Content encoder : 다양한 속성을 가진 콘텐츠을 벡터로 변환하는 인코더
2.
History(user) encoder : 유저 벡터를 생성하며, 유저가 본 콘텐츠 히스토리 기반으로 생성
3.
Interaction module : 유저 벡터와 후보 아이템 벡터를 기반으로 유저의 선호도(클릭 확률) 예측
•
기존 연구 흐름
OVERVIEW
•
(Open LLM) LLaMA
◦
(Network) 기존 연구 모델 구조를 따름
▪
기존 연구(Content Encoder)에서 콘텐츠 인코더를 BERT → LLAMA 교체
◦
Content Encoder
▪
Natural Concator
•
라벨 : 텍스트 시퀀스 제일 앞 (ex: news article)
•
각 특성 텍스트 : <특성명> 관련 텍스트
•
여러 속성을 하나의 시퀀스로 합침
▪
Transformer Decoder
▪
Attention Fusion Layer : linear projection(smaller d) → additive attention (unified z)
◦
Finetuning 전략
▪
Partial Freezing and Caching : LLM의 하위 layer는 덜 task-specific한 경향,
특정 상위 k layer만 fine-tuning을 수행, 나머지 layer는 freezing.
또한 해당 나머지 layer에서의 모델 아웃풋을 미리 저장(caching)하여 학습 효율 ↑
▪
Parameter-Efficient Tuning : 학습 가능한 rank decomposition 행렬을
트랜스포머 레이어에 붙여 이를 업데이트하는 LORA(Low-Rank Adaptation) 방식를
unfrozen한 layer에 적용
•
(Closed LLM) ChatGPT
◦
LLM의 강력한 텍스트 이해와 생성능력으로 인해 학습 패러다임이
파인튜닝 방법론 → 프롬프트 방법론 변화되고 있음
그러나, 파인튜닝없이 in-context learning 등 프롬프트 방법론을 활용한 추천 성능은
행렬분해 성능정도에 그치고 있는 한계
◦
ChatGPT를 (기존 추천모델의 성능을 향상시킬 수 있도록) 데이터 증강에 활용
* 4단계로 구성
1.
Prompting : 프롬프트 작성
2.
Generating : 언어모델이 새로운 데이터 생성
3.
Updating(optional) : 생성 데이터로 새로운 데이터 생성
4.
Training : 새로운 데이터로 모델 학습
◦
Content Summarizer
▪
컨텐츠 → 간결한 문장들
▪
컨텐츠 title, abstract, category → more informative title : original title 대체
▪
(예제)
뉴스 제목을 다음을 기반으로 강화:
[제목] "추수감사절 저녁을 위한 모든 요리 준비법"
[요약] "추수감사절 요리를 분 단위로"
[카테고리] "food and drink"
>>>
"완벽한 타이밍의 추수감사절 저녁: 분 단위 정밀한 요리법 안내"
Python
복사
◦
User Profiler
▪
컨텐츠 히스토리 → 유저 프로필를 생성
▪
유저 프로필(vi)는 임베딩 변환(룩업임베딩) → 유저 벡터(vu)와 결합
▪
(예제)
사용자 이력에 기반하여 사용자 프로필 설명:
"일터로 복귀하라: 아마존 물류센터에서의 사망 사건에 대한 항의"
"마이애미 공항에서 네 명의 승무원 체포"
"지금 모두가 살고 싶어 하는 미국의 가장 저렴한 도시들"
>>>
주제: "여행, 비즈니스, 경제, 노동권"
지역: "플로리다"
Python
복사
◦
Personalized Content Generator
▪
[cold start] 적은 히스토리를 가진 유저 대상으로 합성 히스토리를 생성
▪
(예제)
사용자 이력에 기반하여 뉴스 기사 추천:
"인어공주 라이브 : TV 리뷰"
>>>
[제목] "실사 영화 뮬란 3월 개봉"
[요약] "디즈니의 실사 리메이크 뮬란이 3월에 개봉, 새롭고 화려한 시각과 재능 있는 배우.."
[카테고리] "movie"
Python
복사
▪
Chain-based Generation
•
유저 프로필을 생성 → 다음번 : (생성 프로필 + 히스토리로) 히스토리를 생성
•
user profile helps LLM to chain thinking : synthetic content 퀄리티 ↑
실험
•
데이터셋 : MIND(Microsoft News Recommendation Dataset), Goodreads(books)
•
LLM
◦
(Open) LLaMA-7B, LLaMA-13B
◦
(Close) GPT-3.5
•
성능 비교
◦
(Open) LLaMA 파인튜닝 - 상당한 성능 개선
◦
(Close) GPT 데이터 증강 - 성능 개선
◦
Open + Close : 시너지 효과
CONCLUSION
•
기존 콘텐츠 기반 추천시스템의 한계를 LLM으로 개선 시도
•
Open & Closed - Sourced LLM 통합
◦
Open LLM(LLaMa) 파인튜닝
◦
Closed LLM (GPT) 프롬프트기법 - 데이터 증강
정리하며
•
두 가지 LLM을 통합하는 방법 제안 흥미
◦
보통 한쪽 LLM으로만 접근하기 쉬운데, 두가지를 다 쓰려고 노력했다는 점
◦
특정 LLM의 한계를 제대로 파악 → 개선점을 찾은 것
•
A100 갖고싶다.