본문 바로가기

모델/추천시스템

Neural Collaborative Filtering(1) - 도입부

안녕하세요. 이번 시간에는 Neural collaborative Filtering 논문의 도입부에 대한 글을 쓰게 되었습니다. 2017년에 나온 논문으로 2020년 11월 10일 기준, 인용수 1699회를 기록하고 있는 엄청난 논문입니다. 

 

dl.acm.org/doi/pdf/10.1145/3038912.3052569?casa_token=8qbBc5hXbz0AAAAA:1RhLPKE1yd1QwcHmgVtxt9kigsnNmZxQ81R0Zxxdcl0_KxuNLYc-X90K65HYXofCk8v0UwqEEMQHgJg

 

Neural Collaborative Filtering | Proceedings of the 26th International Conference on World Wide Web

WWW '17 Paper Acceptance Rate 164 of 966 submissions, 17% Overall Acceptance Rate 2,771 of 13,232 submissions, 21%

dl.acm.org

아마 Collaborative Filtering이 딥러닝과 연관된 논문을 보시다보면 한번쯤 볼만한 논문입니다.

 

참고 자료는 다음과 같습니다.

gombru.github.io/2019/04/03/ranking_loss/

 

Understanding Ranking Loss, Contrastive Loss, Margin Loss, Triplet Loss, Hinge Loss and all those confusing names

After the success of my post Understanding Categorical Cross-Entropy Loss, Binary Cross-Entropy Loss, Softmax Loss, Logistic Loss, Focal Loss and all those confusing names, and after checking that Triplet Loss outperforms Cross-Entropy Loss in my main rese

gombru.github.io

논문의 주요 기여

○ latent feature을 모델링 하는 neural network 구조 제공

Matrix Factorization이 NCF 특화라는 것을 보여줌

Ranking loss

 input 간 상대적인 거리를 학습하는 방식

 image에서 예를 들어 input A와 input B가 똑같은 사람이라면 유사, 다른 사람이면 비유사로 구분하는 binary 방식 학습

○ 사용하기 위한 방법

  ● 2개 이상의 input data로부터 feature를 추출하고 각각의 임베딩된 대표값을 얻음

  ● 위의 각 임베딩된 대표값의 유사도를 측정하기 위한 유사도 측정 함수를 정함

  ● 위의 대표값들, 유사도 측정 함수를 활용해 유사한 input data끼리는 유사하게, 비유사 input data 끼리는 비유사하도록 잘 구분하는 모델 학습시킴

○ Pairwise Ranking Loss

  ● train data의 positive pair와 negative pair를 만듦

    □ Positive pairs : 유사한 input pairs. 예를 들어 $X_{i}$와 $X_{a}$가 Positive pairs면 ($X_{i}$, $X_{a}$) 둘은 유사한 데이터로 분류됨

    □ Negative pairs : 비유사한 input pairs. 예를 들어 $X_{i}$와 $X_{b}$가 Negative pairs면 ($X_{i}$, $X_{b}$) 둘은 유사한 데이터로 분류됨

  ● 목적 : Positive pairs 간에는 거리값이 최소화 되도록, Negative pairs 간에는 특정 값 m보다 더 큰 거리를 가지도록 만듦

    => Loss는 다음과 같이 정의됨 : 

    $L = d( X_{i}, X_{a} ) \, if \, Positive \, pair$ 또는 $max(0, m- d(X_{i}, X{b})) if \, Negative \, pair)$

      => Negative pair에서 일정 거리 이상 벌려지면 더 학습안할 수 있도록 margin 값으로 $m$을 넣어 괜히 거리 값을 계속 늘리지 않도록 조절할 수 있게 함

문제제기

○ implicit data : item 구매 여부, 시청 여부 등 user가 item에 대해 직접적으로 점수로 준 데이터가 아닌 간접적으로 item에 대한 의중을 나타내는 데이터

  ● 문제점 : 0,1로 구분시 0이 싫어한다는 의미가 아님. 이로 인해 item에 대한 부정적인 피드백이 부족해짐.

○ implicit 추천시스템 문제 : 관찰되지 않은 user와 item 간 임의의 점수 Y를 구하는데, 여기서 Y는 item들에 ranking을 매기는데 사용됨

  ● model-based 접근 : 데이터가 어떤 모델로부터 형성되었다고 가정하는 것. 즉, $\hat{y_{ui}} = f(u,i|\theta)$라고 가정함

    - $\hat{y}_{ui}$ : user u가 item i에 준 예측된 점수값

    - $\theta$ : model parameters

    - $f$ : 함수($\theta$사용)

 model의 parameter들($\theta$)를 추정하기 위해 목적함수를 최적화한다고 할 때, 두 가지 타입의 함수가 있음   

  ● Pointwise loss

      - 예측값과 실제값의 차이를 최소화 하는 loss로 학습함

      - 모든 관찰 안된 data를 negative 응답으로 함(즉, NaN은(implicit에선 0) item을 좋아하지 않는다는 것으로 판단)

        => 저자가 제기한 문제 발새

    □ Pairwise loss

      ■ observed 요소들은 unobserved 요소보다 더 높은 rank로 되야 함

      ■ observed된 예측값과 unobserved 예측값의 차이를 극대화 함

Matrix Factorization

○ user와 item을 latent features의 실수 벡터로 연관시키는 방법

  ● $\hat{y_{ui}} = f(u,i|\textbf{p}_{u},\textbf{q}_{i}) = \textbf{p}_{u}^{T} \textbf{q}_{i} = \sum_{k=1}^{K} p_{uk}q_{ik} $

  ● $K$ : latent space의 차원

  ● 가정

    - 각 latent space 차원은 서로 독립임

    - 같은 weight를 가지고 선형 결합함

  ● MF는 item과 user를 같은 latent 공간에서 mapping하기 때문에 inner product로 두 user간 유사도 측정 가능

    - Jaccard coefficient 사용시, 아래 예시를 보면 latent vector를 이용해 user간 유사도를 구했을 때 $ s_{23}> s_{12} > s_{13}$으로 정리되며 각 $u_{i}$의 vector 값을 그림 (b)로 표현함.

    - $u_{4}$가 추가시 유사도가 $s_{41} > s_{43} > s_{42}$로 나오게 됨. 하지만 그림 상으로 p_{4}를 1과 가장 가까이 놓게 되면 $s_{43} > s_{42}$ 식이 그림에선 성립하지 않음(가깝게 안됨). 

      => 큰 ranking loss 발생시킴

      => 이 점이 바로 user-item 상호관계를 낮은 latent feature를 활용해 고정된 inner product로 유사도를 구하면 발생하는 문제임. 그렇다고 latent feature의 차원을 너무 높이면 overfitting 문제가 발생하게 됨.

        => 저자는 새로운 방법 제안

여기까지가 논문 도입부에 대한 글이었습니다. 다음 시간엔 알고리즘 및 실험 결과에 대해 정리해서 쓰도록 하겠습니다. 감사합니다! 잘못된 부분이나 질문하실 부분 있으시면 말씀해주세요!