Attentive Collaborative Filtering
추천시스템에서 Click, View, Play 등 많은 부분에 있어서 Implicit 형태의 데이터들이 존재합니다. 이런 데이터는 binary, 즉 0,1(= Negative, Positive)과 같은 형태로 존재하는데 이 때 나누는 기준은 User와 Item의 Interaction 유무입니다.
Negative ≠ Not Prefer → Negative = (Unobserved(=Missing values) or Not Prefer)
Positive ≠ Prefer → Positive = (Observed(=Interacted) or Prefer)
Positive Item은 항상 선호 Item을 의미하는 것은 아니지만 많은 결측치를 포함하는 Negative Item보다 User의 특성을 더 많이 반영한다고 할 수 있습니다.
따라서 본 논문에서는 각 User가 가지고 있는 Positive Item을 통해서 User만의 특성을 표현하려고 시도했습니다.
그러나 방금 말했듯이 Positive Item이 항상 선호 Item을 의미하는 것이 아니기 때문에 이러한 User의 특성을 더 세분화하여 표현하기 위해 Image와 같은 Feature를 활용합니다. 이는 서로 다른 User가 같은 Item을 선호한다고 해서 해당 Item의 모든 부분에서 선호도가 같다고 할 수 없는 아이디어에서 출발해 User의 특성을 표현할 때 이 부분을 고려하지 않는 것보다 효과적일 것이라 가정했습니다.
하지만 User의 Item에 대한 Interaction은 정의되어 있지만 User의 Positive Item Feature에 대해선 Ground-Truth가 정의되어 있지 않아 학습하는데 어려움이 존재합니다.
따라서 본 논문에서는 Attention Mechanism을 적용하여 User의 Feature에 대한 선호도 또한 모델을 통해 학습하고자 했습니다.
결론적으로 Implicit Data를 통해서도 User, Item의 선호도를 충분히 잘 표현하도록 만드는 것이 목적입니다.
Architecture
User Update
- ui와 Positive Item set R(i)의 Item Feature xlm를 활용해 Component-Level Attention을 학습하는 단계입니다.
Component-Level :
b(i,l,m)=w2Tϕ(W2uui+W2xxlm+b2)+c2
xlm : Positive Item l 의 Image x를 ResNet152을 통과시켰을 때 뽑은 feature 중 m번째의 Component
β(i,l,m)=∑n=1∣{xl∗}∣exp(b(i,l,n))exp(b(i,l,m)) : Softmax (∣{xl∗}∣ : feature의 개수)
xˉl=∑m=1∣{xl∗}∣β(i,l,m)⋅xlm
1번 User에 대해 [1,2,3] Positive Item set, [4,5] Negative Item set, Test Item [6], 즉 총 6개의 Item이 존재한다고 가정
Component-Level의 결과를 통해 xˉ1,xˉ2,xˉ3을 얻을 수 있습니다.
-
ui와 Component-Level Attention의 결과 xˉl를 활용해 Item-Level Attention을 학습하는 단계입니다.
Item-Level :
a(i,l)=w1Tϕ(W1uui+W1xxlˉ+b1)+c1
α(i,l)=∑n∈R(i)exp(a(i,n))exp(a(i,l)) : Softmax
Item-Level의 결과를 통해 α(1,1), α(1,2), α(1,3)를 얻을 수 있습니다.
-
pl과 Item-Level Attention의 결과 α(i,l)를 통해 ui를 최종 업데이트하는 단계입니다.
ui′ ← ui+∑l∈R(i)α(i,l)pl
User i를 업데이트하기 위해 User의 특성을 학습하는데 도움을 주는 Vector p를 도입하여 Attention Weight α(i,l)와 Weight Sum 시켜줍니다.
R^ij=ui′vjT
업데이트된 ui′ vector와 vj vector를 Inner Product하여 Score를 추정합니다.
Positive Item의 Vector p1,p2,p3와 α(1,1), α(1,2), α(1,3)을 Weight Sum 한 뒤 1번 User에 업데이트 시켜줍니다.
Score의 다른 관점
- Vector p를 따로 정의한 이유는 Score를 구하는 다른 관점을 통해 확인할 수 있습니다.
R^ij=ui′vjT=(ui+∑l∈R(i)α(i,l)pl)vjT=uivjT+∑l∈R(i)α(i,l)plvjT
- 본 논문에서는 Score R^ij를 Latent Factor Model과 Neighborhood based Model로 나눌 수 있다고 표현했습니다.
uivjT : Latent Factor Model (U∈RN×D,V∈RM×D(D<min(N,M))
- User의 개수 N과 Item의 개수 M보다 작은 차원 D를 이용해 User와 Item을 D dimension 상에서 표현되도록 만드는 모델입니다.
∑l∈R(i)α(i,l)plvjT : Neighborhood based Model (P∈RM×D,V∈RM×D)
-
두 모델 모두 같은 Latent Space로 보내 직접적인 비교가 가능하도록 Factor 기반 모델들을 활용했습니다.
-
둘의 차이점은 전자는 User와 Item의 곱으로 표현되는데 후자는 User와 Item의 곱이 아닌 Item끼리의 곱을 통해 학습한다는 점입니다.
-
후자는 User의 Positive Item과 전체 Item과의 유사도를 계산하여 Unobserved Item에 대한 Score를 추정합니다.
-
ACF에서의 Neighborhood based Model은 Factored Item-Item Collaborative Filtering Method를 변형하여 활용했습니다.
r^ij=bi+bj+∑l∈R(i)sim(l,j)
-
일반적으로 Item-based Model은 다음과 같이 Item 끼리의 유사도의 합을 통해 Score를 추정합니다.
-
이 모델은 Factor 기반 모델이기 때문에 Pearson이나 Cosine Similarity가 아닌 Item Latent Vector끼리의 Inner Product를 통해 Similarity를 계산합니다.
sim(l,j)=pl⋅vjT
-
User i의 Unobserved Item j의 Score를 추정할 때 Positive Item l과 Unobserved Item j를 Inner Product하여 합한 값으로 추정합니다.
-
Test Item 6에 대해 Score를 추정할 때 Positive Item의 Vector p1,p2,p3, Test Item의 Vector v6에 대해서 각각 Weight Sum을 통해 r^16를 추정할 수 있게 됩니다.
-
이러한 방식을 활용한 대표적인 모델로는 NSVD가 있습니다.
-
NSVD (=Normalized SVD)
∣R(i)∣1∑l∈R(i)sim(l,j) (∣R(i)∣ : User i의 Positive Item 개수)
∣R(i)∣1와 같은 상수를 사용하면 Positive Item의 개수로 나누어 주기 때문에 Score를 추정할 때 모든 Positive Item이 같은 비중으로 예측에 기여됩니다.
하지만 본 논문에서는 Score를 추정할 때 ∣R(i)∣1과 같은 상수 대신 Attention Weight α(i,l)로 대체하여 User에 따른 Positive Item의 기여도를 각각 다르게 반영하도록 정의했습니다.
R^ij=uivjT+∑l∈R(i)α(i,l)plvjT=(ui+∑l∈R(i)α(i,l)pl)vjT=ui′vjT
결과적으로 Latent Factor Model과 Neighborhood based Model을 혼합하여 활용한 것이 User i를 업데이트 한 뒤 User Latent Vector와 Item Latent Vector의 Inner Product한 것과 같다는 것을 알 수 있습니다.
Pairwise Learning
- 업데이트된 ui를 Positive Item Vector vj, Negative Item Vector vk의 Pairwise Learning을 통해 Loss를 계산하는 단계입니다. R^ijk=R^ij−R^ik : Positive Item j를 Negative Item k보다 더 높은 Score를 가지도록 합니다. argU,V,P,θmin(i,j,k)∈RB∑−lnσ{R^ijk}+λ(∥U∥2+∥V∥2+∥P∥2) i : User, j : Interacted Item, k : Not Observed Item 인트로 부분에서 말한 것처럼 Negative Item을 선호하지 않은 Item, Positive Item을 선호하는 Item이라고 말할 수 없다면, 0과 1을 예측하는 Pointwise Learning보다는 Positive Item j가 Negative Item k보다 더 강한 Interaction을 가지도록 학습하는 Pairwise Learning이 Implicit Data에 더 적합하다고 말할 수 있습니다.
- 예시 정리
예시를 통해 설명하면 다음과 같습니다.
- Line 3을 통해 User 1, Positive Item 1, Negative Item 4를 뽑습니다.
- Line 4부터 8까지 User 1의 Positive Item set [1,2,3]의 Item들을 활용해 Component-Level Attention과 Item-Level Attention을 거쳐 Attention Weight $\alpha(1,1),\alpha(1,2),\alpha(1,3)$을 구합니다.
- Line 9에서 볼 수 있듯이 User 1를 업데이트 시킨 뒤, Line 10을 통해 Positive Item 1의 Score와 Negative Item 4의 Score의 차이를 최대화하도록 학습을 진행합니다.
- 위 과정을 반복하면서 학습을 진행합니다.
실험
Datasets
Pinterest : Image Recommendation dataset
User : 50,000 : Interaction이 적은 User는 모두 제외
Item : 14,965
Vine : Video Recommendation dataset
User : 18,017
Item : 16,243
leave one out 방식으로 Train data와 가장 최근의 Interaction을 가지는 Test data로 나눴으며 Hit Ratio@100, nDCG@100로 성능을 평가했습니다.
Level 별로 Attention 적용한 것이 효과가 진짜 존재하는지에 대한 검증 실험
V : Item
P : auxiliary Item
U : User
X : Content information
Item-Level Test : 다양한 방식을 통해 실험을 진행
a(i)=∣R(i)∣1 : None
a(i,l)=w1Tϕ(W1uui+W1vvl+b1)+c1 : U+V
a(i,l)=w1Tϕ(W1uui+W1ppl+b1)+c1 : U+P
a(i,l)=w1Tϕ(W1uui+W1vvl+W1ppl+b1)+c1 : U+V+P
a(i,l)=w1Tϕ(W1uui+W1vvl+W1ppl+W1xxlˉ+b1)+c1 : U+V+P+X
α(i,l)=∑n∈R(i)exp(a(i,n))exp(a(i,l)) : Softmax
None은 아무것도 넣지 않은 형태입니다. Attention Mechanism를 활용하지 않았기 때문에 User를 업데이트 시켜주는 부분에서 각 Positive Item의 p Vector가 같은 비중으로 들어가는 것을 확인할 수 있습니다.
ui′ ← ui+∣R(i)∣1∑l∈R(i)pl
None과 Attention Mechanism이 적용되는 나머지 실험들과 비교하면 Item-Level Attention이 효과가 있다는 것을 확인할 수 있습니다.
또한 V보다 P만을 활용했을 때 더 높은 성능을 보였습니다. 이는 User의 특성을 학습하기 위해 도입했던 개념인 p vector가 Inner Product를 통해 Score를 추정하기 위해 도입된 v vector보다 효과적이라는 것을 의미합니다.
Component-Level Test : AVG와 ATT를 통해 실험을 진행
Item-Level이 Attention Mechanism을 적용하지 않았을 때는 첫번째 실험에서 None에 해당합니다. xˉl을 활용하지 않기 때문에 Component-Level은 자동적으로 의미가 없어지게 됩니다. 따라서 둘의 실험 결과가 일치하는 것을 알 수 있습니다.
Item-Level에서 Attention Mechanism을 적용하되 Component-Level에서 Attention Mechanism을 적용하지 않은 케이스는 첫번째 실험에서 마지막 결과인 U+V+P+X에서 X부분을 xˉl=∑m=1∣{xl∗}∣β(i,l,m)⋅xlm 대신 xˉl=∣{xl∗}∣1∑m=1∣{xl∗}∣xlm 으로 대체한 것을 말합니다.
Item-Level과 Component-Level 모두 Attention Mechanism을 적용한 결과는 첫번째 실험의 마지막 결과인 U+V+P+X를 뜻하고 실험 결과 또한 둘이 일치하는 것을 알 수 있습니다.
Component-Level에서 Attention Mechanism을 적용했을 때 성능이 오르는 것을 확인할 수 있습니다.
Dimension에 따른 실험 결과
다른 BaseLine들에 비해서 훨씬 높은 성능을 보이면서 Dimension이 커졌을 때 다른 Baseline에 비해 성능이 훨씬 좋아짐을 확인할 수 있습니다.
학습이 다 끝난 모델과 각 User가 가지고 있는 Positive Item의 개수로 그룹지은 후 각각 성능을 출력한 결과표입니다.
Interacted된 Item의 개수 변화에 상관 없이 모델의 성능은 크게 차이가 없다는 것을 통해 개수가 불충분해도 성능이 다른 BaseLine보다 잘 나오는 것을 확인할 수 있습니다.