[Survey & Code] Deep Learning based Recommender Systems (딥러닝 기반 추천시스템)

이성범·2022년 1월 17일
1

작성자: 박지은, 이성범

1. 등장 배경

기존 모델의 문제점

  • 추천시스템에서 기존에 많이 쓰이던 Matrix Factorization은 유저-아이템 상호작용을 내적의 형태로 표현
  • latent facotrs 간의 곱셈을 선형으로 결합하는 내적은 유저-아이템 상호작용 데이터의 복잡한 구조를 알아내기 어렵게 함
  • 새로운 유저가 나타나면 이를 저차원 공간에서 표현하기 어려움

딥러닝 기반 추천시스템

  • 비선형 변환 가능: 더 복잡한 유저-아이템 상호작용 파악 가능
  • 더 나은 representation learning: hand-craft feature design 줄이고 다차원적 정보 처리 가능
  • 시퀀스 모델링: RNN, CNN을 통하여 성능 향상
  • 유연성: 딥러닝의 학습 환경 활용 가능

2. MLP-based Factorization

1) Neural Collaborative Filtering

기존 Matrix Factorization의 문제점

  • 내적 등 선형 모델은 유저와 아이템 간의 복잡한 관계를 표현하는 데 한계가 있음
  • 유저 2와 3이 제일 비슷하고, 유저 1과 3이 제일 덜 비슷함
  • 새로운 유저 4를 기하학적으로 표현할 때, 유저 1과 제일 가깝게 하는 동시에 유저 2와 가장 멀게 하는 벡터를 찾을 수가 없음

Generalized Matrix Factorization (GMF)

Model Overview


1. Input Layer
input으로 유저와 아이템의 one-hot vector 넣음

2. Embedding Layer
input 단계의 sparse 벡터를 dense 벡터로 매핑


3. Element-wise Product
k차원의 feature에 대응하는 값끼리 가중합하여 원하는 특징에 따라 가중치를 조정 가능하게 일반화
만약 이 가중치가 동일한 값, 1이 되면 기존의 Matrix Factorization과 같은 모습이 됨

4. Passing Fully Connected Layer
가중치를 학습하여 유저-아이템의 행렬 값 예측

GMF는 element-wise product하여 선형구조를 가지게 됨

Multilayer Perceptron (MLP)

Model Overview

MLP는 concatenate 되어 비선형의 활성화함수를 거치기 때문에 비선형구조를 가지게 됨

Neural Collaborative Filtering

GMF + MLP

의의

  • 유저-아이템 상호작용을 표현하기 위해 Matrix Factorization의 선형성과 Multilayer Perceptron의 비선형성을 결합한 Neural Matrix Factorization
  • 선형 공간에 기반한 기존 모델들이 갖는 한계를 Deep Neural Network를 도입하여 해결

2) Deep Neural Networks for YouTube Recommendation

기존 YouTube 추천시스템의 문제점

  1. Scale: 엄청난 양의 데이터 & 제한된 컴퓨팅 파워
  2. Freshness: 새로운 컨텐츠의 빠른 적용
  3. Noise: 낮은 질의 메타 데이터, implicit feedback

Model Overview

① Candidate Generation

Model Overview

Recommendation as Classification

  • Extreme Multiclass Classification 문제로 정의
  • user, context가 주어지면 특정 시간에 이 영상을 볼 확률을 구함

    (v: context embedding, u: user embedding)
    => 유저 정보를 기반으로 한 user embedding을 하고, softmax에서 잘 분류되도록 학습

1. Embedding

  • Video Embedding & Search Token Embedding
  • 전체 모델의 Backpropagation을 통해 임베딩도 함께 학습

2. Combining

  • 고정된 크기의 input으로 바꿈
  • 여러 영상의 embedding vector의 average

3. Additional Features

  • 다른 features 옆에 concatenate

4. Fully Connected ReLU Stack

5. Softmax Prediction

  • 어떤 영상을 볼 것으로 예상되는지 영상별 가중치가 output으로 나옴
  • Negative Sampling

