[boostcamp-ai-tech][RecSys] RecSys with DL(1) Neural Collaborative Filtering, YouTube Rec, RecSys with AutoEncoder, Multi-VAE

whatSup CheatSheet·2022년 3월 18일
1

RecSys

목록 보기
6/13
post-thumbnail

Recommender System with DL

추천시스템과 딥러닝

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

    • Deep Neural Network(DNN)은 data의 non-linearity를 효과적으로 나타낼 수 있음.
      즉, 복잡한 user-item interaction pattern을 효과적으로 모델링할 수 있음
  2. Representation Learning

    • DNN은 raw data로부터 feature representation을 학습해 사람이 직접 feature design 하지 않아도 됨.
    • 텍스트, 이미지, 오디오 등 다양한 종류의 정보를 추천시스템에 활용할 수 있음
  3. Sequence Modeling

    • DNN은 자연어 처리, 음성 신호 처리 등 sequential modeling task에서 성공적으로 적용됨(RNN, Transformer, ..)
  4. Flexibility

    • Tensorflow, PyTorch 등 다양한 DL 프레임워크를 활용하여 효율적인 서빙을 할 수 있음

Recommender System with MLP

  • MLP(다층 퍼셉트론): 퍼셉트론으로 이루어진 Layer 여러 개를 순차적으로 이어 놓은 feed-forward neural network
    • 선형 분류만으로 풀기 어려웠던 문제(xor, ..)를 비선형적으로 풀 수 있음

Neural Collaborative Filtering

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

개요 : Matrix Factorization의 한계

  • user와 item embedding의 선형 조합(linear combination)을 구함
    rui=puTqir_{ui} = p_u^T q_i
    -> user와 item 사이에 복잡한 관계를 표현하는 것에 한계를 가짐
  • ex) user similarity가 s23>s12>s13s_{23} > s_{12} > s_{13}일 때,
    • p1,p2,p3p_1, p_2, p_3를 latent space에 나타내면 (b)와 같음.
    • 이때, s41>s43>s42s_{41} > s_{43} > s_{42}인 새로운 user4를 space에 표현하려 한다면, (MF에서 하는 dot product는 Linear하기 때문에) 모순이 발생함.

      (자카드 유사도 기준)

NCF’s General Framework

  • Neural Collaborative Filtering은 Input, Embedding, Neural CF, Ouput이라는 4가지 Layer로 구성되어 있음.
  • 이때 Neural CF Layer를 어떻게 구성하느냐에 따라, GMF / MLP / NueMF로 나눠짐

Neural CF Layer : Input & Embedding Layer

  • Input Layer : user와 item을 나타내는 두 벡터가 input으로 들어감. 이때 두 벡터는 one-hot encoding으로 표현된 형태임.

  • Embedding Layer : Sparse한 input vector를 Dense하게 바꿔주는 역할(k차원의 latent space에 매핑)

Neural CF Layer : Neural CF Layer & Output Layer

  • Neural CF Layer & Output Layer : 두 Embedding된 벡터를 concat(혹은 내적)하여 원하는 Neural CF Layer에서 이들의 상호작용을 모델링하는 단계.
  • Neural CF Layer의 형태는 다음과 같이 세 가지가 있음

1. GMF(Generalized Matrix Factorization)

  • 두 임베딩 벡터를 내적하고, 이를 1차원으로 바꿔주는 하나의 선형 레이어를 지나서 출력층 활성화 함수(sigmoid)를 거치는 구조
  • 이름 그대로, Matrix Factorization의 일반화된 버전임
  • 두 임베딩 벡터의 선형적인 관계를 모델링함

2. MLP

  • 두 임베딩을 concat하고, 여러 층의 MLP Layer를 태우는 구조
  • 활성화 함수로 ReLU를 사용, 출력층에서는 Sigmoid를 사용
  • 두 임베딩 벡터의 비선형적인 관계를 모델링함

3. NueMF

  • GMF와 MLP를 앙상블(Concat)하여 출력층 활성화 함수(Sigmoid)를 거치는 구조
  • 각 GMF와 MLP 모델의 input 임베딩은 서로 분리됨(모델의 확장성을 높임)
  • 두 모델의 concat 비율도 정할 수 있음(하이퍼파라미터 α\alpha)

결과

  • MovieLens, Pinterest 데이터셋에 대하여 NCF의 추천 성능이 기존 MF(BPR)나 MLP 모델보다 높음

Deep Neural Networks for YouTube Recommendations

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

유튜브 추천 문제의 특징

  • Scale
    : 엄청 많은 유저와 아이템 vs 제한된 컴퓨팅 파워
    -> 효율적인 서빙과 이에 특화된 추천 알고리즘이 필요
  • Freshness
    : 잘 학습된 컨텐츠와 새로 업로드 된 컨텐츠를 실시간으로 적절히 조합해야 함
    • exploration / exploitation
  • Noise
    : 높은 Sparsity, 다양한 외부 요인 등으로 유저의 행동을 예측하기 어려움
    -> Implicit Feedback, 낮은 품질의 메타데이터 등을 잘 활용해야 함

