딥러닝을 이용한 CTR예측 모델을 알아보자
CTR Prediction with Deep Learning
CTR : Click-Through Rate Prediction
유저가 주어진 아이템을 클릭할 확률
광고같은 현실의 CTR데이터를 기존의 선형모델로 예측하는데는 한계가 있다. sparse하고 많은 feature를 가져서 차원이 높으며, feature간의 관계가 비선형적으로 결합되어 있는 데이터여서 문제를 해결하기는 어렵다. 그래서 이런 데이터에 효과적인 딥러닝 모델을 적용했다.
Wide & Deep
선형 모델과 비선형 모델이 가진 장점을 결합한 논문(모델)이다. google play store에서 사용자가 검색한 query에 대해서 앱을 추천해주는데 사용된다.
등장 배경
- Memorization : 암기
우리가 가진 학습 데이터에 자주 등장했던 패턴들을 외워서 예측에 활용한다. 아이템 혹은 특성 관계를 과거의 데이터로부터 학습한다.
- Logistic regression과 같은 선형 모델에서 보인다.
- 모델이 단순한만큼 학습을 통한 파라미터의 수렴이 빠르다.
- feature을 추가하는등 확장이나 해석에도 용이하다.
- 하지만 기존 학습 데이터에 없었던 것에 대해서는 제대로 확률을 구하지 못한다.
- Generalization : 일반화
드물게 발생하는 아이템/특성 조합을 기존 관계로부터 발견한다.- FM, DNN과 같은 임베딩 기반 모델
- 임베딩을 사용해서 각각의 feature를 표현한다.
- 두 feature의 상호작용은 두 feature의 임베딩이 곱해지며 계산된다.
위의 memorization과 generalization의 특징을 둘 다 결합한 모델이 wide & deep 이다.
Wide & Deep= Cross-Product Transformation(Wide component) + Deep Neural Network(Deep component)
Wide Component
Memorization 담당
기본적인 선형모델인 logistic regression과 비슷하다.
- n
입력 변수의 갯수 - $w=[w_1, \dotsb, w_n]$
입력 변수에 해당하는 파라미터 - x
입력 변수, feature
$$y=W^TX+b\quad(W=[w_1,\dots,w_n], X=[x_1,\dots,x_n],b\in\mathbb{R})$$
이렇게 선형으로 모델링하게 되면 서로 다른 두개의 변수에 대한 interaction을 학습할 수 없다. 그래서 변수 사이의 interaction을 표현하기 위해서 cross-product transformation을 사용한다.
예를 들어
성별 | 언어 | -> | 성별1,언어2 |
1 | 2 | -> | 2 |
성별과 언어가 다른 feature이지만 둘을 cross product한 term을 모델에 하나 더 추가해주게 된다. 이 cross product를 해서 만들어지게 된 feature을 일반화해서 $\phi_k$라고 표현한다. 그래서 학습할 때 $\phi_k$에 해당하는 파라미터도 모델에 추가해서 학습한다.
$$\phi_k(x) = \prod_{i=1}^{d}x_i^{c_{ki}}\quad c_{ki}\in\{0,1\}$$
하지만 모든 변수 사이의 cross product를 추가하게 되면 너무 변수들이 많아지게 되기 때문에 이 논문에서는 주요 feature 2개에 대한 2차 cross product만을 사용했다.
사실 이 모델링은 2차 polynomial항을 logistic regressinon에 추가한 것과 거의 동일하다.
[Day37] Context-aware Recommendation 8-1 What is Context-aware Recommendation
유저와 아이템 사이의 상호작용말고 다양한 context 정보를 사용하는 모델들을 알아보자 추천 시스템에서 사용하는 정보 유저 관련 정보 유저 ID는 제외한다 ex) 성별, 연령 아이템 관련 정보 아이
chae52.tistory.com
polynomial model에서는 두 개의 서로 다른 변수에 해당하는 학습 파라미터를 정의해서 두 변수 사이의 interaction을 표현하였다. 학습 weight가 $n^2$만큼 늘어난다.
Deep Component
Generalization 담당
Feed-Forward neural network를 사용했다.
3 layer로 구성되어 있고 각 layer에 대해서 ReLU를 사용했다. 연속형 변수는 그대로 사용하고, 카테고리형 변수는 feature embedding을 하고 전제를 dense embeddings에서 concatenate하여 사용한다.
Wide & Deep 전체 구조
Wide component 2개와 deep component 1개를 합쳐서 Wide & deep 모델이 완성된다.
$$P(Y=1\mid x)=\sigma(w_{wide}^T[x,\phi(x)] + w_{deep}^Ta^{(lf)}+b)$$
$w_{wide}^T[x,\phi(x)]$이 wide component, $w_{deep}^Ta^{(lf)}+b$이 deep component이다.
- x
주어진 n개의 변수 - $\phi(x)$
변수 사이의 cross product한 tranformation
2개의 변수에 대해서만 cross product한 변수만을 추가한다.
$w_{deep}^Ta^{(lf)}+b$은 Deep component의 MLP을 일반화해서 나타내었다.
wide component와 deep component의 최종 출력값을 더하고 bias를 추가해서 sigmoid를 하면 클릭 여부가 완성된다.
모델 성능
성능을 online metric과 offline metric 으로 비교했다.
wide모델만 사용하면 offline에서 좀 더 좋은 성능을 보이고, online serving에서는 deep 모델이 더 좋았다. 하지만 wide&deep은 둘다 좋은 성능을 보였다.
DeepFM
Factorization모델에 딥러인 구조를 추가했다. 그래서 좀 더 복잡한 상호작용을 캡쳐할 수 있다.
Wide & Deep 과 달리 FM component와 Deep component가 모두 하나의 입력값을 공유해서 따로 feature engineering이 필요없는 end-to-end방식의 모델이다.
추천시스템에서는 implicit feature interaction을 학습하는 것이 중요하다. 예를 들어 '10대 남성은 슈팅게임을 선호'한다는 정보를 모델링 하기 위해서는 1)10대 2)남성 3)슈팅게임 이라는 3개의 feature(order-3 interaction)가 동시에 interaction했을 때 CTR이 높아진다는 것을 모델링해야한다.
기존의 CTR예측 모델들은 low-order나 high-order 한 쪽에만 강한 특징을 보여왔었다. Wide & Deep은 이 둘을 통합했지만, Wide component에서 cross-product 같은 feature engineering이 추가적으로 필요하다. 그래서 Wide & Deep의 wide component대신에 FM 모델을 wide component로 대체해서 사용한 것이 DeepFM이다. FM에는 두 변수사이의 second-order interaction이 표현되어 있기 때문에 feature engineering이 따로 필요없다.
DeepFM=Factorization Machine(Wide component) + Deep Neural Network(Deep component)
FM Component (=DeepFM에서의 Wide component)
FM Formula에서 사용하는 식을 동일하게 사용한다.
[Day37] Context-aware Recommendation 8-2 : FM & FFM
Factorization Machines SVM과 MF의 장점을 결합 커널 공간을 사용한 non-linear dataset에 대해서 SVM이 ML 모델중에 가장 사용되는 모델이었다. 그럼에도 CF환경(유저와 아이템에 대한 평점예측)에서는 MF계열
chae52.tistory.com
$$\hat{y}(x)=w_0+\sum_{i=1}^{n}w_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^{n}\left<v_i, v_j \right> x_ix_j, \quad w_0\in\mathbb{R}, w_i\in\mathbb{R}, v_i\in\mathbb{R}^k$$
각 Field(Field i, Field j)들은 하나의 feature를 의미한다. DeepFM에서는 sparse 한 feature로 구성하고 있다.
Addition으로 연결되는 선들은 1차 term $\sum_{i=1}^{n}w_ix_i$을 의미한다. 각각의 feature에 대응되는 weight가 학습된다. order-2 feature interaction는 FM에서의 factorization term $\sum_{i=1}^{n}\sum_{j=i+1}^{n}\left<v_i, v_j \right> x_ix_j$에 해당하는 부분이다. 각각의 feature는 동일한 차원에 embedding된(=factorization된) 후에 서로 내적해서 feature간의 interaction을 학습한다. 그러고 이 모든 것이 더해지면 FM formula와 동일한 모델을 만들 수 있다.
Deep Component
Deep component는 high order feature interaction을 모델링 해준다. 모든 feature는 각각 동일한 차원으로 embedding된다. 임베딩 시에 사용하는 가중치는 FM component에서 사용한 가중치$V_{ij}$와 동일하게 사용한다. 그래서 FM의 embedding과 Deep의 embedding이 따로 학습되지 않고 한꺼번에 end-to-end로 학습된다.
$$a^0= [e_1, e_2, \dotsb, e_m]$$
각각의 임베딩은 모두 concatenate되서 가로로 붙게 된다.
$$a^{(l+1)} = \sigma (W^l a^l +b^l)$$
$$y_{DNN} = W^{|H|+1} a^{H|} + b^{|H|+1}$$
- $a^0$
concatenate된 전체 embedding vector
MLP layer의 첫 input layer - $a^{(l_1)}$
l개의 feed-forward neural network - $y_{DNN}$
마지막 레이어에서 클릭 여부를 예측한다.
전체 구조
FM component과 deep component각각의 embedding을 공유하고 있는 것을 전체구조에서 보면 더 쉽게 확인할 수 있다. 각각의 feature가 embedding된 이후에 FM layer쪽으로도 가고 hidden layer를 통하는 deep component쪽으로도 향한다.
DeepFM은 Wide&Deep과 비슷하게 FM component와 deep component가 가진 각각의 장점들인 memorization과 generalization을 모두 활용해서 좋은 예측 성능을 보인다.
타 모델과의 비교
DeepFM이 등장하기 전의 모델들과 비교해보자
- FNN
FM모델을 사용하지만 end-to-end 가 아니라 FM모델을 학습한 이후에 embedding 을 가지고 와서 다시 딥러닝 모델을 사용한다. 그래서 반드시 pre-training이 필요하다. - PNN
low-order interaction에 해당하는 학습이 없다. - Wide & Deep
wide와 deep으로 나누었지만 wide component에서 cross product과 같은 feature engineering이 필요하다.
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day38] Bandit for Recommendation 10-1 : MAB 개요 & MAB 알고리즘 기초 (0) | 2022.03.17 |
---|---|
[Day38] DeepCTR 9-2 : DIN & BST (0) | 2022.03.17 |
[Day37] Context-aware Recommendation 8-3 : GBM (0) | 2022.03.17 |
추천 모델에 따른 데이터 사용 정보 (0) | 2022.03.16 |
[Day37] Context-aware Recommendation 8-2 : FM & FFM (0) | 2022.03.16 |