6. Serving

  • 요청이 왔을 때 상위 N개의 영상 추천
  • Dot-product space에서 Nearest Neighbor Index를 뽑아서 가장 가까운 아이템 찾음

More Features

Example Age

  • 히스토리 데이터를 기반으로 학습하면 오래된 아이템이 더 많이 추천됨
  • freshness의 중요성

그 외 features

  • 모든 영상 시청 이력을 확인해야 편향이 생기지 않음
  • 학습에 사용할 유저별 영상의 수 고정
  • 새로운 검색 쿼리에 즉시 추천 엔진을 반영하지 않음
  • 비대칭적 감상 패턴을 적용하여 학습

② Ranking Network


Embedding

Feature Engineering

  • feature 분류
    • impression vs. query
    • univalent vs. multivalent
  • feature가 매우 많아서 미리 가공
  • 딥러닝이지만 엔지니어가 직접 가공

Embedding Categorical Features

  • unique ID space ("vocabulary") 따로 임베딩
  • 이 중에 impression 기준으로 Top N 영상 및 검색 이력 임베딩
  • vocabulary에 없으면 zero embedding

Normalizing Continuous Features

  • 값 x를 [0, 1)에 들어오도록 스케일링
  • 𝑥 ̃, 𝑥 ̃^2, √(𝑥 ̃ )도 네트워크에 넣음

Modeling Expected Watch Time

  • 추천한 영상의 감상 시간 예측
  • 감상 시간은 안 봤으면 0, 봤으면 본 시간을 값으로 넣음
  • Weighted Logistic Regression: 감상한 영상을 감상 시간으로 가중치 둠

의의

  • 기존의 방법인 Matrix Factorization보다 성능 향상
  • 딥러닝으로만 feature를 학습하기는 어렵기 때문에 hand-written feature 포함
  • freshness, 사용자의 과거 행동 패턴을 잘 설명하는 feature 중요
  • 감상 시간별로 가중치를 두어야 함

3. RNN-based Model

  • 순차적 데이터 처리에 유용한 RNN
  • 상호작용의 일시적 역학, 유저 행동의 순차적 패턴, 순차적 신호를 가진 side information 처리

1) Session-based Recommendations with Recurrent Neural Networks

기존 Session-based의 어려움

  • 유저가 로그인하지 않은 환경에서는 latent vector 사용이 어려움
  • session이나 cookie mechanism이 있지만 데이터가 매우 적음
    => 유저의 순서 정보를 이용하여 추천시스템에 적용할 수 있는 방법을 RNN을 통해 제안
  • 어떤 아이템을 경험했는가? + 가장 최근에 어떤 아이템을 클릭했는가?

Gated Recurrent Units (GRU)


1. Reset Gate: 과거의 정보 적당히 리셋

2. Update Gate: LSTM의 forget gate + input gate, 과거와 현재 정보의 최신화 비율 결정

3. Candidate: 현 시점의 정보 후보군 계산, 과거 은닉층의 정보를 그대로 이용하지 않고 리셋 게이트의 결과를 곱해서 이용

4. Hidden State 계산: update gate결과와 candidate 결과를 결합하여 현시점의 은닉층 계산

Model Overview

1. Input Layer
input으로 Actual State of Session 넣음

  • Actual Event의 아이템: 1-of-N encoding vector
  • 세션 안의 이벤트: weighted sum vector (더 일찍 일어난 사건은 discounted)

2. Embedding Layer
RNN 특성상 long term에 약하기 때문에 안정성을 위해 정규화

3. GRU Layer
아이템에 대한 선호도 예측하는 학습

4. Output Layer
해당 세션의 다음 이벤트 아이템 출력

Session-parallel Mini-batch

  • 세션 병렬 방식의 Mini-batch로 input 넣음
  • 다음 세션의 정보가 들어올 때 hidden state 초기화

Sampling the Output

  • output을 샘플링해서 하위 집합만 연산
  • Negative Sampling도 함께 시행
  • 둘 다 popularity-based sampling 진행

Pairwise Ranking

  • positive & negative 쌍으로 비교
  • loss를 통해 positive item의 rank가 negative item의 rank보다 낮게 학습
  • BPR & TOP1 사용

