Convolutional Matrix Factorization for Document Context-Aware Recommendation (ACM 2016)
![post-thumbnail](https://velog.velcdn.com/images/sangwu99/post/9ec23fb1-ee0d-4946-8f0c-a0a802bfb522/image.jpg)
INTRODUCTION
- 추천의 질을 낮추는 sparsity
- 몇몇 연구에서는 demography 정보를 사용하여 이를 해결하고자 함
- item description을 추출하기 위해 LDA, SDAE 등의 document modeling 방법론이 최근 연구됨
- 하지만 위 두 방법론은 bag-of-words 기반 방법론으로써, 문맥을 고려하지 못함
- 최근 제시된 Novel한 방법론인 CNN은 local 정보를 잘 반영하며 document를 deep하게 파악할 수 있음
- Glove와 같은 pre-trained 모델을 통해 word embedding을 추출할수도 있음
- 다만 CNN은 추천 task에는 적용하기 힘듬
- 우리의 ConvMF(CNN + PMF)는 이를 적절히 조화시킴
- 이전 document modeling 방법론에서 해소하지 못한 document의 context를 파악하고 SOTA를 달성
PRELIMINARY
Matrix Factorization
![](https://velog.velcdn.com/images/sangwu99/post/5d6150df-a687-4326-876b-f214f932c498/image.png)
- user vector와 item vector의 dot product로 rating을 예측하는 것
- 다음 목적식을 최소화 함으로써 학습
Convolutional Neural Network
- Variant feed-forward neural networks
- By convolution, generate local features
- pooling layer for representation
- CNN은 CV에서 origin을 갖지만, NLP Task에서도 좋은 성능을 보임
- 아쉽게도 CNN은 아직 추천시스템 task에 잘 적용되지 않았음
- van den Oord et al.은 music recommendation에 CNN을 적용했지만, 이는 music signal에만 해당
- 또한 Weighted matrix factorization의 성능을 넘지 못함
CONVOLUTIONAL MATRIX FACTORIZATION
Probabilistic Model of ConvMF
![](https://velog.velcdn.com/images/sangwu99/post/a6b7a9c6-4de6-4dda-bcc2-0eae76618f1b/image.png)
- R∈Rm×n, U∈Rk×N, V∈Rk×M
- UTV≈R
![](https://velog.velcdn.com/images/sangwu99/post/f90012c9-4ef0-4409-9b0d-0b6f7699bd4c/image.png)
![](https://velog.velcdn.com/images/sangwu99/post/c72cdd6c-1590-4536-9729-f0e9dd5f4c34/image.png)
![](https://velog.velcdn.com/images/sangwu99/post/45f95111-8cd4-464b-b92a-99639c19a56e/image.png)
- 아이템 벡터에서 차이가 있는데, item j의 document에 해당하는 Xj를 cnn layer에 통과시킨 후 optimizing을 위한 가우시안 에러를 추가함
- W, Xj, epsilon이 모두 gaussian prior를 갖는다고 가정
![](https://velog.velcdn.com/images/sangwu99/post/a28f7da5-4547-4ee3-89d4-276d4b2f591c/image.png)
- 따라서 다음과 같은 conditional distribution이 생성됨
- CNN을 통과한 latent vector는 평균으로 활용되고, noise가 분산으로 활용 됨
CNN Architecture of ConvMF
![](https://velog.velcdn.com/images/sangwu99/post/f132a3e8-223e-4baa-9018-1255bea00a26/image.png)
Embedding Layer
![](https://velog.velcdn.com/images/sangwu99/post/22f90f68-e156-40a7-86a2-ce595da27a10/image.png)
- raw document to dense matrix
- document가 l개의 word이면 embedding은 Rp×l 차원을 가짐
- l,p 는 각각 document length와 embedding dimension을 의미
Convolution Layer
![](https://velog.velcdn.com/images/sangwu99/post/49e798b3-b5c3-4531-a013-3016fc05a23a/image.png)
- Document는 inherently different with image
- 따라서 document에서 잘 작동할 수 있게 convolution을 설정해야 함
- cij∈R, Wcj∈Rp×ws
- ∗ 는 convolution operator이며, bcj∈R bias, f는 activation function
![](https://velog.velcdn.com/images/sangwu99/post/0758adf4-72d3-41c4-9515-5f8dccf2ec93/image.png)
Pooling Layer
![](https://velog.velcdn.com/images/sangwu99/post/9c275e10-3cc6-4ee7-8673-d4b23b54f0c0/image.png)
- convolution layer로 뽑아낸 feature를 pooling을 통해 고정된 feature vector로 만들어줌
- 너무 많은 contextual feature는 성능 향상에 도움이 되지 않음
- 고정되지 않은 길이의 contextual feature vector는 학습을 어렵게 함
- 따라서 max-pooling을 활용하여 고정된 길이의 vector로 문서를 표현함
- 각 feature vector의 max값만 뽑아서 최종 벡터를 구성
Output Layer
![](https://velog.velcdn.com/images/sangwu99/post/da6c39f6-75ee-4df4-a16a-074e26e5fef8/image.png)
![](https://velog.velcdn.com/images/sangwu99/post/f15f4312-6c9b-44e5-80f6-67c631a25984/image.png)
- Fully Connected layer와 activation fuction을 통과하여 최종적으로 아이템 j에 해당하는 document latent vector를 생성 (k차원으로 projection)
Optimization Methodology
![](https://velog.velcdn.com/images/sangwu99/post/4dc6bf8d-d4d0-49f6-9d65-72f983ec8974/image.png)
![](https://velog.velcdn.com/images/sangwu99/post/ebdc67f0-f538-42d3-aea8-04df0bc47ef4/image.png)
- 다음과 같이 reformulate할 수 있음
- 다른 변수를 고정해놓고, 차례 차례 변수를 학습하는 coordinate descent를 채택
![](https://velog.velcdn.com/images/sangwu99/post/2f30f22b-b0e3-42fd-b1e6-a14eecfe0755/image.png)
- 다음과 같이 closed form으로 정리 가능
![](https://velog.velcdn.com/images/sangwu99/post/54b24704-07d1-4f08-88c7-6bb2cb40d730/image.png)
- W는 CNN, max-pooling, non-linear activation 때문에 closed form으로 정리 불가
- 따라서 back propagation algorithm을 통해 optimize (UV term을 일시적으로 constant로 설정)
- U, V, W를 순차적으로 학습하여 수렴할 때 까지 진행
![](https://velog.velcdn.com/images/sangwu99/post/13145ef8-f982-4dc0-b323-c33bc825ad58/image.png)