안녕하세요. 이번 시간에는 Neural collaborative Filtering 논문의 도입부에 대한 글을 쓰게 되었습니다. 2017년에 나온 논문으로 2020년 11월 10일 기준, 인용수 1699회를 기록하고 있는 엄청난 논문입니다.
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. 예를 들어 Xi와 Xa가 Positive pairs면 (Xi, Xa) 둘은 유사한 데이터로 분류됨
□ Negative pairs : 비유사한 input pairs. 예를 들어 Xi와 Xb가 Negative pairs면 (Xi, Xb) 둘은 유사한 데이터로 분류됨
● 목적 : Positive pairs 간에는 거리값이 최소화 되도록, Negative pairs 간에는 특정 값 m보다 더 큰 거리를 가지도록 만듦
=> Loss는 다음과 같이 정의됨 :
L=d(Xi,Xa)ifPositivepair 또는 max(0,m−d(Xi,Xb))ifNegativepair)
=> Negative pair에서 일정 거리 이상 벌려지면 더 학습안할 수 있도록 margin 값으로 m을 넣어 괜히 거리 값을 계속 늘리지 않도록 조절할 수 있게 함
문제제기
○ implicit data : item 구매 여부, 시청 여부 등 user가 item에 대해 직접적으로 점수로 준 데이터가 아닌 간접적으로 item에 대한 의중을 나타내는 데이터
● 문제점 : 0,1로 구분시 0이 싫어한다는 의미가 아님. 이로 인해 item에 대한 부정적인 피드백이 부족해짐.
○ implicit 추천시스템 문제 : 관찰되지 않은 user와 item 간 임의의 점수 Y를 구하는데, 여기서 Y는 item들에 ranking을 매기는데 사용됨
● model-based 접근 : 데이터가 어떤 모델로부터 형성되었다고 가정하는 것. 즉, ^yui=f(u,i|θ)라고 가정함
- ˆyui : user u가 item i에 준 예측된 점수값
- θ : model parameters
- f : 함수(θ사용)
○ model의 parameter들(θ)를 추정하기 위해 목적함수를 최적화한다고 할 때, 두 가지 타입의 함수가 있음
● Pointwise loss
- 예측값과 실제값의 차이를 최소화 하는 loss로 학습함
- 모든 관찰 안된 data를 negative 응답으로 함(즉, NaN은(implicit에선 0) item을 좋아하지 않는다는 것으로 판단)
=> 저자가 제기한 문제 발새
□ Pairwise loss
■ observed 요소들은 unobserved 요소보다 더 높은 rank로 되야 함
■ observed된 예측값과 unobserved 예측값의 차이를 극대화 함
Matrix Factorization
○ user와 item을 latent features의 실수 벡터로 연관시키는 방법
● ^yui=f(u,i|pu,qi)=pTuqi=∑Kk=1pukqik
● K : latent space의 차원
● 가정
- 각 latent space 차원은 서로 독립임
- 같은 weight를 가지고 선형 결합함
● MF는 item과 user를 같은 latent 공간에서 mapping하기 때문에 inner product로 두 user간 유사도 측정 가능
- Jaccard coefficient 사용시, 아래 예시를 보면 latent vector를 이용해 user간 유사도를 구했을 때 s23>s12>s13으로 정리되며 각 ui의 vector 값을 그림 (b)로 표현함.
- u4가 추가시 유사도가 s41>s43>s42로 나오게 됨. 하지만 그림 상으로 p_{4}를 1과 가장 가까이 놓게 되면 s43>s42 식이 그림에선 성립하지 않음(가깝게 안됨).
=> 큰 ranking loss 발생시킴
=> 이 점이 바로 user-item 상호관계를 낮은 latent feature를 활용해 고정된 inner product로 유사도를 구하면 발생하는 문제임. 그렇다고 latent feature의 차원을 너무 높이면 overfitting 문제가 발생하게 됨.
=> 저자는 새로운 방법 제안

여기까지가 논문 도입부에 대한 글이었습니다. 다음 시간엔 알고리즘 및 실험 결과에 대해 정리해서 쓰도록 하겠습니다. 감사합니다! 잘못된 부분이나 질문하실 부분 있으시면 말씀해주세요!
'모델 > 추천시스템' 카테고리의 다른 글
Item-Based Collaborative Filtering Recommendation Algorithms (1) (0) | 2020.12.01 |
---|---|
Neural Collaborative Filtering(2) - 알고리즘 및 결과 (0) | 2020.11.15 |
추천시스템 - Incremental Singular Value Decomposition Algorithms(2) (0) | 2020.10.14 |
추천시스템 - Incremental Singular Value Decomposition Algorithms(1) (0) | 2020.10.12 |
추천시스템 - 기초2 (0) | 2020.10.08 |