의의

  • GRU라는 RNN을 추천시스템에 적용
  • session-parallel mini-batch와 ranking loss function을 이용한 session-based 추천시스템

2) Neural Attentive Session-based Recommendation

기존 RNN-based Model의 문제점

  • 최근의 순차적 정보만 고려하면 유저의 주요 목적을 놓치게 됨
  • 유저의 순차적 행동 & 현재 세션에서의 주요 목적을 함께 고려

Model Overview

  • 시점 t의 attention signal에 따라 고차원의 hidden representation으로 인코딩

Global Encoder

  • RNN을 통과하고 마지막으로 나오는 hidden state가 global information

Local Encoder

Item-level Attention Mechanism

  • 디코더가 입력 시퀀스의 다른 부분들을 다양하게 고르고 선형결합할 수 있도록 함

NARM

의의

  • 현재 상태의 유저의 순차적 행동과 주요 목적을 함께 고려 (local information + global information)
  • bi-linear scheme를 통해 연산량을 줄이고 성능 향상
  • attention mechanism 적용
  • 긴 세션에서 더 좋은 성능

3. AE-based Model


AutoEnocder기반의 추천시스템 모델을 설명하기에 앞서 간단하게 AutoEnocder의 개념에 대해 설명하고자 한다. AutoEnocder란 그림과 같이 Input과 output이 똑같은 형태의 모델을 말한다. AutoEnocder에서 Econder는 코드를 압축하는 역할을 하고 Decoder는 압축된 코드를 해석하는 역할을 한다.

AutoEnocder는 4가지 키워드로 설명할 수 있다. 바로 Unsupervised Learning, Manifold Learning, Generative Model Learning, Maximum Likelihood Density Estimation 이다.
Unsupervised Learning인 이유는 AutoEnocder가 input을 받아 똑 같은 형태의 input을 복원하는 식으로 학습이 진행되는데 여기서 오직 데이터를 input Data만을 사용하기 때문이다.
Manifold Learning인 이유는 Encoder가 Latent Space로 차원을 축소하는 역할을 수행하기 때문이다.
Generative Model Learning인 이유는 Decoder가 input Data로 복원하는 역할을 수행하며 이것이 마치 데이터를 생성하는 것과 유사하기 때문이다.
Maximum Likelihood Density Estimation인 이유는 DNN의 학습 방법이 MLE와 동일한데 AutoEnocder는 이러한 DNN의 일종이기 때문이다.

Encoder가 차원을 축소하는 역할을 하기 때문에 이 축소된 차원에서 Latent Space를 찾을 수 있다. 그리고 Decoder가 input Data로 복원을 해주는데 이러한 형식이 마치 추천시스템의 Latent Model 과 유사하다. 이러한 특징 때문에 AutoEncoder를 추천시스템이 활용할 수 있다.

AutoEnocder의 차원 축소와 복구 과정을 이용하여 컨텐츠 추천이 가능하다. 예를 들어서 input으로 사용자의 컨텐츠 Matrix가 들어왔다고 가정한다면 AutoEnocder의 Encoder와 Decoder를 거쳐서 복원된 사용자의 컨텐츠 Metrix를 활용하여 컨텐츠를 추천해줄 수 있다.
AutoEnocder의 경우 비선형 활성화 함수를 활용하여 사용자 간의 관계를 모델링하기 때문에 성능이 좋다. 그리고 단순한 Matrix Factorization에 비하여 Sparse matrix(0이 많이 포함된)에서 좋은 성능을 보인다. 또한 평점 추천, 순위 추천, 클릭 여부, 시청 여부 등 모든 곳에 활용이 가능하다.

그렇다면 AutoEnocder의 발전된 형태인 VAE, DAE 등의 모델들도 추천시스템에 활용할 수 있을 까?

물론 AutoEnocder의 발전된 형태인 VAE, DAE 등의 모델들을 사용할 수 있으며 그 성능 또한 기본 AutoEnocder보다 우수하다고 한다.

