8 minute read

이전에는 유저와 아이템 임베딩의 선형 조합을 통해, 유저와 아이템의 관계를 다양한 표현으로 추천 시스템의 문제를 해결하였다면 이제는 딥 뉴럴 네트워크를 사용하여 효과적으로 모델링하여 유저의 선호도를 예측, 추천하는 방법에 대해 알아보자.

Recommender System with Deep Learning

딥러닝을 활용한 추천시스템에 대해 알아봅시당.

추천 시스템에서 딥러닝을 활용하는 이유.

  1. Deep Neural network는 data의 non-linearity를 효과적으로 나타낼 수 있다. (추천 데이터는 linear하게 적용하기엔 feature가 너무 다양하다.)
    • 복잡한 유저아이템 관계 패턴을 효과적으로 모델링하여 user의 선호도를 예측한다.
  2. DNN은 raw data로 부터 feature representation을 학습해 사람이 직접 feature design하지 않아도 된다. -> 텍스트, 이미지, 오디오 등 다양한 비정형 데이터를 추천 시스템에 활용할 수 있다.
  3. DNN은 자연어처리, 음성 신호 처리 등 sequential modeling task에서 성공적으로 적용된다.
    • 추천 시스템에서 next-item prediction, session-based recommendation에 사용된다.
  4. Tensorflow, PyTorch등 다양한 DL 프레임워크가 있다.
    • 효과적으로 서빙할 수 있다.

Neural Collaborative Filtering

MF(linear)의 한계를 지적하여 신경망 기반의 구조를 사용해 더욱 일반화된 모델을 제시한 논문.

선형 조합을 가지는 MF의 문제점을 MLP를 이용해 비선형적으로 문제를 해결한다.

MLP - Multi-Layer Perceptron, 퍼셉트론으로 이루어진 layer를 여러 개 순차적으로 이어 놓은 feed-forward neural network

최종 모델

SG

  • GMF와 MLP를 앙상블하여 사용
  • GMF와 MLP는 서로 다른 embedding layer를 사용한다.

\(\phi^{G M F}=\left(p_{u}^{G}\right)^{T} q_{i}^{G}\)
\(\phi^{M L P}=\phi_{X}\left(\cdots \phi_{2}\left(\phi_{1}\left(p_{u}^{M}, q_{i}^{M}\right)\right) \cdots\right)\)
\(\hat{y}_{u, i}=\sigma\left(h^{T}\left[\begin{array}{c}\phi^{G M F} \\ \phi^{M L P}\end{array}\right]\right)\)

성능 비교

SG MovieLens, Pinterest 데이터셋에 대하여 NCF의 추천 성능이 기존 MF나 MLP 모델보다 높다. (앙상블 했으니.. 당연하지않을까)

Deep Neural Networks for Youtube Recommendations

딥러닝 기반 추천 시스템을 실제 유튜브 서비스에 적용한 논문

유튜브는 Scale, Freshness, Noise를 해결 해야하는 과제에 놓여있는 상황이다.

  • Scale - 유튜브내의 엄청난 유저와 아이템 수는 엄청난 컴퓨팅 파워를 요구할 것이다.
    • 효율적인 서빙과 특화된 추천 알고리즘이 필요하다
  • Freshness - 잘 학습된 컨텐츠와 새로 업로드 된 컨텐츠를 실시간으로 적절히 조합해야 한다.(exploration(탐색) / exploitation(활용))
  • Noise - 엄청난 데이터로 Sparsity부분이 많아짐, 다양한 외부요인으로 유저의 행동을 예측하기 어렵다.
    • Implicit Feedback, 낮은 품질의 메타데이터를 잘 활용해야 함.

구조

위의 문제점을 극복하기위해 특이하게 주어진 사용자에 대해 Top N개의 추천 아이템을 생성하는 Candidate Generation부분과 유저,비디오 피쳐를 다양하게 사용하여 스코어를 구하고 최종 추천 리스트를 제공하는 ranking부분이 나눠져 있다(2단 필터를 거친다)

yt

Candidate Generation 부분

특정 시간(t)에 유저 U가 C라는 context를 가지고 있을 때, 비디오(i)를 각각 볼 확률을 계산하는 extreme multiclass classification(다중 클래스 분류) 문제이다.

\[P\left(w_{t}=i \mid U, C\right)=\frac{e^{v_{i} u}}{\sum_{j \in V} e^{v_{j} u}}\]

yt2

  • Watch Vector와 Search Vector
    • 과거 시청 이력과 검색 이력을 각각 임베딩 하고, 마지막 검색어가 너무 큰 힘을 갖는 것을 방지하여 평균한다.
  • Demographic과 Geographic features
    • 성별 등의 인구 통계학 정보와 지리적 정보를 피쳐로 한다.
  • Example age
    • 모델이 과거 데이터 위주로 편향되어 학습되는 문제

그림에서 보듯이 다양한 특성을 하나의 벡터로 concatenate하여 n개의 dense layer를 거쳐 하나의 User Vector가 생성되며 최종 output은 softmax 함수를 사용해 분류한다.