전체 구조: 2단계 추천 시스템


1. Candidate Generation

  • 주어진 사용자에 대해 Top N 추천 아이템 생성
    • millions -> hundreds
  • High Recall이 목표.

2. Ranking

  • 스코어를 구하고 최종 추천 리스트를 제공
    • hundreds -> dozens
  • User Profile을 더 디테일하게 추가하고, Video 자체의 메타데이터 정보를 임베딩하여 모델의 피처로 사용

Candidate Generation

Candidate Generation 문제 정의

: extreme multiclass classification

  • 특정 시간(t)에 유저 U가 C라는 context를 가지고 있을 때, 비디오(i) 각각을 볼 확률을 계산
  • 비디오가 수백만 개가 되기 때문에 Extreme
  • 결국 마지막에 Softmax 함수를 사용하는 분류 문제임

Candidate Generation 모델

  • 다양한 피쳐 벡터들을 한 번에 concatenate

    • Watch Vector & Search Vector

      • 과거 시청 이력과 검색 이력을 각각 임베딩
      • 마지막 검색어가 너무 큰 힘을 갖지 않도록 평균 냄
    • Demographic & Geographic features

      • 성별 등의 인구통계학적 정보와 지리적 정보 등을 피쳐로 포함
        (cold start 문제를 해결)
    • Example Age' features

      • (논문에서 말하는 제일 중요한 피처)
      • 시청 로그가 학습 시점으로부터 경과한 정도를 피쳐로 포함시킴
        • viral한 영상이나 과거 영상이 너무 많이 추천되어 새로운 영상이 추천될 확률을 낮추는 것을 방지함.
          -> Bootstraping 현상 방지 및 Freshness 제고
  • n개의 dense layer를 거쳐 User Vector 생성

  • 최종 output layer는 비디오를 분류하는 softmax function 적용

  • Serving
    : 유저를 input으로 하여 상위 N개의 비디오를 추출(내적이 큰 비디오 서칭!)

    • 학습 후, 유저 벡터(uu)와 모든 비디오 벡터(vj)v_j)의 내적을 계산
    • Annoy, Faiss 같은 ANN 라이브러리를 사용하여 빠르게 서빙

Ranking

Ranking 문제 정의

: CG 단계에서 생성한 비디오 후보들을 input으로 하여 최종 추천될 비디오들의 순위를 매기는 문제

  • Logistic 회귀를 사용하는 기본적인 방법
    • 딥러닝 모델로 유저, 비디오 feature들을 풍부하게 사용하여 정확한 랭킹 스코어를 구함
  • loss function에 단순한 클릭 여부가 아닌 시청시간을 가중치로 한 값을 반영

Ranking 모델

  • user actions feature 사용 (더 rich한 피쳐를 사용)
    • 유저가 특정 채널에서 얼마나 많은 영상을 봤는가
    • 유저가 특정 주제의 동영상을 본 지 얼마나 지났는가
    • 영상의 과거 시청 여부
    • ...
    -> DL 구조보다는 도메일 전문가의 역량이 좌우하는 파트
    (많은 Feature Selection / Engineering이 필요)
  • 네트워크 통과한 뒤, 비디오가 실제로 시청될 확률로 매핑
    (단순 CTR 예측이 아닌 Expected Watch Time을 예측)
  • Loss Function
    • 단순 binary가 아닌 weighted cross-entropy loss 사용
      • 비디오 시청 시간으로 가중치를 줌
      • 낚시성/광고성 컨텐츠를 업로드하는 어뷰징을 감소시킴

Recommender System with AE

Autoencoder (AE)

: 입력 데이터를 출력으로 복원(reconstruct)하는 비지도 학습 모델 (참고자료)

  • hidden layer를 input data의 feature representation으로 활용
  • 이상치 탐지(Anomaly Detection), 표현 학습(Representation Learning), 이미지 노이즈 제거(Image Denoisin Task) 등에 활용됨.
  • AE의 Loss는 Original input과 Reconstructed input의 차이를 최소화하는 방향으로 구성됨.

Denosing Autoencoder (DAE)

: 입력 데이터에 random noise나 dropout을 추가하여 학습

  • noisy input을 더 잘 복원할 수 있는 robust한 모델이 학습되어 전체적인 일반화 성능이 향상됨.

U/I AutoRec: Autoencoders Meet Collaborative Filtering

  • AE를 CF에 적용하여 기본 CF 모델에 비해 Representation과 Complexity 측면에서 뛰어남을 보인 논문
  • 논문

아이디어

