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하여 선형구조를 가지게 됨
Model Overview
MLP는 concatenate 되어 비선형의 활성화함수를 거치기 때문에 비선형구조를 가지게 됨
GMF + MLP
Model Overview
Recommendation as Classification
1. Embedding
2. Combining
3. Additional Features
4. Fully Connected ReLU Stack
5. Softmax Prediction
6. Serving
Embedding
Feature Engineering
Embedding Categorical Features
Normalizing Continuous Features
Modeling Expected Watch Time
1. Reset Gate: 과거의 정보 적당히 리셋
2. Update Gate: LSTM의 forget gate + input gate, 과거와 현재 정보의 최신화 비율 결정
3. Candidate: 현 시점의 정보 후보군 계산, 과거 은닉층의 정보를 그대로 이용하지 않고 리셋 게이트의 결과를 곱해서 이용
4. Hidden State 계산: update gate결과와 candidate 결과를 결합하여 현시점의 은닉층 계산
1. Input Layer
input으로 Actual State of Session 넣음
2. Embedding Layer
RNN 특성상 long term에 약하기 때문에 안정성을 위해 정규화
3. GRU Layer
아이템에 대한 선호도 예측하는 학습
4. Output Layer
해당 세션의 다음 이벤트 아이템 출력
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://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.
[15기 김현지]
유저-아이템 상호작용 데이터의 복잡한 구조를 알아내기 어렵다는 것과 새로운 유저에 대한 정보를 표현하기 어렵다는 기존 모델들의 문제점을 해결할 수 있는 딥러닝 기반 추천시스템들을 살펴보았다. 딥러닝 기반의 추천시스템은 비선형 변환이 가능하여 유저-아이템간의 복잡한 상호작용을 파악할 수 있고, 다차원적인 정보처리가 가능하며 유연하다는 장점이 있다. 더불어 RNN와 CNN을 통해 시퀀스 모델링이 가능하다.
MLP-based Factorization
Neural Collaborative Filtering은 유저-아이템 간의 상호작용을 표현하는데 비선형성을 도입하여 보다 복잡한 관계를 표현할 수 있었다. 유튜브 추천에 있어 Deep Neural Networks를 활용하는 모델은 유저 정보를 토대로 유사도가 높은 후보를 생성하고, 추가 feature를 더하여 성능 개선 후 리스트를 생성하는 단계를 거친다. 특정시간에 특정 영상을 볼 확률을 구하여 후보를 생성했으며, feature를 추가하는 과정에서 엔지니어가 직접 feature를 가공하는 과정을 포함했다는 것과 감상 시간별로 가중치를 두어 추천한 영상의 감상 시간을 예측했다는 것이 인상적이다.
RNN-based Model
순차적 데이터 처리에 유용한 RNN을 사용하여 side information을 처리한다. Session-based Recommendation with Recurrent Neural Network에서는 GRU 레이어를 사용하여 다음에 볼 영상을 예측하였고, session-parallel mini-batch와 ranking loss function 등을 기존 session-based의 어려움을 해결하기 위한 여러 방법들이 시도되었다. Neural Attentive Session-based Recommendation 모델은 현재 상태의 유저의 순차적 행동과 주요 목적을 함께 고려하기 위해 Global encoder와 Local encoder의 두 개의 인코더로 구성되었고, 디코더가 입력 시퀀스의 다른 부분들을 다양하게 고르고 선형결합할 수 있도록 Attention Mechanism을 적용하였다.
AE-based Model
AutoEncoder의 차원 축소-복구 과정을 추천시스템에 활용하였다. AutoEncoder의 프로세스를 Latent Model과 유사하게 해석하여 추천시스템에 활용하고자 한 아이디어가 인상적이었다. AutoEncoder의 발전된 형태인 VAE와 DAE 등도 추천시스템으로 활용이 가능하며 기본 AE보다 더 좋은 성능을 보인다.
[Deep Learning Based Recommender Systems(딥러닝 기반 추천 시스템)]
15기 류채은
Generalized Matrix Factorization: element-wise product하여 선형구조를 가짐
Multilayer Perceptron: 비선형 구조
Neuron Collaborative Filtering(GMF + MLP): 선형 공간에서 갖는 한계를 Deep Neural Network를 통해 해결했다
Deep Neural Networks for YouTube Recommendation: 요청이 왔을 때 상위 n개의 영상을 추천햊해주며 nearest neighbor index를 뽑아 가장 가까운 아이템을 찾는다.
Ranking Network: hand-written feature이 포함되며 감상 시간별로 가중치를 두어야 한다.
Rnn-based Model
Session-based Recommendations with Recurrent Neural Networks
GRU layer에서 아이템에 대한 선호도 예측하는 학습이 일어나고 성능이 향상된다.
Neural Attentive Session-based Recommendation
시점 t의 attention signal에 따라 고차원의 hidden representation으로 인코딩된다
.
■추천 시스템 모델은 단 하나만 이용하는 것이 아니라 여러 모델로 구성하여 활용하는 것이 적합하다.
MLP-based Fatorization :
RNN-based Model :
AE-based Model :
딥러닝 기반 추천시스템 소개
Neural Collaborative Filtering
Deep Neural Networks for YouTube Recommendation
RNN-based Model
Auto Encoder based Model
추천시스템은 각각의 장단점이 존재한다.
[15기 장아연]
[1] Neural Collaborative Filtering
implicit feedback 바탕으로 user에게 item 추천하는 것이 목표. 기존의 모델은 Collaborative Filtering에 있어서 Matrix Factorization의 inner product를 사용하여 제한이 있음. 이를 Enbedding Layer를 이용해 해결함. GMF는 user와 item의 latent vector의 Element wise Product하고 Fully Connected Layer를 거쳐 선형구조를 가짐. MLP는 concatenate 후 non linear activation function의 Fully Connected Layer를 거쳐 비선형구조를 가짐. GMF + MLP를 통해 User-Item collaboration 표현함.
[2] Deep Neural Networks for YouTube Recommendation
주어진 user와 context를 통해 특정 시간에 해당 영상을 볼 확률을 구해 Classification으로 Recommend 하는 것이 목표. user 정보를 바탕으로 Enbedding하고 softmax를 통해 영상별로 가중치 제시함. Dot-product space 내에 가장 가까운 Neighbor Index를 골라 가장 가까운 아이템 보임.
[3] Session-based Recommendations with Recurrent Neural Networks
해당 세션 안의 이벤트, Actual Event의 아이템을 이용해 user의 다음 행동을 예측하는 것이 목표. RNN의 일종인 GRU를 사용해 추천시스템 구현. 과거/현재 정보의 최신화 비율과 현재의 정보 후보로 과거 정보 일부분을 결합해 현시점 계산.
[4] Neural Attentive Session-based Recommendation
유저의 시간에 따른 행동(local information) 뿐만 아니라 현재의 목적(global infomation)을 고려해 추천하는 것이 목표. NARM 모델의 Encoder의 Global/Local Encoder를 통해 global/local information을 구하고 Decoder부분의 Item-level Attention Mechanism를 통해 적절하게 선형 결합됨. 긴 세션에서 좋은 성능을 보임.
[5] AE-based Model
Input과 Output이 같은 Auto Encoder는 Encoder에서 차원을 축소해 Latent Space를 제시하고 Decoder에서 Input을 복원하며 Latent Model과 유사성을 보임. 또, non-linear activation function을 통해 user-item의 관계를 도출함. VAE, DAE, Latent Space,Matrix completion 등을 다양하게 활용가능함.
모델마다 각기 다른 장점과 단점이 존재하고 데이터의 특성과 목적에 따라서 그 성능/평가가 달라지기 때문에 여러 모델을 적재적소에 배치해 활용하는 능력이 요구됨.
NCF = GMF + NLP 로서 모델의 인풋은 유저와 아이템의 ID. one-hotencoding이다.
GMF: 유저와 아이템을 각각 임베딩해서 이를 element wise product한다.
NLP: 유저와 아이템을 각각 임베딩해서 이를 concat하고 몇개의 fc레이어를 거쳐 아웃풋을 낸다.
GMF + NLP를 concat하고 최종 예측 rating을 도출한다.
Deep Neural Networks for YouTube Recommendation
user, context가 주어지면 특정 시간에 이 영상을 볼 확률을 구함
1) candidate generation: 유사도가 높은 유저 (millions)
2) rankig: 추가 피쳐 더해서 우선 순위를 매긴 추천 영상 리스트 생성
Session-based Recommendations with Recurrent Neural Networks
input을 해당 세션의 actual stae, output을 해당 세션의 다음 이벤트 항목으로 하는 GRU모델을 사용하여 유저 행동 패턴을 예측했다.
Neural Attentive Session-based Recommendation
GRU를 사용해 예측할 때, 최근의 순차적 정보만 고려하면 유저의 주요 목적을 놓치게 되므로 유저의 순차적 행동 & 현재 세션에서의 주요 목적을 함께 고려한 모델이다.
NARM모델은 인코더와 디코더로 이루어지며, 인코더는 local encoder와 global encoder, Item-level Attention Mechanism로 이루어진다. 이를 통해 lacal information과 global information 고르게 고려한다. 이는 긴 세션에서 보다 높은 성능을 낼 수 있다.
AE-based Model
유저-아이템 행렬을 입력으로 받아 이를 인코딩하고 디코딩하는 대칭적인 레이어를 갖는 오토인코더 모델에 넣어 복원한다.
같은 메커니즘으로 Denoising auto encoder, VAE를 사용하여 구현 할 수 있으며, 성능이 더 우수하다.
이번 시간은 딥러닝 기반 추천 시스템을 톺아볼 수 있는 아주 유익한 시간이었다. 여러 모델이 있지만 사용하는 데이터의 특성에 맞는 모델을 선정해야 할 것이다. sparse matrix를 복원해야한다면 AE기반 알고리즘을 써보던가 순서를 고려해야한다면 NARM을 쓴다던가 하는 방식으로..!