Ranking 부분.

Candidate Generation부분에서 생성한 수백개의 비디오 후보 중 최종으로 추천될 비디오의 순위를 매기는 부분이다.

yt3

  • 우측 상단의 훈련 부분에서 로지스틱 회귀를 사용하여 정확한 랭킹 스코어를 구한다.
  • loss function에 단순한 클릭 여부가 아닌 시청 시간을 가중치로 한 값을 반영한다.
  • 유저의 행동 특성을 사용한다.
    • 유저가 특정채널에서 얼마나 많이 영상을 봤는지.
    • 유저의 사용언어, 본 영상의 언어등등
  • DL구조 보다는 도메인 전문가의 역량이 좌우한다.
  • 네트워크가 통과 한 뒤 비디오가 실제로 시청될 확률 \(P(watch) \in[0,1]\)로 매핑한다.

Recommender System with AE

오토 인코더를 활용하여 추천 시스템에 적용해보자.

AE, DAE

AE(Autoencoder)

ae

  • 입력데이터를 출력으로 복원하는 비지도 학습 모델이다.
    • 중간 hidden layer르 input data의 feature representation으로 활용한다.

DAE(Denosing Autoencoder)

dae

  • 입력 데이터에 random noise나 dropout을 추가하여 학습한다.
    • noisy input 그림 참고.

AutoRec

AE를 CF에 적용하여 기본 CF의 표현과 복잡성 측면에서 뛰어남을 보인 논문

아이디어

  • Rating Vector를 입력과 출력으로 하여 Encoder & Decoder Reconstruction 과정을 수행
    • 유저 또는 아이템 벡터를 저차원의 latent feature로 나타내 이를 사용해 평점 예측
    • Autoencoder의 representation learning을 유저와 아이템에 적용한 것
  • 기본 MF와 비교하여 non-linear 활성화 함수를 사용하므로 더 복잡한 상호작용을 표현 가능하다.

모델

dae

아이템과 유저 중, 한 번에 하나에 대한 임베딩만을 진행(위 그림은 아이템 임베딩)

\(r^{(i)}\)는 아이템 i의 Rating Vector, \(R_{u,i}\)는 유저 u의 아이템 i에 대한 Rating
V는 인코더 가중치 행렬, W는 디코더 가중치 행렬을 나타낸다.

학습

  • 기존의 rating과 reconstructed rating의 RMSE(root mean squared error)를 최소화 하는 방향으로 학습한다.
  • 관측된 데이터에 대해서만 역전파 밑 파라미터 업데이트 진행
  • \[\min _{\theta} \sum_{\mathbf{r} \in \mathbf{S}}\|\mathbf{r}-h(\mathbf{r} ; \theta)\|_{2}^{2}\]
  • \[h(\mathbf{r} ; \theta)=f(\mathbf{W} \cdot g(\mathbf{V} \mathbf{r}+\mu)+\mathbf{b})\]

S는 점수 벡터 r의 집합, \(f,g\) 는 각각 활성함수(Sigmoid, Identity Function)이다.

결과

  • 무비렌즈와 넷플릭스 데이터셋에서 RBM, MF등의 모델보다 좋은 성능 Hidden unit의 개수가 많아질 수록 RMSE가 감소함을 보인다.
  • 이 논문 이후 DAE(Collaborative Denosing Auto-Encoders for Top-N Recommender System), VAE(Collaborative Variational Autoencoder for Recommender System)등 AE를 활용한 연구들이 나오고 있다.

CDAE (Collaborative Denoising Auto-Encoders for Top-N Recommender Systems)

DAE를 CF에 적용하여 top-N추천에 활용한 논문

  • AutoRec이 Rating prediction을 위한 모델이라면 CDAE는 Ranking을 통해 유저에게 Top-N 추천을 제공하는 모델이다.
  • 문제 단순화를 위해, 유저-아이템 상호 작용 정보를 이진(0 또는 1) 정보로 바꿔서 학습 데이터로 사용

문제 정의 및 모델

cdae

AutoRec과 다르게 DAE를 사용해 noise 추가

  • \[P\left(\tilde{y}_{u}=\delta y_{u}\right)=1-q, P\left(\tilde{y}_{u}=0\right)=q\]
    • y tilde값은 q의 확률에 의해 0으로 drop-out된 벡터이다.
  • 개별 유저에 대해서 \(V_u\)를 학습(Collaborative)
    • 유저에 따른 특징을 해당 파라미터가 학습하고 Top N 추천에 사용
  • 인코더로 latent representation \(z_u\)를 생성하고 디코더로 regenerate한다.
    • \[z_{u}=h\left(W^{\top} \tilde{y}_{u}+V_{u}+b\right)\]
    • \[\hat{y}_{u i}=f\left(W_{i}^{\prime \top} z_{u}+b_{i}^{\prime}\right)\]

성능

보통 N에 관계없이 다른 top-N 추천 모델에 비해 더 높은 MAP과 recall을 보인다.

Comments