Networks/논문 리뷰

[논문리뷰] Neural Collaborative Filtering

코딩하는 Español되기 2024. 11. 17. 17:00

 

He, Xiangnan, et al. "Neural Collaborative filtering." Proceedings of the 26th international conference on world wide web. 2017 리뷰

 


0. Abstract

1. Introduction

2. Preliminaries

    2-1 Learning from Implicit Data

    2-2 Matrix Factorization

3. Neural Collaborative Filtering

    3-1 General Framework

    3-2 Generalized Matrix Factorization

    3-3 Multi-Layer Perceptron

    3-4 Fusion of GMF and MLP

4. Experiments

    4-1 Experimental Settings

    4-2 Performance Comparison(RQ1)

    4-3 Log Loss with Negative Sampling(RQ2)

    4-4 Is Deep Learning Helpful?(RQ3)

5.Conclusion


0. Abstract

○ 여러 분야에서 딥러닝이 사용 But 추천 시스템에서는 괄목할만한 성과 X

○ 해당 연구에서는 추천의 핵심 문제를 해결하기 위해 Neural Networks 기반 Collaborative Filtering 사용

    ● NCF (Neural Network Based Collaborative Filtering)

    ● 내적을 Neural Architecture로 바꾼 generic 한 모델

내적을 Neural Architecture로 바꾼 generic한 모델?
  1) 기존의 추천시스템(MF; Matrix Factorization) 기반 모델:
      - 사용자- 아이템의 잠재 요인을 내적으로 계산해 선형적 방식으로 상호작용을 모델링
  2) 논문에서의 방법(NCF)
      - 기존 내적 방식 → 신경망(Neural Architecture)
      - 즉, 사용자-아이템 간의 상호작용을 비선형적인 방식으로 더 풍부하게 학습 가능하도록
  3) 쉽게 설명: 기존의 단순 곱셈 방식(MF) → "신경망 계산 방식"(NCF)

    ● matrix Factorization을 표현하고 일반화 가능

    ● 여러 실험 결과 NCF구조가 다른 SOTA 방법론들보다 개선된 성능을 보임을 밝힘

SOTA 방법론: 해당 분야에서 현재까지 알려진 가장 성능이 좋은 최신 방법론

1. Introduction

○ 기존: MF(Matrix Factorization)

    ● user-item의 상호작용을 Latent Vector의 내적으로 학습

        → 만들어진 잠재공간을 user, item이 모두 공유

    ●  여기서 사용된 내적은 단순 선형 결합

        So, 복잡한 상호작용을 잡기 어려움

○ 제안: NCF(Neural Network Based Collaborative Filtering)

    ● 기존 선형행렬분해(Linear MF)의 단점을 해결하고자 함

    ● Neural Network 기반 Collaboratice Filtering → 비선형 부분 커버

    ● So, user-item 관계를 복잡하게 모델링 가능

※ 본문은 주로 암시적 피드백에 집중 → 노이즈가 많은 암시적 피드백 데이터 모델링 방법을 다룸
※ Implicit Feedback: 사용자가 직접 남긴 평가 | 의견이 아닌 사용자 행동을 통해 추론된 간접적인 데이터
※ 즉, 사용자가 어떤 아이템을 소비했는지, 클릭했는지 등을 활용한 추천 모델 학습
사용자의 긍정적 상호작용을 학습 대상으로 삼고, 숨겨진 선호도를 추론하는 방식 채택

○ Contributions

    ● user-item의 잠재 특성을 모델링하기 위한 Neural Network 구조 제안(General Framework NCF)

    ● 행렬 분해(MF)는 NCF의 특별한 케이스임을 증명 & 다층 퍼셉트론 사용

    ● 실제 데이터(MovieLens, Pinterest)를 사용해 실험을 진행 → NCF 가능성을 입증

 

2. Preliminaries

2-1 Learning from Implicit Data

M, N: user와 item 수(rating 데이터가 아닌 0과 1의 이진 데이터)

    ● user가 item 관측여부에 따라 0 | 1로 표현(= Interaction이 있는지 여부 표시)

    ● 선호, 비선호를 나타내는 것은 X(Implicit Feedback data)

f: 상호작용 함수, user-item간 imteraction이 있는지 확률 예측 문제

○ 2가지 objective function(Point-wise loss와 Pair-wise loss) 모두 사용 가능

    ● Point-wise: 실제값과 예측값 차이 최소화

    ● Pair-wise: BPR에서 사용했으며, 1이 0보다 큰 값을 갖도록 마진 최대화

 

2-2 Matrix Factorization

○ User-Item Interaction Matrix의 한계 지적

    ● (a) u4 → u1 > u3 > u2 (jaccard coefficient를 사용해 유사성을 구했을 때 가까운 순서)

각 셀의 값 = 암시적 피드백
○ Jaccard Coefficient: 두 집합 간의 유사도 측정 지표
    ● 두 집합의 교집합 크기를 합집합 크기로 나눔
