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

  1. uiu_i와 Positive Item set R(i)\mathcal {R(i)}의 Item Feature xlmx_{lm}를 활용해 Component-Level Attention을 학습하는 단계입니다.

Component-Level :

b(i,l,m)=w2Tϕ(W2uui+W2xxlm+b2)+c2b(i,l,m) = w_2^T \phi(W_{2u}\color{red}{u_i} \color{black} + W_{2x}\color{red}x_{lm}\color{black} + b_2) +c_2

xlmx_{lm} : Positive Item ll 의 Image xx를 ResNet152을 통과시켰을 때 뽑은 feature 중 mm번째의 Component

β(i,l,m)=exp(b(i,l,m))n=1{xl}exp(b(i,l,n))\beta(i,l,m) = \frac{\exp(b(i,l,m))}{\sum_{n=1}^{\left | \left\{ x_{l*} \right\} \right |} \exp(b(i,l,n))} : Softmax ({xl}{\left | \left\{ x_{l*} \right\} \right |} : feature의 개수)

xˉl=m=1{xl}β(i,l,m)xlm\bar{x}_l = \sum_{m=1}^{\left | \left\{ x_{l*} \right\} \right |} \beta(i,l,m) \cdot x_{lm}

1번 User에 대해 [1,2,3] Positive Item set, [4,5] Negative Item set, Test Item [6], 즉 총 6개의 Item이 존재한다고 가정

