사용자에게 취향에 맞는 아이템을 제시하는 모델
IR
분야)골자는 u라는 특정 유저에 대한 변수가 들어왔을때 i플러스라는 객체가 가장 큰 확률을 지녀야 한다. 라는 것
memory-based collaborative filtering (CF)
model-based collaborative filtering(CF)
딥러닝 기반 추천 모델은 모두 model-based이다.
결국, 시간/공간 복잡도에 사용자/아이템의 수가 포함됨!
자연어 처리 분야의 단어 임베딩과 비교
어떻게 해결하나요?
시퀀셜 추천을 이용하여 해결한다
만약 사용자별 아이템 소비 기록에 순서가 있다면, 시퀀셜 추천을 적용 가능하다.
사용자 = 아이템의 시퀀스로 대체
- 전체 M개의 아이템 집합 I
- 사용자 u는 아이템을 소비한 기록의 시퀀스
미래의 소비 아이템 i에 대하여
결국 시퀀셜 추천은 자연어 처리에서 말하는 따음 단어 맞추기문제와 완전 동일한 문제이다.
- 시퀀셜 추천의 장점
- 사용자 임베딩 벡터를 사용하지 않음
- 즉 사용자가 늘어도 파라미터가 늘지 않음
- 자연어 처리에서 연구된 방법론을 모두 빌려올 수 있다
- 단, 문장-단어와 사용자-아이템은 성질이 꽤 다르다.(수 스케일, 분포 모양 등)
그럼 어떻게 해결하나요?
MixDim을 활용하자
추천 데이터셋은 long-tail 분포이다.
- 자연어 처리에서 단어와 추천의 아이템의 큰 차이
- 상위 아이템의 인기도가 아주 높음
- 그래서 인기순 추천이 가장 좋은 lower bound
- 그러나 하위 아이템의 기록 수를 무시할 수 없음
- 이 long-tail을 잘 다뤄야 고성능의 개인화된 추천이 가능하다.
하위 아이템은 소비한 사용자가 적음
- 즉, 기억해야할 정보가 적음
- 적은 차원 벡터로도 충분
마치 mixed precision처럼, 차원수를 섞어서 사용
상위 아이템 = d 차원, 하위 아이템 = d` 차원
추천 성능 감소가 거의 없다는 점에서 경량화 할 때에 꼭 확인하면 좋은 부분이다.
추천 모델은 빠른 학습도 매우 중요하다.
T + 1 문제
content-based
를 강화하여 해결한다.학습 과정
추천 모델의 목표는 아래와 같다.
구체적으로 어떻게?
다음 단어 맞추기
에서는 전체 단어 중 정답 단어를 맞추게끔 학습Bayesian Personalized Ranking
통계학에서는 이럴 때 네거티브 샘플링을 사용하여 해결한다.
실제 사례를 보자.
일반론
크고 복잡한 모델은 성능이 좋지만 느리고 무겁다.(and vice versa)
Funnel 구조
물론 필요하겠지만,,, 정말로?!
더 일반적으로는
딥러닝의 경량화, 최적화 작업 자체도 코스트다.
-필요하지 않은 상황이라면, 안 하는 것도 최적화다. 그런 비용과 이윤의 균혀을 잘 고려하는 것이 필요하다.
현실사례
딥러닝의 경량화, 최적화를 열심히 배웠지만 실제 사용하게 된다면, 그걸 정말 정말 사용해야하는지 심각하게 고민해봐라!