본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day32] Collaborative Filtering 4-3 Bayesian Personalized Ranking

Bayesian Personalized Ranking : BPR

implicit feedback를 사용해 MF를 학습할 수 있다.

베이지안 추론에 기반해서 implicit data로 서로 다른 아이템에 대한 유저의 선호도를 반영한다.

 

Personalized Ranking

사용자에게 ranking이 있는 아이템 리스트를 제공하는 문제 (=아이템 추천 문제)

유저가 아이템 i보다 아이템 j를 좋아한다는 정보를 이용해서 MF의 파라미터를 학습한다.

이 정보가 해당 유저의 personalized ranking이다.

 

사용자의 클릭이나 로그는 implicit data이기 때문에 선호도가 분명하게 드러나지 않다.

 

상호작용하지 않은 아이템에 대한 것은 관측데이터가 없어서 밑의 두 가지로 고려할 수 있다

  1. 유저가 아이템에 관심이 없다
  2. 유저가 아직 아이템을 모른다

그래서 유저의 아이템에 대한 선호도 랭킹을 생성해서 MF의 학습 데이터로 사용한다.

 

접근

  • 관측된 item을 관측되지 않은 item보다 선호
  • 관측된 아이템끼리는 누가 더 선호한다고 말할 수 없기 때문에 선호도를 추론하지 않는다.
  • 관측되지 않은 아이템끼리 선호도를 추론하지 않는다.

유저-아이템 행렬을 유저별로 선호도 정보를 생성한다. 

유저 $u_1$은 2,3은 선호하지만 1,4아이템에 대해서는 관측된 것이 없다. 유저 $u_1$의 행렬은 위의 사진에서 오른쪽 위의 행렬이다.

선호도를 비교할 수 있는 것은 + > ? 뿐이고  +와 +, ?와 ?는 선호도를 비교할 수 없다. 그러면 관측하지 않았던 ?에 대해서도 +와 비교당하면서 정보가 부여되었다! 그래서 관측하지 않았던 아이템들에 대해서도 ranking을 할 수 있다.

 

학습 데이터 생성

학습데이터 $D_s$

$$D_s:= \{(u,i,j)|i\in I_u^+ \wedge j\in I \backslash I_u^+ \}$$

  • $l_u^+$ : 유저 u가 선호하는 아이템 집합
  • $l\backslash l_u^+$ : (전체 아이템 집합) 차집합 (유저 u가 선호하는 아이템 집합) = 유저 u가 선호하지 않는 집합= 관측되지 않은 아이템 집합

유저 한명에 대해서 선호하는 아이템 i와 관측하지 않은 아이템j로 이루어진 집합으로 학습데이터를 만드는데, 이 집합을 triples 집합이라고 부른다.

 

위의 예시에서 유저 $u_1$의 선호도 데이터에서만 보면 4개의 유의미한 데이터가 학습데이터에 들어간다

$$i_2>_{u1}i_1,\quad i_3>_{u1}i_1, \quad i_2>_{u1}i_4,\quad i_3>_{u1}i_4$$

 

최대 사후 확률 추정 : Maximum A Posterior : MAP

이제 학습데이터로 파라미터 학습을 수행한다. 크게 MLE와 MAP가 있다. 그중 MAP를 살펴보자.

MAP는 베이지안 개념이 사용된다. 사후확률이 최대확률이 되는 파라미터를 찾는 것이다.

 

사후확률을 바로 구할 수 없기 때문에 bayesian 정리로 선회해서 구한다.

$p(\Theta |>_u) $(사후 확률)$\propto p(>_u|\Theta)$(가능도) $p(\Theta)$(사전 확률)

 