Component-Level의 결과를 통해 xˉ1\bar{x}_1,xˉ2\bar{x}_2,xˉ3\bar{x}_3을 얻을 수 있습니다.

  1. uiu_i와 Component-Level Attention의 결과 xˉl\bar x_{l}를 활용해 Item-Level Attention을 학습하는 단계입니다.

    Item-Level :

    a(i,l)=w1Tϕ(W1uui+W1xxlˉ+b1)+c1a(i,l) = w_1^T \phi(W_{1u}\color{red}u_i\color{black} +W_{1x}\color{red}\bar{x_l}\color{black} + b_1) +c_1

    α(i,l)=exp(a(i,l))nR(i)exp(a(i,n))\alpha(i,l) = \frac{exp(a(i,l))}{\sum_{n \in \mathcal {R(i)}} exp(a(i,n))} : Softmax

    Item-Level의 결과를 통해 α(1,1)\alpha(1,1), α(1,2)\alpha(1,2), α(1,3)\alpha(1,3)를 얻을 수 있습니다.

  2. plp_l과 Item-Level Attention의 결과 α(i,l)\alpha(i,l)를 통해 uiu_i를 최종 업데이트하는 단계입니다.

    uiu_i^\primeui+lR(i)α(i,l)plu_i + \sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_l

    User ii를 업데이트하기 위해 User의 특성을 학습하는데 도움을 주는 Vector pp를 도입하여 Attention Weight α(i,l)\alpha(i,l)와 Weight Sum 시켜줍니다.

    R^ij=uivjT\hat{R}_{ij} = {u_i}^\prime v_j^T

    업데이트된 uiu_i^\prime vector와 vjv_j vector를 Inner Product하여 Score를 추정합니다.

    Positive Item의 Vector p1,p2,p3p_1,p_2,p_3α(1,1)\alpha(1,1), α(1,2)\alpha(1,2), α(1,3)\alpha(1,3)을 Weight Sum 한 뒤 1번 User에 업데이트 시켜줍니다.

    Score의 다른 관점

    • Vector pp를 따로 정의한 이유는 Score를 구하는 다른 관점을 통해 확인할 수 있습니다.

    R^ij=uivjT=(ui+lR(i)α(i,l)pl)vjT=uivjT+lR(i)α(i,l)plvjT\hat{R}_{ij} ={u_i}^\prime v_j^T= (u_i + \sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_l)v_j^T = u_iv_j^T + \sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_lv_j^T

    • 본 논문에서는 Score R^ij\hat R_{ij}를 Latent Factor Model과 Neighborhood based Model로 나눌 수 있다고 표현했습니다.

    uivjTu_iv_j^T : Latent Factor Model (URN×D,VRM×D(D<min(N,M))(U \in \mathbb {R}^{N \times D}, V \in \mathbb{R}^{M \times D}(D < \min(N,M))

    • User의 개수 N과 Item의 개수 M보다 작은 차원 D를 이용해 User와 Item을 D dimension 상에서 표현되도록 만드는 모델입니다.

    lR(i)α(i,l)plvjT\sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_lv_j^T : Neighborhood based Model (PRM×D,VRM×DP \in \mathbb {R}^{M \times D}, V \in \mathbb {R}^{M \times 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+lR(i)sim(l,j)\hat r_{ij} = b_i + b_j + \sum_{l \in \mathcal{R(i)}} sim(l,j)

    • 일반적으로 Item-based Model은 다음과 같이 Item 끼리의 유사도의 합을 통해 Score를 추정합니다.

    • 이 모델은 Factor 기반 모델이기 때문에 Pearson이나 Cosine Similarity가 아닌 Item Latent Vector끼리의 Inner Product를 통해 Similarity를 계산합니다.

      sim(l,j)=plvjTsim(l,j) = p_l \cdot v_j^T

    • User ii의 Unobserved Item jj의 Score를 추정할 때 Positive Item ll과 Unobserved Item jj를 Inner Product하여 합한 값으로 추정합니다.

    • Test Item 6에 대해 Score를 추정할 때 Positive Item의 Vector p1,p2,p3p_1,p_2,p_3, Test Item의 Vector v6v_6에 대해서 각각 Weight Sum을 통해 r^16\hat r_{16}를 추정할 수 있게 됩니다.

    • 이러한 방식을 활용한 대표적인 모델로는 NSVD가 있습니다.

    • NSVD (=Normalized SVD)

      1R(i)lR(i)sim(l,j)\frac{1}{\left \vert \mathcal {R(i)} \right \vert} \sum_{l \in \mathcal {R(i)}}sim(l,j) (R(i)\left \vert \mathcal{R(i)} \right \vert : User ii의 Positive Item 개수)

      1R(i)\frac{1}{\left\vert \mathcal{R(i)}\right\vert}와 같은 상수를 사용하면 Positive Item의 개수로 나누어 주기 때문에 Score를 추정할 때 모든 Positive Item이 같은 비중으로 예측에 기여됩니다.

      하지만 본 논문에서는 Score를 추정할 때 1R(i)\frac{1}{\left\vert \mathcal{R(i)}\right\vert}과 같은 상수 대신 Attention Weight α(i,l)\alpha(i,l)로 대체하여 User에 따른 Positive Item의 기여도를 각각 다르게 반영하도록 정의했습니다.

      R^ij=uivjT+lR(i)α(i,l)plvjT=(ui+lR(i)α(i,l)pl)vjT=uivjT\hat{R}_{ij} =u_iv_j^T + \sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_lv_j^T= (u_i + \sum_{l \in \mathcal {R}(i)} \alpha(i,l)p_l)v_j^T={u_i}^\prime v_j^T

      결과적으로 Latent Factor Model과 Neighborhood based Model을 혼합하여 활용한 것이 User ii를 업데이트 한 뒤 User Latent Vector와 Item Latent Vector의 Inner Product한 것과 같다는 것을 알 수 있습니다.

Pairwise Learning

  • 업데이트된 uiu_i를 Positive Item Vector vjv_j, Negative Item Vector vkv_k의 Pairwise Learning을 통해 Loss를 계산하는 단계입니다. R^ijk=R^ijR^ik\hat {R}_{ijk} = \hat {R}_{ij} - \hat {R}_{ik} : Positive Item jj를 Negative Item kk보다 더 높은 Score를 가지도록 합니다. argminU,V,P,θ(i,j,k)RBlnσ{R^ijk}+λ(U2+V2+P2)arg \underset {U,V,P,\theta}{\min} \underset{(i,j,k) \in \mathcal{R_B}}{\sum} -ln \sigma \left\{ \hat {R}_{ijk} \right\} + \lambda(\lVert U\rVert^2+\lVert V\rVert^2+\lVert P\rVert^2) ii : User, jj : Interacted Item, kk : Not Observed Item 인트로 부분에서 말한 것처럼 Negative Item을 선호하지 않은 Item, Positive Item을 선호하는 Item이라고 말할 수 없다면, 0과 1을 예측하는 Pointwise Learning보다는 Positive Item jj가 Negative Item kk보다 더 강한 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 적용한 것이 효과가 진짜 존재하는지에 대한 검증 실험

VV : Item

PP : auxiliary Item

UU : User

XX : Content information

Item-Level Test : 다양한 방식을 통해 실험을 진행

a(i)=1R(i)a(i) = \frac{1}{\mathcal {\left \vert R(i) \right \vert}} : None

a(i,l)=w1Tϕ(W1uui+W1vvl+b1)+c1a(i,l) = w_1^T \phi(W_{1u}u_i +W_{1v}\color{red}v_l\color{black} + b_1) +c_1 : U+VU + V

a(i,l)=w1Tϕ(W1uui+W1ppl+b1)+c1a(i,l) = w_1^T \phi(W_{1u}u_i + W_{1p}\color{red}p_l\color{black} + b_1) +c_1 : U+PU+P

a(i,l)=w1Tϕ(W1uui+W1vvl+W1ppl+b1)+c1a(i,l) = w_1^T \phi(W_{1u}u_i +W_{1v}\color{red}v_l\color{black} + W_{1p}\color{red}p_l\color{black} + b_1) +c_1 : U+V+PU+V+P

a(i,l)=w1Tϕ(W1uui+W1vvl+W1ppl+W1xxlˉ+b1)+c1a(i,l) = w_1^T \phi(W_{1u}u_i +W_{1v}\color{red}v_l\color{black} + W_{1p}\color{red}p_l\color{black} + W_{1x}\color{red}\bar{x_l}\color{black} + b_1) +c_1 : U+V+P+XU+V+P+X

α(i,l)=exp(a(i,l))nR(i)exp(a(i,n))\alpha(i,l) = \frac{exp(a(i,l))}{\sum_{n \in \mathcal {R(i)}} exp(a(i,n))} : Softmax

None은 아무것도 넣지 않은 형태입니다. Attention Mechanism를 활용하지 않았기 때문에 User를 업데이트 시켜주는 부분에서 각 Positive Item의 pp Vector가 같은 비중으로 들어가는 것을 확인할 수 있습니다.

uiu_i^\primeui+1R(i)lR(i)plu_i + \frac{1}{\mathcal {\left \vert R(i) \right \vert}}\sum_{l \in \mathcal {R}(i)} p_l

None과 Attention Mechanism이 적용되는 나머지 실험들과 비교하면 Item-Level Attention이 효과가 있다는 것을 확인할 수 있습니다.

또한 V보다 P만을 활용했을 때 더 높은 성능을 보였습니다. 이는 User의 특성을 학습하기 위해 도입했던 개념인 pp vector가 Inner Product를 통해 Score를 추정하기 위해 도입된 vv vector보다 효과적이라는 것을 의미합니다.

Component-Level Test : AVG와 ATT를 통해 실험을 진행

Item-Level이 Attention Mechanism을 적용하지 않았을 때는 첫번째 실험에서 None에 해당합니다. xˉl\bar x_l을 활용하지 않기 때문에 Component-Level은 자동적으로 의미가 없어지게 됩니다. 따라서 둘의 실험 결과가 일치하는 것을 알 수 있습니다.

Item-Level에서 Attention Mechanism을 적용하되 Component-Level에서 Attention Mechanism을 적용하지 않은 케이스는 첫번째 실험에서 마지막 결과인 U+V+P+XU+V+P+X에서 XX부분을 xˉl=m=1{xl}β(i,l,m)xlm\bar{x}_l = \sum_{m=1}^{\left | \left\{ x_{l*} \right\} \right |} \beta(i,l,m) \cdot x_{lm} 대신 xˉl=1{xl}m=1{xl}xlm\bar{x}_l = \frac{1}{\left | \left\{ x_{l*} \right\} \right |} \sum_{m=1}^{\left | \left\{ x_{l*} \right\} \right |} x_{lm} 으로 대체한 것을 말합니다.

Item-Level과 Component-Level 모두 Attention Mechanism을 적용한 결과는 첫번째 실험의 마지막 결과인 U+V+P+XU+V+P+X를 뜻하고 실험 결과 또한 둘이 일치하는 것을 알 수 있습니다.

Component-Level에서 Attention Mechanism을 적용했을 때 성능이 오르는 것을 확인할 수 있습니다.

Dimension에 따른 실험 결과

다른 BaseLine들에 비해서 훨씬 높은 성능을 보이면서 Dimension이 커졌을 때 다른 Baseline에 비해 성능이 훨씬 좋아짐을 확인할 수 있습니다.

학습이 다 끝난 모델과 각 User가 가지고 있는 Positive Item의 개수로 그룹지은 후 각각 성능을 출력한 결과표입니다.

Interacted된 Item의 개수 변화에 상관 없이 모델의 성능은 크게 차이가 없다는 것을 통해 개수가 불충분해도 성능이 다른 BaseLine보다 잘 나오는 것을 확인할 수 있습니다.

profile
https://github.com/MrLee5693

0개의 댓글