📚 STUDY/AI

[추천시스템] 7. Deep Learning for Recommender Systems

삶감 2023. 4. 24. 00:40

추천시스템을 위해 DNNs을 활용하는 방법

Contextual Information

유저와 아이템의 Contextual Information을 통합하기 위해, 부가적인 정보를 어떻게 활용해서 의미있는 feature를 잡아내고, 그 features들을 추천시스템에 통합할 수 있을지 고민해야한다.

 

User-Item Score Modeling

Top-k recommendation을 위한 이전의 방식 (BPR, CML)

각 유저 u에 대한 각 아이템 i의 점수를 모델링을 할 때, User Encoder, Item Encoder를 이용해 유저와 아이템 임베딩 메트릭스 U와 V를 생성한다.

이렇게 얻은 두 메트릭스의 벡터 유사도(inner product 또는 유클리디안 거리...)를 통해 User-Item Score를 산출한다.

 

하지만, MF처럼 latent features의 곱들을 선형적으로 간단히 합치는 inner product는 user interaction data의 복잡한 구조를 capture하기에 충분하지 않을 수 있다.

Rating prediction에서, 유저와 아이템 bias를 interaction func.에 통합하여 MF 모델의 성능을 향상 시킬 수 있는 사실은 잘 알려져 있다.

rating prediction for MF model

 

이 섹션에서 소개하는 모델들은 DNN을 사용하여 MF의 한계를 극복하고 bias를 사용하는 모델들이다.

 

 


NCF (Neural Collaborative Filtering)

He et al., Neural Collaborative Filtering, WWW 2017

 

Score Modeling : MLP(Multi-Layer Perceptron)

MLP-다층 퍼셉트론 : 퍼셉트론을 여러 층 쌓은 순방향의 인공신경망 [1]. 선형 분류만으로 풀기 어려웠던 문제를 비선형적으로 풀 수 있다 [3].


 

MF에서는 유저와 아이템의 임베딩의 선형조합(inner product, 유클리디안 거리...)를 통해 score prediction을 했기 때문에, 유저와 아이템 사이의 복잡한 관계를 표현하는 것에 한계를 가졌다.

 

이런 한계를 극복하기 위해, NCF는 MLP를 도입하여 비선형적인 관계를 표현할 수 있도록 했다.

NCF의 프레임워크

\(y_{ui}\) : 유저 u와 아이템 i의 상호작용

 

1. Latent Vector (임베딩) :Sparse한 원-핫 벡터(유저와 아이템의 feature 벡터)를 fully-connected layer에 통과시켜 얻은 밀집 벡터

2. 임베딩들을 멀티레이어 신경망(Neural CF Layers)에 넣는다. 이를 통해 latent vector를 예측 스코어 \(\hat{y}_{ui}\) 로 매핑(Output Layer)할 수 있다.

3.  학습은 \(\hat{y}_{ui}\)와  \(y_{ui}\) 사이의 pointwise loss를 최소화 하는 과정이다.


NeuMF(Neural Matrix Factorization)

He et al., Neural Collaborative Filtering, WWW 2017

 

Score Modeling : MLP & GMF (Generalized Matrix Factorization)

GMF : 유저 벡터와 아이템 벡터 간의 interaction을 일반화 하여 모델의 성능을 향상시키기 위한 모델. 내적을 일반화 하고, 활성함수를 추가함 [2]

$$ y_{ui} = a_{out}(h^T(p_u \odot p_i ))$$


 

NCF의 발전된 버전으로, GMF와 MLP를 앙상블하여 사용하는 것이다.

GMF Layer와 MLP의 output을 concat 한 후, NeuMF Layer을 통과하여 score를 예측한다.

이때, GMF와 MLP는 서로 다른 임베딩 층을 사용한다.

 

NCF나 NeuMF의 Learning objective는 binary cross entropy로 정의된다.

각 matrix entry의 likelihood는 베르누이 분포에 의해 모델링된다.

상호작용이 있는 것은 positive, 없는 것은 negative로 취급하여 계산한다.

NCF나 NeuMF의 Learning objective


CDAE(Collaborative Denoising Auto-Encoders)

Wi et al., Collaborative Denoising Auto-Encoders for Top-N Recommender Systems, WSDM 2016

 

Denoising autoencoder 를 사용한다.

Autoencoder를 사용한다는 것은 비지도 학습을 위함이다.

Denoising autoencoder를 사용하면 input값을 변조하여 은닉층에서 autoencoder보다 robust한 feature를 찾을 수 있다. 

변조한 input값을 corrupted input이라고 하는데 가우시안 노이즈를 주거나 드롭아웃을 통해 생성할 수 있다. 

 

CDAE의 파라미터는 average reconstruction error를 최소화하여 학습한다.

R은 모델의 복잡도를 조절하기 위한 정규화 기호이다. 논문에서는 L2 Regularization을 사용했다.