○ 해당 그림에서 계산
    ● u4와 u1
        - 교집합: {i1, i3, i5} = 3
        - 합집합: {i1, i2, i3, i4, i5} = 5
        - 유사도 : 3 / 5  = 0.6
    ● u4와 u2
        - 교집합: {i3} = 1
        - 합집합: {i1, i2, i3, i4, i5} = 5
        - 유사도: 1 / 5 = 0.2 
    ● u4와 u3
        - 교집합: {i3, i4} = 2
        - 합집합: {i1, i2, i3, i4, i5} = 5
        - 유사도: 2 / 5 = 0.4

    ● (b) p4 → p1 > p2 > p3 (잠재 공간에서의 가까운 순서 표현)

○ User-Item의 복잡한 관계를 저차원에 표현하면서 문제 발생

    ● 차원을 키우면? Overfitting

해결법: 비선형적인 Neural Network를 사용해 복잡한 상관관계(correlation) 표현

 

3. Neural Collaborative Filtering

3-1 General Framework

상세설명

1. Input Layer

    ●  user- Item을 원-핫-벡터로 구성

$$ \textup{ User, Item을 나타내는 feature vector}  \upsilon_{u}^{U}, \upsilon_{i}^{I} \textup{로 구성}$$

 

2. Embedding Layer

    ● Sparse on-hot vector를 dense vector로 매핑

$$ \textup{User latent vector는 embeeddig matrix} P \in \mathbb{R}^{M*K} \textup{에 대해} P^{T}V_{u}^{U} \textup{로 표현} $$

$$ \textup{Item latent vector는 embedding matrix} Q \in \mathbb{R}^{N*K} \textup{에 대해} Q^{T} \upsilon_{i}^{I} \textup{로 표현} $$

 

3. Neural CF Layers

    ● User Latent vector와 Item latent vector를 contcat → Layer 통과(비선형 관계 학습)

 

4. Neural CF Layers

    ● User u와 Item i의 상관관계를 0 ~ 1 사이 점수로

$$ \textup{predicted score} \hat{y}_{ui} \textup{를 예측, target} y_{ui} \textup{와의 비교를 통해 학습 진행} $$

 

3-1-1 Learning NCF

    ● Label = Binary ... So, Beroulli Distribution 사용

[베르누이 분포]

$$ P(y|p) = p^{y}(1 - p)^{1- y} $$

[Log Loss]

$$ \textup{Log Loss} = - (y \cdot log(p) + (1 -y) \cdot log(1 - p)) $$

Bernoulli Distribution(베르누이 분포)
○ 두 가지 결과(성공/실패, 1/0, 참/거짓)로 표현되는 확률 분포
○ 특정 사건이 발생할 확률 p에 대한 베르누이 분포는 위와 같은 확률을 정의

Label이 Binary라서 베르누이 분포를 쓴다?
    ● 베르누이 분포가 Binary 결과를 다루는 가장 기본적인 확률 분포
    ● Log Loss(Binary Cross-Entropy)와 자연스럽게 연결(식은 위와 같음)
        - p: 예측 확률, y: 실제 Label
    ● 베르누이 분포의 로그 가능도(Log-Likelyhood)를 최대화하는 것과 동일

$$ \gamma \textup{는} y_{u,i} = 1 \textup{인 집단,} $$

$$ \gamma^{-1} \textup{는} y_{u,i} = 0 \textup{인 집단} $$

    ● Loss Function은 binary cross Entropy 사용

    ● 위의 L을 최소화하는 학습 파라미터를 찾음

    ● 학습은 SGD 사용

 

3-2 Generalized Matrix Factorization

