ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CosRec: 2D Convolutional Neural Networks for Sequential Recommendation
    Artificial Intelligence/Recommendation System 2020. 9. 17. 21:52

    안녕하세요. 이번 포스팅에서는 CNN을 활용하는 추천 알고리즘인 "CosRec" 모델을 살펴보려 합니다.

     

    Sequential recommendation 분야에서는 user behavior pattern을 정의함으로써 그 다음에 어떤 상품을 구매할 것인지를 예측합니다.

    즉, 개인마다 과거에 구매한 상품 리스트가 있을 것이고, 이를 사용하여 개인별 feature를 만든다고 간단히 생각하면 됩니다.

    이번 포스팅은 이 user behavior pattern을 변형하여 새로운 feature를 만듦으로써 추천 성능을 향상시키자는 시도입니다.

     

    아래 그림 (a)부터 살펴볼까요?

    그림에서는 삼각대를 구매한 특정 고객이 구매한 상품 리스트를 나타내고 있습니다.

    이를 RNN/CNN 등 다양한 아키텍쳐를 활용하여 학습한다는 것이죠.

    저자는 여기서 문제를 제기하고 있습니다. "SD card"는 직접적으로 삼각대를 구매하는 과정에서 중요한 정보가 아니라는 것이죠.

    삼각대 구매를 예측하는 주요 데이터는 카메라와 렌즈입니다. 이 상품들간의 correlation을 어떻게 하면 모델이 더 잘 잡아낼 수 있을까란 의문을 던집니다.

     

    그 방안으로 저자는 간단하게 input 데이터를 변형시키는 작업을 하였습니다.

    그림 (b)에서 보이는 것과 같이 카메라와 렌즈에 대한 feature vector를 concat하고 3 way tensor를 정의하였습니다.

    그리고 이를 CNN의 input 데이터로 본 것이죠.

     

     

    전체적인 CosRec 알고리즘의 아키텍쳐는 아래 그림과 같습니다.

    embedding, pair-wise encoding, CNN과 같이 3개의 모듈로 구성되는 간단한 구조입니다.

    여기서 조금 고민을 할 수 있는 부분은 pair-wise encoding을 하는 과정에서 모든 조합을 고려했다는 것입니다.

    이렇게 처리하면, irrelevant한 상품들도 concat이 되어 noise를 줄 수도 있을 것 같은데 말이죠.

    (만약, side information 정보가 있고 이를 사용한다면 모델 아키텍쳐를 다르게 구성할 수도 있을 것입니다)

     

    이처럼 단순한 모델이 baseline 모델들보다 꽤나 향상된 성능을 보이는 것이 놀랍습니다.

    (하지만, 비교 모델들이 SOTA라고 하기엔 좀 많이 부족해 보입니다)

     

     

    해당 연구에 대해서 좀 더 자세히 알아보고 싶으시면 구글 스칼라에서 아래 논문을 살펴보는 것을 추천드립니다.

       - CosRec: 2D Convolutional Neural Networks for Sequential Recommendation, CIKM-2019

    또한, 구현체도 상당히 깔끔하게 짜서 git에 올려뒀으니 구현하는 방법에 대한 팁도 배우면 좋을 것 같습니다. :)

       - github.com/zzxslp/CosRec 

     

Designed by Tistory.