추천 시스템 소개
사용자가 사용한 아이템에 대해 제안을 제공하는 소프트웨어 도구나 기술
일상생활에서 접하고 있는 다양한 개인화된 서비스의 일종
- 목적
- 사용자의 선호를 모델링하고 이를 통해 비즈니스 목표를 달성하는 것
- 사례
- netflix, facebook, alibaba
- Personalized Education : 지식 수준 모델링을 해서 학습 컨텐츠 제공
- Personalized Healthcare : 질병 진단, 의약품 처방 이력을 종합해서 미래의 질병 예측
기존 ML 방법론과의 차이
사용자와 아이템의 로그 데이터를 바탕으로 사용자가 좋아할만한 아이템을 추천한다.
기존 ML 지도학습의 하나인 Logistic Regression으로 수행해보자
$$rating(user,item) = f(user,item)=W^{(u)}\phi^{(u)}(u) + W^{(i)}\phi^{(i)}(i)$$
사용자 term과 아이템 term을 포함해서 weight들이 곱해지는 형태로 수행된다.
사용자의 아이템에 대한 스코어를 계산하는데 활용하려면 각각의 사용자가 아직 접하지 못한 아이템 i에 대해서 가장 score가 높은 것부터 rating하게 된다. item에 대해 rating을 수행하기 때문에 user term은 더이상 필요가 없어진다. 그래서 모든 사용자에게 동일하게 가장 인기있는 추천이 이루어지는 비개인화된 결과가 나온다.
$$\underset{i\in unseen\,items}{\operatorname{\arg\max}} f(user,item) = \underset{i\in unseen\,items}{\operatorname{\arg\max}}W^{(i)}\phi^{(i)}(i)$$
regression에서도 아이템과 유저의 상호작용을 고려해서 설계할 수도 있으나 수가 많아서 모든 경우의 수를 고려하는 것은 굉장히 비효율적이다. 또한, 어떤 도메인에서 어떤 feature가 효과적인지 미리 알 수 없기 때문에 feature을 사용하는 방법도 비효율적이다. user_id, item_id만 존재하는 도메인에는 regression을 적용할 수 없다.
Recommendation System(=RecSys) 방법론은 이러한 시나리오에서 개인화된 예측을 위한 근본적인 방법론이며 사용자와 아이템 간의 관계를 명시적으로 모델링하는 방법론이다. 이 관계는 사용자 u 와 아이템 i에 대해서 그 둘 간의 commpatibility function = $compatibility=f(u,i)$을 계산함으로써 이루어진다.
다양한 commpatibility = $f(u,i)$의 형태
- Matrix Factorization
- Memory-based Collaborative Filtering
$similarity(R_u, R_u)$ - Neural Collaborative Filter
$f(u,i)=MLP(u,i)$
CV, NLP에서 이미지라는 단일 entity, 텍스트라는 단일 entity를 다루지만, RecSys에서는 (사용자, 이미지)나 (사용자, 텍스트)로 이루어지는 조합에 대한 상호작용을 모델링한다. 행렬에 행에는 user 열에는 item을 두어 유저와 아이템의 iteraction을 명시적으로 모델링한다. 시간, 장소라는 추가적인 additional context를 고려하기도 한다.
거시적인 추천시스템 연구 및 방법론
- 사용자와 아이템을 어떻게 더 잘 표현할지
- 어떠한 형태의 compatibility funtion을 사용할지
집합과 행렬을 통해서 사용자-아이템 상호작용 데이터를 표현해보자
위의 데이터에서 (u,i,r,t)로 구성된 튜플을 가지고 있다.
Set을 사용한 방법
$I_u$ : 유저 u가 사용한 아이템 집합
$U_i$ : 아이템 i를 사용한 유저의 집합
set을 이용하면 item-to-item이나 user-to-user간의 유사도 관계를 계산할 때나 평가할 때 유용하다
Matrix를 사용한 방법
- R
사용자와 아이템의 rating matrix
explicit feedback - C
implicit feedback
상호작용의 유무만을 판단하는 comsumed matrix - $R_u$
R행렬에서 유저u에 해당하는 하나의 행 - $R_{.,i}$
R행렬에서 아이템 i에 해당하는 하나의 열
Set과 Matrix 표현의 연관성
$I_u={i|R_{u,i}\neq 0}$
$U_i={u|R_{u,i}\neq 0}$
추천 시스템 방법론의 전통적인 분류
CF(협업 필터링)은 상호작용 이력인 사용자와 아이템 행렬을 사용하고, CB(컨텐츠 기반) 사용자와 아이템 행렬 뿐만 아니라 사용자와 아이템에 관련한 여러가지 side information을 추가로 활용한다.
Memory-based CF는 보통 이웃기반 CF라고도 불린다. Model-based CF는 latent vector, matrix factorization같은 것들이 있다.
최근에는 graph나 sequential한 데이터를 활용하는데, 그것들은 이 분류체계로 나누기 어렵다.
딥러닝 기반의 추천 시스템
딥러닝 기반의 추천시스템이 최근 다양한 산업계에서 성공사례를 보이며 각광받고 있다.
성공할 수 있었던 이유
- 사용이 편리한 end-to-end architecture
기존에 비딥러닝 계열의 방법론들이 도메인 별로 각자 정의된 feature engineering을 활용했었지만 딥러닝에서는 이런 것들이 필요없다 - input data type에 알맞은 inductive bias를 제공할 수 있다
예를 들어 CNN이 이미지를 처리하기 적합하고 Sequence data는 RNN이 적합하다고 알려져 있다. - 복잡한 비선형 상호작용을 포착할 수 있다.
강력한 representation learning ability를 가지고 있다.
딥러닝이 추천시스템에 적용되는 것은 사용자-아이템 행렬을 모델링한 함수 f를 deep neural network로 변경하는 것으로도 볼 수 있다.
모델
- Wide & deep
wide part의 장점인 memorization과 deep part의 장점인 generalization의 강점을 결합함 - Collaborative metric learning
compatibility function에서 흔히 사용하는 inner product를 사용하지 않고 vector들간의 euclidean 거리로 대체했다. 사용자가 좋아하는 아이템과의 사이 거리는 가깝게, 싫어하는 아이템 사이의 거리는 멀게 한다. - Deep content-based Music Recommendation
audio를 받아 CNN을 활용해서 분석해서 MF와 결합하는 contents based recommendation
단순 이력을 사용하는 것보다 다양한 추천 결과를 얻을 수 있다.
카테고리 정보를 주지 않더라고 알아서 군집화된다. - Self-Attentive Sequential Recommendation
Transformer을 이용해서 sequential recommendation을 수행했다.
순차적 이력 정보가 주어졌을 때 sequential property를 잘 표현했다.
한계
- 해석력 interpretability
직관적으로 이해할 수 없어서 설명을 요구하는 추천에서는 활용하기 어렵다 - Data requirement
어느정도 이상의 성능을 얻기 위해서 학습 데이터가 충분히 필요하다 - Extensive Hyperparameter Tuning
hyper parameter가 많은 편이라 비용과 시간 소모가 있다.
추천 시스템에서 DL이 최선의 방법인가?
CV,NLP 분야에서는 전통적 방법에 비해 DL이 많은 성장을 이루었지만 추천 시스템에서는 두드러지게 breakthrough가 없었다. 그 이유는?
- 추천 시스템의 데이터가 보편적이지 않다. 그래서 대규모 데이터를 모으기 어렵다.
ex) netflix 데이터와 amazon 데이터의 공통적인 요소가 없다. - 대규모의 standard benchmark dataset이 없다. 데이터가 있더라도 task의 목적에 따라 평가방식이나 데이터를 나누는 방식이 다르다. 데이터가 내부 기밀이기 때문에 공개할 필요가 없다.
ex) CIFAR10 - 추천시스템에서 선호도나 아이템의 특징이 시간에 따라서 변할 수 있다.
'부스트캠프 AI Tech 3기 > 프로젝트 : P-stage' 카테고리의 다른 글
[Day40] Movie Rec 3. Collaborative Filtering (1) (0) | 2022.03.22 |
---|---|
[Day40] Movie Rec 2. Research Directions and Resources (0) | 2022.03.21 |
[Day22] 이미지분류 3. Dataset (0) | 2022.02.27 |
[Day22] 이미지분류 2. Image Classification & EDA (0) | 2022.02.27 |
[Day22] 이미지분류 1. Competition with AI Stages! (0) | 2022.02.24 |