[RecSys] Recommender Sysyem with Deep Learning 2 (AutoRec, CDAE)

mincheol2·2022년 3월 14일
0

RecSys

목록 보기
15/23

이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.

AutoRec

AutoEncoder를 Collaborative Filtering 에 적용하여 기본 CF모델에 비해 Representation과 Complexity 측면에서 좋은 성능을 보인 논문이다.


AutoRec은 User-item matrix를 Encoder와 Decoder를 통해 비교하면서 평점을 예측한다.

AutoRec은 논문 리뷰와 구현 을 통해 설명되어 있으니 참조하도록 하자.

CDAE : Collaborative Denoising Auto-Encoders for Top-N Recommender Systems

논문 원본 링크

CDAE는 DAE를 Collaborative Filtering에 적용하여 Top-N 추천(평점 예측 X)에 활용한 논문이다.

DAE : Denoising Autoencoder

우선 DAE가 무엇인지 간단하게 알아보자.

DAE의 탄생 배경은 다음과 같다.
AutoEncoder는 입력데이터를 출력으로 복원하는 비지도 학습모델이다.
주요 활용 분야는 이상치탐지(Anomaly Detection), 표현학습(Representation Learning), 이미지 노이즈 제거(Image Denoising Task)이다.

특이 이미지 노이즈 제거의 경우 처음 AE는 이미지를 그대로 복원하는 것이 주요 task였으나 실제 적용 문헌에서는 오히려 Noise가 낀 데이터에서 노이즈를 제거하는데 사용되었다.
이를 더 잘 수행하기 위해 나온 것이 DAE이다.


DAE는 입력데이터에 일부러 노이즈한 input을 만들기위해 random noise나 dropout을 추가하여 학습한다.
이 input(noisy input)을 잘 복원할 수 있는 robust한 모델이 학습되어 전체적인 성능향상을 한다는 것이 DAE의 핵심 개념이다.

DAE는 학습 데이터에 있는 깨끗한 Input data에만 Overfitting 되는 AE의 한계를 극복하였다.

CDAE

  • CDAE vs AutoRec
CDAEAutoRec
Top-N 추천모델평점 예측 모델 (Ranking Prediction)
DAE로 noisy input그대로 input
개별유저 학습 O개별유저 학습 X

CDAE는 문제 단순화를 위해 User-item interaction 정보를 binary정보로 바꿔서 학습데이터로 사용한다.
이것은 개별 유저에 대해서 아이템의 rating이 아닌 preference를 학습하게 됨을 의미한다.


Input Layer에 사용되는 yuy_u는 한명의 유저u를 기준으로 모든 item에 대한 평점을 나타내는 벡터이다.
yuy_u에 DAE를 사용하여 noise를 추가한다.
따라서 그림에서 Input Layer에 y~u\tilde y_{u} 들은 qq라는 확률에 의해 0으로 drop-out된 벡터이다.
다음식은 확률 qq를 정의한다.

P(y~u=δyu)=1q ,    P(y~u=0)=qP\left(\tilde{y}_{u}=\delta y_{u}\right)=1-q \ ,\ \ \ \ P\left(\tilde{y}_{u}=0\right)=q

그리고 개별유저에 대해서 VuV_u라는 학습파라미터를 학습한다. (그림에서 User Node)
이는 유저에 따른 특징을 VuV_u가 학습하고 Top N 추천에 사용한다.
이렇게 개별유저를 학습에 사용하기 때문에 Collaborative가 붙게된 것 이다.


이렇게 생성되 Input으로 AutoRec과 동일한 Task를 진행한다.
인코더로 Latent representation zuz_u를 생성하고 디코더로 regenerate한다.
수식으로 보면 다음과 같다.

  • Encoder
    zu=h(Wy~u+Vu+b)\boldsymbol{z}_{u}=h\left(\boldsymbol{W}^{\top} \tilde{\boldsymbol{y}}_{u}+\boldsymbol{V}_{u}+\boldsymbol{b}\right) \quad
    - y~u\tilde{\boldsymbol{y}}_{u} : noisy input
    - Vu\boldsymbol{V}_{u} : 개별유저 벡터 (User Node)

  • Decoder (기존과 동일)
    y^ui=f(Wizu+bi)\hat{y}_{u i}=f\left(\boldsymbol{W}_{i}^{\prime \top} \boldsymbol{z}_{u}+b_{i}^{\prime}\right)



CDAE와 다른 모델들을 비교한 결과이다.
대체적으로 다른 Top-N 추천모델에 비해 높은 MAP과 recall을 보임을 알 수 있다.

이외에도 많은 AutoEncoder기반(VAE, CAE 등) 모델들이 추천에 활용되지만 가장 중요한 것은 어떻게 user와 item 임베딩이 학습되는지 파악하는 것이 중요하다.

profile
옹오옹오오오옹ㅇㅇ

0개의 댓글