Denoising AutoEncoder는 noise가 추가된 input data를 noise가 없는 input data로 복원시키는 방식의 모델이다. Denoising AutoEncoder 또한 복원된 matrix를 활용하여 추천시스템으로 사용 가능하다. 일부 데이터에 noise가 들어가기 때문에 조금 더 강건한 형태의 모델을 얻을 수 있다. 그리고 실제로 기본 AE보다 더 우수한 성능을 보인다고 한다.

Variational AutoEncoder는 축소된 차원으로 Z를 샘플링하여 Z를 정규 분포에 가깝게 만드는 방식의 모델이다. Variational AutoEncoder 또한 복원된 matrix를 활용하여 추천시스템으로 사용 가능하다. Latent Space가 정규 분포에 가깝기 때문에 다루기 쉬워지고 컨트롤할 수 있으며, Sparse한 부분이 줄어들어 조금 더 유용한 Space를 얻을 수 있다. 그리고 실제로 기본 AE보다 더 우수한 성능을 보인다고 한다.

AutoEncoder는 축소된 차원인 Latent Space를 활용하여 추천이 가능하다. 전처리 된 컨테츠 matrix를 축소하여 축소된 차원에서 Cosine similarity로 거리를 측정하여 컨텐츠 간의 유사도를 구해서 이 유사도를 기준으로 추천을 할 수 있다.

AutoEncoder는 Matrix completion을 활용하여 추천이 가능하다. 사용자의 컨텐츠 시청 정보를 복원 시켜서 복원된 Matrix를 바탕으로 사용자 마다 컨텐츠 시청 확률을 출력하여 높은 순서대로 컨텐츠 추천이 가능하다.

이 밖에도 사용자의 평점, 영화의 다양한 feature 등 다양한 방식으로 활용을 할 수 있다.

추천 시스템 모델들은 각 모델마다 장단점이 존재하기 때문에 1개만 활용해서는 안된다. 예를 들어서 cold start 문제가 발생한다면 컨텐츠 기반의 모델이 더 우수할 것이고 어떠한 상황에서는 협업 필터링 기반의 모델이 더 우수할 수도 있다. 또한 여러 모델을 앙상블 하여서 추천 시스템 모델을 만들 수도 있다, 이렇듯 추천 시스템 모델들은 주어진 상황에 맞추어 여러 모델을 구성하여 활용해야 할 것이다.

알고리즘 및 모델 구현코드

https://github.com/SeongBeomLEE/Tobigs_Recommendation_System_Seminar/blob/main/Week2_Recommendation_Seminar_Code.ipynb

참고자료

https://developers.google.com/machine-learning/recommendation?hl=ko
https://tkdguq05.github.io/2021/03/07/apriori-FP/
https://dnddnjs.github.io/recomm/2019/08/15/recommendation_system_basics/
https://leehyejin91.github.io/post-ncf/
https://www.youtube.com/watch?v=1fhNX_JFaow
https://www.youtube.com/watch?v=h6vePourB7E&list=LL&index=1
https://yjjo.tistory.com/18
Zhang, S., Yao, L., Sun, A., & Tay, Y. (2017). Deep Learning based Recommender System: A Survey and New Perspectives. ACM.
He, X., Liao, L., Zhang, H., Nie, L., Hu, X., & Chua, T. (2017). Neural Collaborative Filtering. WWW.
Cheng, H., Koc, L., Harmsen, J., Shaked, T., Chandra, T., Aradhye, H., … Shah, H. (2016). Wide & Deep Learning for Recommender Systems. Google Inc.
Covington, P., Adams, J., & Sargin, E. (2016). Deep Neural Networks for YouTube Recommendations. RecSys.
Hidasi, B., Karatzoglou, A., Baltrunas, L., Tikk, D. (2016). Session-based Recommendations with Recurrent Neural Networks. ICLR.
Li, J., Ren, P., Chen, Z., Ren, Z., Lain, T., Ma, J. (2017). Neural Attentive Session-based Recommendation. ACM.

profile
Machine Learning Engineer at Konan Technology

0개의 댓글