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.