사전 확률과 가능도는 가정과 계산을 통해서 얻을 수 있기 때문에 사후확률을 수식으로 표현할 수 있다. 사후확률을 최대화하면 정보를 잘 나타내는 파라미터를 추정하게 된다.

 

  • 사후확률 : posterior
    주어진 유저의 선호 정보에 대한 파라미터의 확률
  • 사전확률 : prior
    학습할 파라미터에 대한 사전 정보 확률
    어떤 분포를 따른다는 가정을 통해 나타내는데 보통 정규분포를 사용한다.
    우리가 사용하는 학습 파라미터는 벡터이기 때문에 정규분포도 행렬로 정의한다.
    • 평균 : 0
    • 공분산 행렬 $\sum_{\theta} = \lambda_{\Theta}I$
      ※$I$ = 단위행렬
      모델링 할 때 정의하는 하이퍼 파라미터이다
      공분산 행렬의 크기($\lambda_\Theta$)가 정규화 역할을 수행한다. 
  • 가능도 : likelihood $p(>_u|\Theta)$
    파라미터를 고정했을 때 유저의 선호 정보 확률
    MF의 예측 수식이 사용된다.

    유저가 item i를 item j보다 선호할 확률을 MF 수식을 사용해서 표현한다. 확률은 0~1 사이이기 때문에 sigmoid($\sigma(x):=\frac{1}{1+e^{-x}}$)를 사용한다. 최종적으로 유저 u가 item i가 j보다 선호할 확률을 모두 곱한 값이 전체 data에 대한 likelihood가 된다.
    $$\prod_{u\in U}p(>_u|\Theta) = \prod_{u, i, j\in D_s}p(i>_u j)=\prod_{u, i, j\in D_s}\sigma(\widehat{x_{uij}}(\Theta))$$
    • $\widehat{x_{uij}}$
      MF에 의한 평점 예측에 의해서 유저 u의 item i에 대한 평점 예측값과 item j에 대한 평점 예측값의 차
    • $\widehat{r}_ui$
      유저 u의 item i에 대한 평점 예측값
    • $\widehat{r}_uj$
      유저 u의 item j에 대한 평점 예측값 

BPR 목적함수

BPR-OPT $:= \ln p(\Theta | >_{u}) = \displaystyle\sum_{(u,i,j)\in D_{s}} \ln \sigma(\hat{x}_uij)-\lambda_{\Theta}\parallel\Theta\parallel^2$

뒤의 $\theta_{\Theta}\parallel\Theta\parallel^2$ term이 L2 regularization처럼 작동하고

앞의 term $\displaystyle\sum_{(u,i,j)\in D_{s}} \ln \sigma(\hat{x}_uij)$이 likehood이다.

 

LearnBPR

목적함수는 미분가능하기 때문에 학습파라미터로 gradient를 구해 GD를 수행할 수 있다.

$$\frac{\partial BPR-OPT}{\partial\Theta} = \displaystyle\sum_{(u,i,j) \frac{\partial}{\partial\Theta} \in D_{s}} \ln \sigma(\hat{x}_uij)-\lambda_{\Theta}\frac{\partial}{\partial\Theta}\parallel\Theta\parallel^2$$

$$\Theta \leftarrow \Theta -\alpha\frac{\partial BPR-OPT}{\partial\Theta}$$

 

하지만 이 문제에서는 일반적인 GD가 적절하지 않고 Learn BPR을 사용해야한다. Learn BPR은 bootstrap기반의 SGD이다. 

 

유저의 선호정보를 사용하여 만든 학습정보

$D_s:= \{(u,i,j)|i\in I_u^+ \wedge j\in I \backslash I_u^+ \}$를 사용한다.

 

보통 관측한 아이템<관측하지 못한 아이템 이기 때문에 모든 학습데이터를 사용하면 학습의 비대칭이 발생한다. 그래서 이것을 triples단위로 랜덤 샘플링해서 사용한다.

그래서 선호하는 아이템 i 하나, 선호하지 않는 아이템 j 하나를 동일한 weight로 sample해서 동일한 u, i 가 계속 등장하지 않게 한다. 

 

그래서 Learn BPR을 MF모델에 적용하면 학습 파라미터인 $p_u$와 $q_i$를 업데이트 해야한다.

 

그래서 $p_u$와 $q_i$에 따라서 수식이 다음과 같아진다.