: Rating Vector를 입력과 출력으로 하여 Encoder & Decoder Reconstruction 과정을 수행

  • 유저 또는 아이템 벡터를 저차원의 latent feature로 나타내어이를 사용해 평점 예측
  • Autoencoder의 representation learning을 유저와 아이템에 적용한 것.
  • MF와의 비교
    • MF는 linear, low-order interaction을 통한 representation이 학습되지만(-> 표현력에 한계가 있음), AutoRec은 non-linear하므로 더 복잡한 interaction 표현이 가능.

모델

  • 아이템과 유저 중, 한 번에 하나에 대한 임베딩만을 진행
    (아래는 아이템 임베딩 기준)
    • r(i)^*r^{(i)} : 아이템 ii의 Rating Vector
    • RuiR_{ui} : 유저 uu의 아이템 ii에 대한 Rating
    • VV : 인코더 가중치 행렬
    • WW : 디코더 가중치 행렬

학습

  • 기존의 Rating과 Reconstructed Rating의 RMSE를 최소화하는 방향으로 학습
  • 관측된 데이터에 대해서만 역전파 및 파라미터 업데이트 진행

결과

  • 무비렌즈와 넷플릭스 데이터셋에서 RBM, MF 등의 모델보다 좋은 성능
  • hidden unit의 개수가 많아질수록 RMSE가 감소함을 보임
  • 본 논문 이후 고급 AE 기법을 CF에 활용한 후속 연구들이 나오기 시작
    • DAE: Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
    • VAE: Collaborative Variational Autoencoder for Recommender Systems
  • I-AutoRec이 U-AutoRec보다 더 잘 동작함
    • Rating per item이 Rating per user보다 압도적으로 많기 때문이라고 저자는 설명

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

  • Denoising Autoencoder를 CF에 적용하여 TOP-N 추천에 활용한 논문
  • 논문

모델 특징

  • Auto Rec과의 비교
    • AutoRec이 Rating Prediction을 위한 모델이었다면(RMSE로 평가),
    • CDAE는 Ranking을 통해 유저에게 TOP-N 추천을 제공하는 모델임(NDCG 등으로 평가)
  • 문제 단순화를 위해, 유저-아이템 상호작용 정보를 binary 정보로 바꿔서 학습 데이터로 사용
    • 개별 유저에 대해서 아이템의 rating이 아닌 선호도(preference)를 학습하게 됨

문제 정의 및 모델

  • AutoRec과 다르게 DAE를 사용하여 noise 추가
  • 개별 유저에 대해서 VuV_u를 학습 (Collaborative)
    • 유저에 따른 특징을 해당 파라미터가 학습하고, TOP-N 추천에 사용
  • 인코더: zuz_u, 디코더: y^ui\hat{y}_{ui}

결과

: 대체적으로 N에 관계 없이 다른 TOP-N 추천 모델에 비해 더 높은 MAP와 recall을 보임

Multi-VAE(Variation Auto Encoder)

  • Explicit density(학습 데이터의 분포를 기반으로 생성) 기반의 Generative 모델인 VAE를 추천시스템에 활용한 논문
  • VAE 참고 영상

논문 요약

  • VAE를 통해 기존 선형 CF 모델들이 가지는 표현력의 한계를 개선합니다.
  • 추천시스템에서 잘 사용되지 않던 multinomial likelihood기반의 generative model과 Bayesian 추론을 사용합니다.
  • 학습과정에서 anneling기법을 활용하여 파라미터를 효과적으로 튜닝합니다.

what is VAE?

: Variation Auto-Encoder

  • Approximate Inference를 위한 방법론 중 하나
  • Deep Generative Model의 일종
  • ELBO term은 autoencoder 관점에서 해석 가능
    • 직접 KL-Divergence를 줄이지 않고, ELBO를 maximize하여 간접적으로 줄임으로써, variational inference를 구함

Multi-VAE's key point

: VAE를 interaction data의 reconstruction에 활용

  • Uses a multinomial likelihood(다항분포) for the data distribution

    • 유저*아이템이 multinomial distribution이라고 가정(multi-VAE)
    • Data를 Gaussian이 아닌 Multinomial distribution으로 모델링함으로써(sum to 1) 아이템들이 한정된 budget(사용자 예산, 시간 등)을 놓고 경쟁하는 현상을 표현할 수 있음.
  • Partially regularizes VAE via KL annealing

    • AE를 학습함에 있어 KL annealing 방법을 사용

    • KL annealing: 학습과정에서 β\beta를 0에서부터 시작하여 특정값까지 선형적으로 증가시켜 나감. 학습 초기에 reconstruction term을 강조함으로써 효율적인 학습을 도모할 수 있음

      학습 초기에는 위 식의 β\beta term이 0이 됨 -> 앞에 있는 reconstruction term을 강조.

profile
AI Engineer : Lv 0

0개의 댓글