손실함수 \(l(\cdot,\cdot)\)는 다양한 pointwise objective 함수들을 사용할 수 있다. (square loss, log loss, hinge loss, cross-entropy loss, ...)

 

CDAE의 손실함수 : 

CDAE의 손실함수
Basic Objective for MC


MultVAE

Liang et al., Variational Autoencoders for Collaborative Filtering, WWW 2018

 

Variational autoencoder 를 사용한다.

🔗Variational autoencoder [4]

 

각 유저 u에 대해, 모델은 K-차원의 latent representation \(z_u\)를 표준 가우시안 prior에서 샘플링한다.

latent representation \(z_u\)는 비선형 함수 \(f_{\theta}(\cdot) \in \mathbb{R}^I \)를 통해 변형되어 \(I\) 아이템들의 확률 분포 \(\pi (z_u) \)를 생성한다.

유저 u에 대한 log-likelihood :

 

MultVAE는 variational parameter들을 data dependent function으로 대체한다.

유저와 아이템의 수가 커질수록 최적화 해야 하는 파라미터 수도 많아지게 되어 병목현상이 발생할 수 있기 때문에 data dependent한 함수를 통해 파라미터가 추정되도록 한다. 

\(\phi\)를 통해 파라미터화 되고, variational 분포를 다음과 같이 설정한다.

파라미터들의 최적값은 ELBO를 최대화 하여 구할 수 있다.

Evidence Lower BOund(ELBO) : 데이터의 log marginal likelihood의 lower-bound

ELBO

Reconstruction Error : 디코더의 output이 베르누이 분포 (이진분류)를 따른다고 가정하여 predicted value z_u와 target value x_u의 차이를 구하기 위해 cross entropy 계산

Regularization : 표준 가우시안 분포(표준정규분포)에서 샘플링 된 값 p(z)와 인코더의 output인 \(q_{\phi}\) 의 차이를 구하기 위해 KLD 계산

 

다양한 오토인코더

1. Autoencoder : 같은 objective과 함께 input을 재구성하기 위해 훈련됨

2. Denoising Autoencoder : 오토인코더의 input이나 중간의 hidden representation 에 노이즈를 더함

3. Variational Autoencoder : \(\phi\)를 통해 파라미터화 된 추론 모델을 사용해, approximating variational distribution의 평균과 분산을 생성

다양한 오토인코더

 


요약) Top-K Recommenadation의 다양한 Learning Objectives

- BPR :

  Positive 아이템과 Negative 아이템을 포함하는 triples를 생성.

  Parametric 모델링을 위해 보통 MF를 사용.

  Pairwise Ranking의 이진분류를 통해 score func. 최적화.

 

- CML : 

  MF는 삼각 부등식을 강제하지 않아 이를 보완.

  Pairwise constraint 형태로 label 정보 지정.

  목표 - 마할라노비스 거리 메트릭을 학습하는 것.

  scoring - 유클리디안 거리, Hinge loss(margin m)을 통해 최적화.

 

- NCF, NeuMF :

  MF는 복잡한 구조를 표현하지 못해서 DNNs(MLP)를 사용.

  NeuMF는 NCF의 발전된 버전으로 GMF를 MLP와 앙상블한 모델.

  implicit 메트릭스는 이진 메트릭스임. Binary cross entropy를 통해 최적화

 

- CDAE :

  input에 노이즈를 추가하는 Denoising Autoencoder 사용.

  Average reconsturction error를 최소화 하여 최적화. Square error loss (squared L2 Norm) 사용.

 

- MultVAE :

  Variational Autoencoder 사용.

  ELBO를 최대화 하여 최적화. Multinomial한 경우에 크로스 엔트로피 손실함수 사용.

 

 

 

 

 

 

 


METAS

Lee et al., Action Space Learning for Heterogeneous User Behavior Prediction, IJCAI 2019

 

유저가 특정한 행동을 할 top-K 아이템을 예측하는 방법 중,

Naive한 방법으로 각 행동 타입 별로 모델을 학습시키는 방법이 있다. 

 

하지만 이 방식에는 한계점이 있다.

1. 각 행동 타입에 대한 User-Item interaction은 굉장히 sparse 하고 비균형적이다.

2. 다른 행동 타입 간의 interplay를 잡아낼 수 없다.

 

이러한 한계점을 극복하기 위한 방안으로 METAS가 제안되었다.

 

Key IDEA

"Action Space"에서 분리된 "Entity Space"를 학습

이 entity space는 (user index, item index, action type index) 트리플에 의한 single action을 표현한다.

 

 

- 유저 i 의 아이템 j에 대한 행동 타입 k 의 score d(i, j, k): a-b유클리디안 거리

a와 b 사이의 유클리디안 거리

 

- Objective : CML의 확장 (Pairwise hinge loss func.)

METAS loss func.
CML loss func.


BUIR (Bootstrapping User and Item Representations)

