논문 간단 리뷰) DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

2022. 11. 13. 14:29관심있는 주제/Recommendation

 

 

Introduction

 

클릭률(CTR) 예측은 추천 시스템에서 매우 중요한데, 여기서 작업은 사용자가 추천 항목을 클릭할 확률을 추정하는 것입니다. 많은 추천 시스템에서 목표는 클릭 수를 최대화하는 것입니다. 따라서 사용자에게 반환되는 항목은 예상 CTR로 순위를 매길 수 있습니다. 반면에 온라인 광고와 같은 다른 애플리케이션 시나리오에서는 수익을 개선하는 것도 중요하므로 모든 후보에서 "입찰"이 이점인 CTR×bid로 순위 전략을 조정할 수 있습니다. 사용자가 항목을 클릭하면 시스템이 수신합니다. 두 경우 모두 CTR을 정확하게 추정하는 것이 핵심입니다.

CTR Prediction 같은 경우, 아이템을 추천해주는 것보다는 특정 아이템에 대해서 클릭 여부가 결정하기 때문에, 상대적으로 새로운 아이템에 영향을 덜 받는 형태이다.

Deep FM도 결국 현재 사용자의 정보와 평가받고자 하는 아이템에 대한 정보만을 사용해서 해당 유저가 해당 아이템을 클릭할지를 예측합니다.

 

많은 사람들이 이야기 하지만, 개인적으로 DeepFM 같은 경우 Wide & Deep 모델을 가지고 가면서, FM을 Cross Product에 추가했다고 말하는 것이 맞다고 본다.

Wide & Deep

 

왼쪽 wide & deep / 오른쪽 DeepFM

이 중에서 cross product을 FM으로 바꾼 것이라고 생각한다.

왼쪽 같은 경우  Cross Product는 임의로 뽑아서 하는 것이라면 FM 모델을 도입해서 스스로 2 변수 간의 상호작용을 학습할 수 있게 된다.

 

FM(Factorization machines)

 

 

위의 수식을 간단히 정리하면 다음과 같은 식으로 구성이 된다.

위의 두 내적 $<v_i , v_j >$ 같은 경우 두 변수의 interaction을 다음과 같이 표현했는데, 이는 $v_i$ , $v_j$ 는 intersection의 latent vector인데, sprae 한 것은 dense 하게 표현함으로써, 독립성이 깨지면서 교호 작용을 학습할 수 있게 된다고 한다.

 

 

Deep FM

 

DeepFM은 sparse feature를 가정하고 FM 모델과 Deep 모델을 같이 고려하는 방식이다.

범주형 변수에 아래와 같은 방식을 도입하면서 연속형 변수에는 선형 모델을 이용해서 구성하면 WIDE & DEEP 가 유사하게 구성할 수 있어 보인다.

 

위의 논문 그림에서는 약간 헷갈리수가 있어서 조금 더 잘 그린 것을 찾으면 다음과 같다.

왼쪽과 오른쪽은 결과적으로는 동일하나, Field를 sparse 하게 구성할 지 아니면 embedding을 하지에 대한 차이 정도로 보인다.

 

 

위의 두 모델을 다양한 방식으로 더하거나 선형 모델을 더 붙이거나 하는 방식으로 CTR을 예측할 수 있다.

 

타 알고리즘과 비교

 

다른 알고리즘과 논문에서 비교한 그림은 다음과 같다.

 

 

다른 알고리즘과 비교했을 때,  DeepFM은 기존 문제점을 해결하기 위한 방법론이라고 주장하고 있다.

특히 Wide & Deep과 거의 유사한대 Factorization Machines의 방법을 도입한 것이 되게 자동으로 feature를 찾아준다는 점에서 좋은 아이디어라고 생각했다.

 

결론

개인적으로 각 변수들간에 교호 작용을 어떻게 자동으로 학습시킬 수 있을까 했는데, FM 방식을 도입하면 그런 문제에서 자동으로 구할 수 있다는 것이 가장 인상적이었다. 

CTR 방식이 가장 추천시스템을 도입하기에는 유저의 정보나 상품의 정보가 잘 정의가 되어있다면 가장 쉽게 구현할 수 있어 보이지만, Cold Start한테 적용하게 좋아 보이고, 이벤트 이력이 있으면 시퀀스 모델과 같이 하면 더 좋아 보인다.

먼가 이것만 봤을 때는 유사한 유저에게 해당 상품을 맨날 똑같은 것을 추천할 것 같은 느낌도 들긴 한다

Ranking을 할 아이템을 잘 뽑아내는 것이 중요해 보인다.

(아마 과거 논문이다보니 이 부분을 해결한 논문이 있을 것 같은데... 논문 이름을 아시는 분이 있다면 댓글에 작성부탁드립니다 :))

 

Reference

https://github.com/shenweichen/DeepCTR

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

https://arxiv.org/abs/1703.04247

728x90