[Recommender System / Paper review] #31 Denoising Implicit Feedback for Recommendation
- 논문 링크(89회 인용)
Summary
- noisy implicit feedback을 효과적으로 모델링할 수 있는 방법을 제안한다.
- 학습 중 초기에, false positive의 loss의 영향이 크기 때문에 모델이 잘못된 방향으로 학습될 수 있다는 이전 연구 결과가 있었다.
- 본 논문은 dynamic threshold을 사용해서 implicit feedback이 1인 샘플에 대한 training loss을 효과적으로 통제하고자 한다.
- 학습 초기에 false positive의 training loss 값이 크기 때문에 loss을 truncate하거나 weight하여 그 효과를 줄인다.
- threshold에 따라서 false positive의 loss을 truncate해버리는 방법, weight에 따라 dynamic하게 조절하는 방법을 제안하고 cross entropy loss에 적용한다.
Motivation
- 초기 추천시스템 연구는 영화에 대한 rating과 같은 유저의 직접적인 피드백을 예측하는 방향으로 진행되었고, netflix competition도 이런 연구 흐름의 한 방향이었다.
- 그러나 현실적으로 이런 explicit feedback은 구하기 어려운 경우가 많았고, 이보다는 유저의 구매, 클릭 이력 등과 같은 implicit feedback을 모델링하는 방향으로 연구가 진행되었다.
- 그러나 implicit feedback마저도 정확하지 않다는 지적이 있었다. 기본적으로 유저가 아이템을 구매했다고 그 아이템에 대해 만족을 느끼는 것은 아니기 때문이다. 아이템을 구매해도 실제로 사용해보니 불만족으러울 수도 있다. 문제는, 이런 유저의 만족도를 사후에 알 수 없어서 기본적으로 implicit feedback은 noisy하다는 주장이 있었다.
- 본 논문에서는 추천 시스템에서 noisy implicit feedback을 사용하는 것의 문제점을 분석하고 이에 대한 대안을 제시한다. 이전의 시도들은 유저의 추가적인 피드백을 사용하는 것이었는데, 문제는 이런 데이터도 구하기 힘들어서 sparse하다는 것이다.
- 본 논문에서는 추가적인 피드백을 사용하지 않고도 학습 중의 loss을 조절함으로써 false positive의 loss 값을 줄이는 방법을 제안한다.
- adaptive denoising training (ADT)라는 이름으로 truncated loss, weighted loss을 제안한다.
Approach
Study on false-positive feedback
추천 시스템 분야에서 implicit feedback이 false-positive의 의미를 언제 가질까? implicit feedback은 본질적으로 유저의 선호도가 직접적으로 반영되어 있지 않고 간접적으로 반영되어 있다. 즉, 유저가 아이템을 구매 했다는 사실이 유저가 그 아이템을 선호한다는 사실을 의미하지 않는다. 구매하고 사용해보니 불만족스러울 수도 있기 때문이다. 다만, 이 불만족을 리뷰로 표현하는 사람이 있고 그렇지 않은 사람이 있다. (표현을 안 하는 사람이 훨씬 많다.) 이렇게 false-positive feedback은 데이터가 1로 표시되지만 실제로 유저가 만족하지 않은 경우를 의미한다. 그러면 추천 시스템 분야에서 모델링을 할 때, false-positive의 영향은 어떨까?
- 유저가 별점을 남겼다면 implicit feedback에서 1로 표시되지만, 실제 별점을 3점 이하로 남긴 경우를 false-positive로 보고 이 데이터의 포함 여부에 따라서 성능을 비교해보았다.
- false-positive가 포함되지 않은 clean training의 경우 두 데이터의 모든 지표에서 좋은 성능을 보였다.
- 즉, false-positive가 추천 시스템 모델링의 성능에 중요한 영향을 끼친다는 것이다.
Task Formulation
추천 시스템의 목적은 유저의 피드백으로부터 유저의 선호도를 파악하는 것이다. N명의 유저와 M개의 아이템간에 존재하는 선호도를 scoring function, $\hat{y}_{ui} = f(u,i | \theta)$으로 학습하는 것이다. 보통 유저가 아이템을 존재하는지 그렇지 않은지, 그 여부를 binary cross entropy로 정의하여 아래와 같은 loss을 세운다.
여기서 $y^*_{ui} \in \{ 0,1 \}$은 유저 u가 정말로 아이템 i를 좋아하는지 여부를 나타낸다. 즉, 넷플릭스와 같이 rating 데이터를 의미하는데 보통 이는 얻기가 어려워서 implicit feedback을 사용한다. $\bar{\mathcal{D}} = \{ (u, i, \bar{y}_{ui} ) | u \in \mathcal{u}, i \in \mathcal{I} \}$로 implicit feedback을 구성한다. 여기서 $\bar{y}_{ui}$는 유저 u가 아이템 i와 interaction을 했는지 여부를 의미한다. implicit feedback을 이용한 최적화 식은 $\bar{\theta} = \min \mathcal{L}_{CE} (\bar{\mathcal{D}})$로 정의한다.
implicit feedback을 cross entropy loss에 바로 사용하면 false-positive와 같은 noisy interaction이 바로 모델링에 반영되기 때문에, 본 논문에서는 아래와 같이 한번 denoise function으로 감싼 최적화를 진행한다.
데이터로 표현되지 않지만, 실제로 latently 존재하는 유저의 선호도를 $y^*_{ui}$로, implicit feedback을 이용한 유저의 interaction 여부를 $\bar{y}_{ui}$로 쓰고 마치 분류 문제에서 confusion matrix을 작성하듯이, 아래와 같이 표를 만들 수 있다.
여기서 $y^*_{ui} = 0 \; \wedge \; \bar{y}_{ui} = 1$인 경우가 false-positive인 것이고 본 논문에서는 이 경우를 집중적으로 분석한다. false-negative인 경우를 무시할 수 없는데, 선행 연구에서 false-positive가 training에서 주는 영향도가 더 크다고 했기에, 여기에 힘을 실어서 논의를 전개하는 것이다.
Observations
- iteration에 따른 false-positive / true-positive / total positive interactions의 평균 loss 추이를 살펴본 것이다.
- 왼쪽 그림을 보면 false-positive / true-positive interaction의 loss 모두 iteration이 지남에 따라서 수렴함을 알 수 있다.
- 이는 deep learning의 memorization behavior을 보여주는 것이다. 모든 샘플의 패턴을 학습하는 것이다.
- 다만, false-positive interaction은 애초에 유저가 비선호하는 아이템인데 이를 선호한다고 학습하는 것이므로, 모델의 성능이 떨어질 우려가 있다.
- 오른쪽 그림을 보면, 학습 초기에 false-positive interaction의 loss가 true-positive보다 확실히 큰 것을 알 수 있다.
- loss가 작다는 것은 모델이 잘 맞춘다는 것이고 크다는 것은 모델이 잘 못 맞춘다는 것이다. 즉, 학습 초기에는 false-positive interactions이 memorize하기 훨씬 힘들다는 것이다.
- 문제는 이 큰 loss도 결국 수렴한다는 것인데 이러면 잘못된 방향으로 학습이 되는 것이다.
- 이런 관찰을 통해, 학습 초기에 false-positive interactions의 loss 값을 줄여야 효과적인 학습을 할 수 있을 것이라고 예상할 수 있다.
Adaptive denoising training
위의 observations에서 보았듯이, false-positive interactions은 학습 초기에 large loss을 가지기 때문에 궁극적으로 모델의 성능을 떨어뜨릴 수 있다. 따라서 본 논문에서는 ADT 학습 기법을 통해 large loss을 가지는 interactions을 discard하거나 reweigh한다. ADT는 loss 값 자체를 dynamically pruning하는 것이기 때문에 loss function에 상관 없이 적용될 수 있다. 본 논문에서는 cross entropy loss에 적용해본다.
Truncated cross entropy loss (T-CE)
T-CE는 아래와 같이 정의된다.
implicit feedback이 1이고, loss 값이 threshold인 $\tau$ 값을 넘으면 해당 loss을 0으로 truncate해버린다. 하지만 loss가 iteration이 지남에 따라 줄어들기 때문에, fixed threshold을 적용하는 것은 적절하지 않을 수 있다. 이러한 이유로, iteration T에 따라서 dynamically 변화하는 $\tau(T)$을 정의해야한다. 게다가, 데이터마다 loss values는 모두 다르다. 따라서 drop rate인 $\epsilon(T)$을 정의해야한다. 논문에 따르면 $\epsilon(T)$는 다음의 특징을 가져야 한다. 1) 모든 loss가 버려지지 않도록 upper limit이 있어야 한다. 2) 학습 초기에 모든 interactions이 허용되도록 $epsilon(0) = 0$으로 정의한다. 3) zero 부터 upper bound까지 smoothly increase해야 한다.
종합적으로 고려하여, drop rate function을 아래와 같이 정의한다.
T-CE loss을 이용한 학습 알고리즘은 아래와 같다.
Reweighted cross-entropy loss (R-CE)
T-CE가 loss 값을 0으로 truncate하는 방법이라면, R-CE는 hard positive interactions의 weight을 조절한다.
$\omega(u,i)$는 아래의 특징을 가지도록 요구된다. 1) 훈련 기간 중 dynamically weight을 조절한다. 2) hard interaction의 영향을 줄여야 한다. 3) 다른 모델과 데이터세트에 적용될 수 있도록 weight을 조절한다.
focal loss의 아이디어에 착안하여, $\omega(u,i)$을 prediction score인 $\hat{y}_{ui}$을 이용한다.
- $\beta \in [0, +\infty]$는 weight의 범위를 조절하는 hyper-parameter이다.
- prediction score가 작다면, positive implicit feedback의 경우에 CE loss가 클 것이다. ADT의 목적이 큰 loss을 작게 만드는 것이므로, $\omega$는 작아질 것이다. (0과 1사이의 값 중, 0에 가까울 수록 거듭제곱하면 작아짐) 이를 통해 false-positive의 loss 영향도를 낮추는데 기여할 수 있다.
- negative implicit feedback인데, 못 맞춘 경우에는 어떻게 될까? 이 경우 loss values가 커질텐데 (못맞췄으므로) 위의 weight을 사용하면 오히려 이 값이 더 커지는 상황이 발생한다.
- negative implicit feedback은 positive라고 맞춘 상황이고, 이는 곧 $\hat{y}_{ui}$을 크게 계산한 결과이다.
- 이런 상황에서 $\hat{y}_{ui}$마저 거듭제곱해버리면, 더 큰 값을 곱하는 것이므로 false-negative의 large loss value가 더 커지는 것이다.
- 이런 상황을 방지하기 위해 최종적으로 아래와 같이 loss을 정의한다.
Experiment
사용 데이터
- adressa: 체류 시간이 10초 이하인 샘플은 false-positive interaction으로 정의한다.
- amazon book: rating이 3점 이하인 샘플은 false-positive interaction으로 정의한다.
- yelp: 3점 이하인 샘플은 false-positive interaction으로 정의한다
비교 모델
- GMF
- NeuMF
- CDAE
- 일반 loss을 사용한 것과 비교해보면, T-CE, R-CE을 사용했을 때 성능이 더 좋다
- 특히, 대부분의 데이터에서 R-CE보다 T-CE을 사용했을 때 성능이 더 좋다.
- 전체적으로 CDAE의 성능이 GMF, NeuMF보다 성능이 더 좋다. 아무래도 noisy implicit feedback을 고려한 방법이기 때문에 성능이 더 높게 나온 것으로 보인다.
Performance comparison w.r.t. interaction sparsity
- 추천 시스템에서 interactions이 적은 유저에 대한 추천 결과가 좋은지 확인하는 것은, 모델의 신뢰도를 높이는 검증 방법이다.
- 본 논문에서도 이와 비슷한 것을 했는데, 유저의 interactions 수에 따라 그룹을 만들고 성능을 비교했다.
- inactive 집단에서도 ADT을 사용했을 때 더 좋은 결과를 보였다.
Memorization of false-positive interactions
- normal training에서는 false-positive loss가 처음에는 컸지만 iteraction이 진행될수록 수렴됨을 확인했다.
- T-CE의 경우를 보면, false-positive loss가 줄어들지 않고 커짐을 알 수 있다. loss가 커진다는 것은 모델이 해당 샘플에 대해 학습을 잘 못한다는 것이다. false-positive은 애초에 noisy하기 때문에 샘플 그대로 학습하면 안 된다. 따라서 (b)와 같이 loss가 증가하는 것 자체가 모델의 성능이 유지된다는 뜻이다.
- R-CE 결과를 보면, T-CE만큼 드라마틱하게 loss가 증가하지 않고 감소하지만, 그래도 all training interactions의 경우보다 항상 높은 loss을 유지함을 알 수 있다.
- T-CE의 경우, loss가 증가하는데 이런 모습 때문에 T-CE가 R-CE보다 더 좋은 성능을 냄을 유추할 수 있다.
Conclusion
- 오랜만에 논문을 정리했는데, 상당히 흥미로운 내용이었다.
- implicit feedback이 기본적으로 noisy함을 인정하고, 이를 해결하기 위한 연구를 진행했다. 주목할만한점은, 추가적인 유저의 데이터를 사용하지 않고 오직 학습 중에 모든 것을 해결했다는 것이다.
- 추가적으로, 특정 방법이나 loss function에 국한된 것이 아니라 모든 추천시스템 방법에 적용할 수 있고 심지어 추천 시스템이 아니더라도 다른 ml의 loss에 적용할 수 있다.
- 나중에 모듈로 만들고 필요할 때마다 ADT loss을 적용할 수 있도록 개발하면 좋을 것 같다.