안녕하세요. 이번 시간에는 Neural collaborative Filtering 논문의 도입부에 대한 글을 쓰게 되었습니다. 2017년에 나온 논문으로 2020년 11월 10일 기준, 인용수 1699회를 기록하고 있는 엄청난 논문입니다.
아마 Collaborative Filtering이 딥러닝과 연관된 논문을 보시다보면 한번쯤 볼만한 논문입니다.
참고 자료는 다음과 같습니다.
gombru.github.io/2019/04/03/ranking_loss/
논문의 주요 기여
○ 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 문제가 발생하게 됨.
=> 저자는 새로운 방법 제안
여기까지가 논문 도입부에 대한 글이었습니다. 다음 시간엔 알고리즘 및 실험 결과에 대해 정리해서 쓰도록 하겠습니다. 감사합니다! 잘못된 부분이나 질문하실 부분 있으시면 말씀해주세요!
'모델 > 추천시스템' 카테고리의 다른 글
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 |