Convolutional Matrix Factorization for
Document Context-Aware Recommendation (Paper) (PPT)
1. 문제점
Collaborative Filtering 에서는 전통적으로 Matrix Factorization 과 같은 모델 기반의 방법론들을 사용하였다
그런데 너무 이러한 Matrix 가 Sparse 해지면서 MF 기반으로는 정확도를 보장할 수 없는 상황이 발생하게 되었다
이러한 문제들을 해결하기 위해서 최근의 연구들은 상품의 비정형적인 데이터를 활용하기 위한 방법들을 고민하였다
이러한 설명 정보를 이해하기 위한 방법으로 현재까지 크게 아래와 같이 두 가지의 접근방법들이 사용되었다
– Latent Dirichlet Allocation (LDA)
– Stack Denoising AutoEncoder (SDAE)
하지만 이러한 접근 방법은 기본적으로 bag of Words 모델로 문맥적인 이해를 잘 하지 못하는 문제가 있다
본 논문은 크게 3가지 아이디어를 가지고 있다.
– Word to Vector 와 같은 Word Embedding 모델의 활용
– CharCNN 과 같은 Text 정보에 Filter 기반 신경망을 활용
– PMF 와 CNN 을 연결하여 훈련하는 아키택쳐
위의 내용을 이해하기 좋도록 직접 도식화를 해보았다.
아래는 해당 논문의 발표자료에 첨부된 이미지이다. 이해가 더 편한 자료를 참조하면 될 듯 하다.
이제 Step by Step 으로 한가지씩 설명을 해보도록 하자
(1) Word Embedding
딥러닝에 자연어를 입력층으로 사용하려면 기본적으로 Vector 롸를 먼저 시킬 필요가 있다. 2016년 Word2Vec 라는 단어의 의미적인 유사성을 표현할 수 있는 기법이 연구되어 많이 사용되고 있으며, 최근에는 NGram 방법을 적용한 FastText나 전체적인 분포 정도도 Vector에 반영하고자하는 Glove 와 같은 알고리즘이 많이 사용되고 있으며, 본 논문에서는 Glove 를사용하고 있다.
해당 논문에서는 PreTrained 된 모델과 그렇지 않은 경우를 비교하고 있는데, 꽤 당연한 결과이겠지만 PreTrained 된 모델을 사용하였을 때 더 좋은 성능을 보여 주었다고 이야기 하고 있다.
(2) CharCNN
CNN 은 보통 이미지에 많이 적용을 한다고 생각하기 마련이지만 최근에는 자연어에서 컨택스트를 추출하기 위한 용도로도 많이 연구가 되고 있으며, Yoon Kim 의 CharCNN 이 가장 그 컨셉을 이해하기 좋은 자료가 될 수 있겠다. 본 논문 또한 비슷한 개념을 채용하였으며, 단순 Dictionary 기반 분석 LDA 같은 방법과 비교하였을 때 의미의 추출에서는 더 좋은 성능을 보여 주는 듯 하다 .
(3) Conv + PMF
사실 가장 핵심적인 아이디어는 CNN 의 개념과 PMF 의 개념을 융합하는 부분이라고 보여지는데, 사실은 이 전에 나온 논문중에 똑같은 개념을 사용하고 CNN 자리에 AutoEncoder 를 넣은 논문도 있기는 했었다.. 완전 판박이 인데, AutoEncoder 대신에 CNN 만 사용한 그런 느낌이 좀 있기는 하지만 여하튼 아이디어를 살펴보자
PMF 를 보면 원래 User – Score Vector 를 User-Dim 과 Item-Dim으로 분리하는데 그 과정을 다시 상기 시켜보면 아래의 그림과 같다
자 여기에서 Item Vector 가 있고 (Dim 사이즈는 우리가 설계하면 되는 것이고.. ) 이제 CNN 사이드를 보면 아래와 같다.
CNN 은 Input 은 상품에 대한 설명을 Glove 모형을 사용하여 (Pretrained 된) Vector화 한 것이고, CNN (Char CNN ) 을 통해서 요 위에서 구했던 PMF 의 Item Vector 와 같은 사이즈로 출력해 주면 PMF 의 Item Vector 가 Fix 되어 있다고 가정할 때 아래와 같이 Error 값을 구하고 Back Propagation 을 할 수 있지 않을까?
식만 다시한번 보면 Vj 가 결국 Target 값이고 Prediction 값은 CNN 의 결과 Vector 가 되는 것이고, 목적 함수는 오차를 최소화하는 W 를 찾는 것이 되겠다. 뒤쪽의 Term 은 전형적인 Overfitting 방지를 위한 Term 인 것이다.
결과적으로 성능을 보면 데이터 셋에 따라 다르지만, Dense 한 데이터 Sparse 한 데이터 Real Data 3가지 케이스 모두 의미 있는 성능 향상을 보여 주었다고 한다.