○ MF가 Neural CF의 특별 케이스로 된다는 것을 보여줌

    ● a: non-linear activation function(sigmoid

    ● h^{T}: 내적할 때 가중치 역할 → 잠재 벡터를 학습할 수 있게 하고 중요도를 조절하도록 함

    ● IF a = 1 && h^{T}가 uniform vector Then MF

 

3-3 Multi-Layer Perceptron

    ● GMF보다 간단히 user-item interaction 학습 가능

    ● w_x: weight matrix

    ● b_x: bias vector

    ● a_x: x 번째 층 activation function

$$ \phi_{1} \textup{은 user와 item의 잠재 벡터를 concat} $$

$$ \textup{이 후 모든} \phi_{L} \textup{은 weight matrix와 bias vector로 표현} $$

    ● 최종 식은 GMF와 동일한 구조

 

3-4 Fusion of GMF and MLP

    ●  GMF와 MLP에서 사용하는 잠재 벡터 차원이 다를 수 있음

    ● 최종 scoreMLP와 GMF의 output을 concat해서 사용

    ● MF의 선형성과와 MLP의 비선형성을 결합해 장점만 선택

 

4. Experiments

○ 아래 3가지 질문 기반 실험진행

● RQ1: 제안한 NCF 모델이 다른 SOTA implicit collaborative filtering 방법보다 좋은 성능을 내는가?
● RQ2: 제안한 최적화 프레임워크(Log loss with negative sampling)가 효과적인가?
● RQ3: Deep Neural Network 구조가 user-item 관계 학습에 있어 효과적인가?

 

4-1 Experimental Settings

○ Datasets

    ● MovieLens, Pinterest 2가지 데이터를 사용해 실험 진행

    ● Pinterest의 경우 데이터셋이 매우 크지만 Sparse

        - 사용자의 20%가 pin이 하나만 존재

        - 최소 20개 이상의 pin을 가진 user로 필터링 하여 사용

○ Evaluation Protocols

    ● HR@10 (Hit Ratio): 몇 개를 맞추었는지 나타내는 지표

    ● NDCG@10 (Normalized Discounted Cumulative Gain)

       : 관련성이 높은 결과를 상위권에 노출시켰는지를 고려(순서고려)하는 평가 지표

○ BaseLines

    ● ItemPop: 인기도에 따라 아이템 순위 매김

    ● ItemKNN: Standard Item-based CF 방법을 잠재 피드백에 적용

    ● BPR: MF 모델 최적화 방법

    ● eALS: 아이쳄 추천에서의 SOTA(state-of-the-art) MF 방법

 

4-2 Performan ce Comparison(RQ1:좋은 성능)

 

4-3 Log Loss with Negative Sampling(RQ2: 최적화 프레임워크의 효과)

    ● 학습을 거듭할수록 성능이 지속적으로 증가 → Optimal한 negative samplig 수 = 거의 3 ~ 7개

    ● negative sampling 사용 이유: negative data는 positive data보다 잠재 피드백을 사용하기 힘들기 때문에 사용

 

 

4-4 Is Deep Learning Helpful? (RQ3: Deep러닝이 추천에 적합한가?)

    ● Layer 수와 잠재 벡터 증가에 따라 성능이 거의 일관되게 증가

       → Deep Neural Network를 사용하는 것이 효과적임을 증명

5. Conclusion

○ General Framework NCF를 제안: GMF, MLP, NeuralMF

○ 선형 모델의 한계를 Neural Network를 사용해 해결 가능

○ GMF와 MLP의 장점을 더해 NeuralMF제안 & 성능 향상에 기여

○ User-Item Interaction을 다루는 Collaborative Filtering 아이디어에 집중

 


[General Framework 상세설명]

○ 해당 그림은 NCF의 구조를 보여줌

    ● NCF: MF + 신경망 → user-item 상호작용을 복잡하게 학습 가능하게 하는 프레임워크

 

1. Input Layer(입력층)

○ user, item 정보 받는 부분

    ● user U: user_id → one-hot 인코딩 형태로 표현

    ● Item I: Item_id → one-hot 인코딩 형태로 표현

○ 이 단계에서 user, Item은 높은 차원의 희소 벡터로 표현

 

2. Embedding Layer(임베딩 층)

희소 벡터 → 저차원의 밀집 벡터로 변환

    ● p_u(사용자 임베딩 벡터): 사용자 u를 잠재 공간에서 표현

    ● q_i(아이템 임베딩 벡터): 아이템 i를 잠재 공간에서 표현

user, item 각각을 학습 가능한 잠재 벡터로 변환 & 이후 계산에 사용되도록 함

[Embedding Layer 대안]

Pretrained Embeddings

    ● 사전 학습된 임베딩(Word2 Vec, GloVe)을 초기값으로 사용

    ● user, item의 외부 정보 활용 가능 

Random Initialization

    ● 임베딩 벡터를 무작위 초기화 후 학습

    ● 데이터가 충분히 많을 때 고려 가능

3. Neural CF Layers(신경망 층)

○ user, item 벡터 결합 → 상호작용 학습

    ● Input: p_u와 q_i

    ● 과정: Layer1 → Layer2  → ... → LayerX(점진적으로 복잡한 상호작용 패턴 학습)

    ● 벡터 결합 방식

        - 요소별 곱(Element-wise Product): 기본 GMF 방식

        - 벡터 연결(Concatenation): user-item 정보를 합쳐 더 복잡한 표현

○ 각 신경망층은 활성화 함수(e.g. ReLU, Sigmoid 등) 사용해 비선형성 추가

[Neural CF Layers 대안]

○ MLP(Multi-Layer Perceptron)

     ● user-item 벡터를 벡터 연결(Concatenation)을 통해 여러 신경망층에 비선형 상호작용 학습

Hybrid NCF(NCF 논문에서 사용한 방법)

    ● GMF와 MLP 결합 → 장점을 동시에 활용

 

4. Output Layer(출력층)

○ 최종출력: 사용자(u)와 아이템(i)의 예측 선호도(Score) \hat{y}_{ui}를 제공

    ● \hat{y}_{ui}: 사용자가 해당 아이템을 얼마나 선호할지 예측한 값

○ 실제 타겟값 y_{ui}와 비교해 모델 학습시키는데 사용

    ● y_{ui}: 사용자 실제 행동 데이터

[Output Layer 대안]

○ Sigmoid Activation

    ● Binary Classification 문제(e.g. 선호/비선호)에서 확률값 출력

○ Softmax Activation

    ● Multi-Class 문제에서 사용(e.g. 여러 아이템 중 하나 추천)

○ Linear Output

    ● 점수 직접 출력(e.g. 평점 예측 등)