Lee et al., Bootstrapping User and Item Representations for One-Class Collaborative Filtering, SIGIR 2021

Grill et al., Bootstrap your own latent: A new approach to self-supervised Learning, NeurIPS 2020

 

Unobserved user-item 쌍이 정말로 negative,

즉, 정말로 유저가 비선호 하는 것인지 아니면 아직 유저가 해당 아이템을 아직 접해보지 못한 것인지 알 수 없다.

추천을 위해 판별해야한다는 positive-but-unobserved 쌍이 많이 존재한다는 것이다.

 

결국, Observed user-item쌍이 sparser 해질 수록 negative sampling의 기본 추정은 덜 유효하게 된다.

 

 

Negative 쌍들을 사용하지 않고 user/item representation들을 최적화 하기 위한 Naive 해결책으로는,

positively-related 한 유저와 아이템 벡터들을 가깝게 만드는 것이 있다.

 

하지만, negative 지도가 없으면 positive 쌍만 파악이 되는 implicit feedback의 일종이 되기 때문에 representation들은 collapsed 하게 된다. 그렇게 되면 유용한 정보를 얻을 수 없게 된다.

 

 

해결법

두 개의 distinct user/item encoder networks (teacher & student) 를 사용.

 

 

- Student : Online encoder. θ를 통해 파라미터화

                   u와 v 사이의 cross-prediction task를 위해 훈련된다.

                   예측의 타겟은 Target encoder를 통해 얻음.

 

- Teacher : Target encoder. ξ를 통해 파라미터화

                   Momentum-based moving average에 기반하여 업데이트 된다.

                   천천히 Online encoder에 근사함.

                   향상된 representations를 Online encoder의 타겟으로 제공함.

1. 유저 u 와 아이템 v의 representation 벡터를 Online Encoder와 Target Encoder에 넣는다.

 

2. Online encoder에서 나온 값을 Predictor에 넣는다.

 

3. Predictor와 Target Encoder에서 나온 값들을 이용해 L2 Loss를 구한다.

 

4. 구한 loss를 이용해 경사하강법(SGD)으로 θ(Online Encoder)를 업데이트.

 

5. Target Encoder는 SGD를 통해 업데이트 하지 않는다. Online Encoder의 momentum을 이용하여 근사하도록 업데이트.

 

 

 

 

참고자료

[1] 다층 퍼셉트론 - 위키백과, 우리 모두의 백과사전

 

다층 퍼셉트론 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 다층 퍼셉트론(Multilayer perceptron, MLP)은 퍼셉트론을 여러층 쌓은 순방향의 인공 신경망이다. 입력층(input layer)과 은닉층(hidden layer)과 출력층(output layer)으로 구성

ko.wikipedia.org

[2] https://doheelab.github.io/recommender-system/ncf_mf/

 

Pytorch를 이용한 협업 필터링(Matrix Factorization) 구현

이번 글에서는 Pytorch와 MovieLens 데이터셋을 이용하여, 협업필터링을 구현하겠습니다. 협업 필터링의 여러 기법 중에서 Matrix Factorization을 사용하겠습니다. 마지막으로 Neural Collaborative Filtering 논

doheelab.github.io

[3] https://glanceyes.tistory.com/entry/%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C%EA%B3%BC-%EC%9D%B4%EB%A5%BC-%EC%9D%91%EC%9A%A9%ED%95%9C-%EC%9C%A0%ED%8A%9C%EB%B8%8C-%EC%98%81%EC%83%81-%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C

 

딥 러닝을 사용한 추천 시스템과 대표적인 예시인 유튜브 영상 추천

2022년 3월 7일(월)부터 11일(금)까지 네이버 부스트캠프(boostcamp) AI Tech 강의를 들으면서 개인적으로 중요하다고 생각되거나 짚고 넘어가야 할 핵심 내용들만 간단하게 메모한 내용입니다. 틀리거

glanceyes.com

[4] https://deepinsight.tistory.com/127

 

[정리노트] [AutoEncoder의 모든것] Chap4. Variational AutoEncoder란 무엇인가(feat. 자세히 알아보자)

AutoEncoder의 모든 것 본 포스팅은 이활석님의 'AutoEncoder의 모든 것'에 대한 강연 자료를 바탕으로 학습을 하며 정리한 문서입니다. 이활석님의 동의를 받아 출처를 밝히며 강의 자료의 일부를 인

deepinsight.tistory.com

[5] https://huidea.tistory.com/296

 

[Deep Learning] VAE (Variational Auto Encoder) 개념 정리

https://www.youtube.com/watch?v=GbCAwVVKaHY&t=546s 위 강의 링크 내용을 정리해서 요약한 내용입니다. 추가 참고 link : https://hugrypiggykim.com/2018/09/07/variational-autoencoder%EC%99%80-elboevidence-lower-bound/ https://di-bigdata-s

huidea.tistory.com

 

728x90
728x90