ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Joint Deep Modeling of Users and Items Using Reviews for Recommendation
    Artificial Intelligence/Recommendation System 2019. 4. 25. 22:47

      WSDM 2017에서 소개된 "Joint Deep Modeling of Users and Items Using Reviews for Recommendation"을 소개하려고 합니다. 이번 포스팅에 대해서 더 깊은 정보를 알고 싶으시다면, 다음 자료를 참고하시면 됩니다.

    Zheng, Lei, Vahid Noroozi, and Philip S. Yu. "Joint deep modeling of users and items using reviews for recommendation." Proceedings of the Tenth ACM International Conference on Web Search and Data Mining. ACM, 2017.

     

      저자는 "DeepCoNN"이라는 rating prediction 모델을 소개합니다. 이 모델은 추천시스템의 대중적인 방법인 Collaborative Filtering을 활용하지 않고, review라는 text data를 사용함으로써 "user behavior"과 "item property"를 학습하는 것을 시도합니다. user, item의 latent feature를 학습하기 위한 두 뉴럴네트워크의 output을 FM(Factorization Machine)의 input으로 활용하여 rating을 예측합니다. 말로는 다소 복잡하게 들리는데, 다음 그림을 보면 이해가 용이할 것입니다.

     

     

      왼쪽은 "user behavior"를 학습하기 위한 NN(Neural Network)이며, 오른쪽은 "item property"를 학습하기 위한 NN입니다. 왼쪽과 오른쪽은 단지 어떤 input data를 넣는지에 따른 차이만 존재합니다. 

     

      자, 그럼 명확하게 DeepCoNN 모델의 architecture를 살펴보도록 하겠습니다.

    1. Word Representation (= lookup layer)

    2. CNN Layer

      - convolution layer, max pooling, and fully connected layer

    3. The Shared Layer (= prediction layer)

     

      먼저, word representation을 위한 첫번째 layer부터 살펴보겠습니다. 저자는 word embedding을 위해, word2vec을 사용하였습니다. 이때, user가 생성한 reviews 일체를 merge하여 하나의 document로 보는 점을 눈여겨 볼 필요가 있습니다. 이는 CNN의 filter를 거치면서 리뷰의 context 정보를 학습할 수 있는 장점이 있습니다. 이로써 bag of word 방식의 LDA 알고리듬의 한계를 극복할 수 있습니다. 하지만, text pre-processing을 하는 과정을 보다 세밀하게 설명하지 않은 부분은 다소 아쉽습니다. (일반적인 방법론일지라도 모델 성능의 재현가능성을 염두에 둔다면 말이죠..)

     

     

      수식 (1)의 V^u는 다음을 의미합니다. user u가 생성한 reviews의 document. 해당 document에서 총 n개의 word가 순차적으로 등장합니다. 물론, 여기서 중복은 고려되지 않습니다.

     

      CNN layer에서는 복수개의 convoluational filter를 활용하여 특징을 추출합니다. 또한, max pooling을 활용하여 각 feature map에서 가장 highest value만을 추출합니다. 끝으로 fully connected layer를 통과함으로써 user의 latent factor인 x_u를 학습할 수 있습니다. (오른쪽 네트워크에서는 y_i가 학습되겠죠.)

     

    convolutional operation regarding each kernel Kj
    The output vector of convolutional layer
    Fully connected layer

     

     

      이렇게 학습된 x_u, y_i를 통합하여 rating prediction을 하기 위해, 저자는 최상단에 shared layer를 덧붙입니다. 이 layer는 second order interaction을 수행하는 Factorization Machine의 연산을 함으로써 rating을 예측합니다. 

     

    Factorization Machine

     

    DeepCoNN에 대한 python, tensorflow 기반 소스코드는 다음 git을 참조하면 될 것 같네요. 

      - https://github.com/chenchongthu/DeepCoNN/blob/master/model/DeepCoNN.py

    포스팅에서 궁금한 점이 있다면, 문의주시면 함께 의논하며 고민할 수 있으면 좋을 것 같네요~ :)

     

     

Designed by Tistory.