Huifeng Guo, Ruiming Tang, Yunming Yey, Zhenguo Li, Xiuqiang He의 논문을 번역했습니다. 거의 다 번역했지만 개인적인 판단 하에 덜 중요한 부분은 줄였습니다. 원문이나 참고문헌은 논문을 확인해주세요.
초록
추천시스템에서 CTR(click through rate : 추천한 아이템을 유저가 누를 확률)을 최대화 하기 위해서는 유저 행동에 숨겨진 피쳐들 간의 복잡한 상호관계(feature interaction)를 학습하는 것이 중요하다. 많은 발전이 있었지만 기존의 방법은 낮은 차원(low-order) 혹은 높은 차원(high-order)의 상호관계 중 하나에만 치우쳐 학습하거나 전문가의 피쳐 엔지니어링이 필요하다. 이번 논문에서는 낮은 차원과 높은 차원의 피처 관계를 end-to-end 모델로 학습할 수 있음을 보였다. 제안한 모델 DeepFM은 Factorization Model이 추천에서 갖는 강점과 Deep Learning이 Feature학습에서 갖는 강점을 결합한 새로운 Neural Network 구조이다. 최근 구글에서 발표한 Wide & Deep Model과 비교해보면, DeepFM은 Wide 부분과 Deep 부분이 공통된 입력(shared input)을 받고 Feature Engineering이 필요하지 않다. DeepFM의 학습 효율성(efficiency)과 성능 효율성(effectiveness)이 기존의 CTR 예측 모델보다 좋은 성능을 보임을 benchmark data와 commercial data를 통해 보였다.
1. Introduction
추천시스템에서 CTR 예측은 중요하다. 유저의 예상 CTR 값을 랭킹 순으로 정렬하여 아이템을 추천함으로써 클릭 횟수를 늘릴 수 있다. 온라인 광고 같은 다른 시나리오에서는 수입(revenue)의 증가 또한 중요하다. 이때 Ranking sort 기준은 CTR $\times$ bid 값으로 조정된다. 'bid'는 유저가 아이템을 클릭할 때마다 받는 보상 값이다. 어떤 경우에도 CTR을 정확히 예측하는지가 핵심이다.
CTR을 정확히 예측하기 위해서는 Implicit Feature(이전 포스팅 참고)간의 상호 작용을 학습하는 게 중요하다. 우리의 앱 마켓 연구에 의하면 사람들은 주로 식사 시간에 음식 배달 앱을 다운로드한다. 이는 앱의 Category와 시간대의 상호작용(order-2 : feature가 두 개)이 CTR 예측을 위한 신호로 쓸 수 있음을 암시한다. 두 번째 관찰은 10대 남자들이 슈팅 게임과 RPG 게임을 좋아한다는 점인데 이는 앱의 category, 사용자의 성별과 나이대의 상호작용(order-3)이 또 다른 CTR 신호임을 의미한다. 보통 유저 행동에 숨겨진 이런 상호 작용은 매우 복잡하고, 저차원 & 고차원 상호작용 전부 중요한 역할을 한다. 구글이 발표한 Wide & Deep Model 논문의 관찰에 의하면 저차원, 고차원 상호작용을 동시에 고려하는 경우가 하나씩만 고려하는 경우보다 더 좋은 성능을 나타낸다.
제일 어려운 점은 효율적으로 피쳐들 간의 상호작용을 Modeling하는 것이다. 어떤 피쳐 상호작용은 쉽게 이해할 수 있어서 앞선 예시처럼 전문가가 수작업할 수 있다. 그러나 대부분의 피쳐 상호작용은 데이터 속에 숨겨져 있고 선험적(priori)으로 알기 어려워서 머신 러닝을 통해 자동적으로 포착되어야 한다.(예를 들어 전통적인 연관 법칙(association rule)의 예시인 '기저귀와 맥주'는 전문가에 의해 발견되는 대신 data mining을 통해 발견했다.) 이해하기 쉬운 상호작용 또한 전문가가 전부 모델링하기는, 특히 피쳐의 수가 굉장히 클 때, 불가능해 보인다.
일반화된 선형 모델(FTRL)은 간단하지만 준수한 성능을 보인다. 그러나 선형 모델은 피쳐 상호작용을 학습하기는 어려워서 실제로는 피쳐 벡쳐들간의 pairwise interaction을 직접 feature로 넣어준다. 이런 방법은 높은 차원의 피쳐 상호작용이나 한 번도 등장하지 않은, 거의 등장하지 않은 data에 대해서 보편적으로 모델링하기가 어렵다. Factorization Machine(FM)[Rendle, 2010]은 pairwise 피쳐 상호작용을 피쳐의 latent vector 끼리의 내적을 통해 모델링했고 매우 괜찮을 결과를 냈다. FM모델이 높은 차원의 피쳐 상호작용을 모델링할 수 있지만 실제로는 높은 복잡도 때문에 거의 order-2 상호작용만 고려한다.
feature representation을 학습하는 강력한 접근법으로서 Deep Neural Network는 복잡한 상호작용도 배울 수 있는 가능성을 지니고 있다. 몇몇 연구는 CTR을 예측하기 위해 CNN이나 RNN으로까지 확장을 했다. 그러나 CNN 기반 모델은 인접한 피쳐를 학습하는 편향성이 있었고 RNN 기반 모델은 연속성이 있는 클릭 데이터에 더 적합하다. [Zhang et al., 2016]은 FM supported Neural Network(FNN)를 제시했다. 이 모델은 DNN을 적용하기 전 FM을 pre-train하여 이용하는데, FM의 성능에 제한을 받는다. 피쳐 상호작용은 [Qu et al., 2016]에 의해 연구되었는데 embedding layer와 fully-connected layer 사이에 product layer를 도입하는 Product-based Neural Network(PNN)을 제시했다. [Cheng et al., 2016]에 의하면 PNN과 FNN은 다른 딥러닝 모델처럼 낮은 차원의 피쳐 상호작용, CTR 예측에 필수적인, 은 거의 포착해내지 못한다. 낮은 차원, 높은 차원의 상호 작용 둘 다를 모델링하기 위해 [Cheng et al., 2016]은 linear("wide") 모델과 deep 모델을 결합한 흥미로운 혼합 네트워크 구조(Wide & Deep)를 제시했다. 이 모델에서는 두 개의 다른 inputs이 wide 부분과 deep 부분을 위해 각각 필요하다. "wide part"의 입력은 여전히 전문가의 feature engineering이 필요하다.
살펴보았듯이 기존의 모델을 낮은 차원 혹은 높은 차원의 피쳐 상호작용을 모델링하는데 치우쳐 있다. 이번 논문에서 우리는 모든 차원의 피쳐 상호 작용을 end-to-end 방식으로, feature engineering 없이 학습하는 모델을 유도할 수 있음을 보인다. 우리의 Contribution은 다음과 같이 요약된다.
- 우리는 FM과 DNN의 구조를 결합한 새로운 신경망 모델 DeepFM(Figure 1)을 제시한다. 이 모델은 FM을 통해 낮은 차원의 피쳐 상호작용을 학습하고 DNN을 통해서는 높은 차원의 피쳐 상호작용을 학습한다. Wide & Deep 모델과는 다르게 DeepFM은 end-to-end로 feature engineering이 필요 없이 학습할 수 있다.
- DeepFM은 Wide & Deep과는 다르게 같은 input과 embedding layer를 공유하기 때문에 효율적으로 학습할 수 있다. Wide & Deep 에서는 input vector가 직접 고안한 pairwise 피쳐 상호작용을 wide part에 포함하기 때문에 입력 vector가 굉장히 커질 수 있고 이는 복잡도를 굉장히 증가시킨다.
- DeepFM을 benchmark data와 commercial data에 평가해본 결과 기존 모델보다 일관적으로 향상된 결과를 보였다.
2. Our Approach
트레이닝 데이터 셋이 n개의 (χ , y) 쌍을 갖는다고 가정하자. χ는 유저와 아이템을 묶는 m-fields(종류)로 구성되어 있고 y는 유저가 클릭을 했는지 안 했는지의 데이터가 0,1로 라벨링 된다. χ는 범주형 field(e.g. 성별, 위치)를 포함할 수도 있고 연속형 field(e.g. 나이)를 포함할 수도 있다. 각각의 범주형 field는 one-hot vector로 표현되고 각각의 연속형 field는 값 자체로 표현되거나 이산화(discretization)한 뒤에 one-hot encdoing을 하여 표현된다. 그런 다음 각각의 데이터는 ($x$,y) shape으로 바뀌는데 $x$ = [$x_{field_1}$,$x_{field_2}$, ... , $x_{field_j}$,... , $x_{field_m}$] 이고 d차원의 벡터이다. $x_{field_j}$ 는 $\chi$ 의 j번째 field를 나타낸다. 보통 x는 매우 차원이 높고 극도로 sparse하다. CTR 예측 task는 $\hat{y} = CTR \_ model(x) $ 와 같이 context가 주어졌을 때 유저가 특정 앱을 클릭할 확률을 추정하는 모델을 만드는 일이다.
2.1 DeepFM
우리는 낮은 차원과 높은 차원의 피쳐 상호작용 둘 다를 학습하는 것을 목표로 한다. Figure 1에서 보듯이 DeepFM은 같은 input을 공유하는 FM component와 deep component로 구성되어 있다. 피쳐 i에 대해서, 스칼라 값 $w_i$는 order-1 중요도 가중치로 사용되고 잠재 벡터(latent vector) $V_i$는 다른 피쳐와 상호작용 정도를 측정하는 데 사용된다. $V_i$는 order-2 상호작용을 모델링하기 위해서 FM component로 들어가는 반면 높은 차원의 피쳐 상호작용을 모델링하기 위해서 Deep Component로 들어간다. $w_i$ 와 $V_i$ 그리고 network 변수$(W^{l}, b^{l})$을 포함한 모든 변수는 아래 수식과 같이 결합된 예측 모델에서 같이 학습된다.
$\hat{y} = sigmoid(y_{FM} + y_{DNN})\label{1}\tag{1}$
FM Component
Factorization Machine 논문에서 소개한 구조와 같다. 다른 글을 참고.
Deep Component
일반적인 Feed-Forward Network와 유사하다. Image나 Audio 데이터와 같이 순수하게 연속적이고 dense한 데이터 input은 CTR 예측 모델이 필요한 input과 꽤 다르다. 구체적으로 CTR 예측에 사용되는 feature input vector은 보통 굉장히 sparse하고 super high-dimensional(app stor의 경우 수십억 명의 유저가 있고 유저당 하나의 field vecotr가 이미 수십억 dimension이다.)이고 범주형과 연속형 변수가 섞여 있으며 field로(e.g. 성별, 위치, 나이) 그룹화 되어 있다. 이런 특징은 embedding layer가 input vector를 저차원의 dense한 벡터로 압축하여 첫 번째 hidden layer에 넘겨줄 것을 제시한다. 그렇지 않다면 이 네트워크는 학습하기 버거울 것이다.
Embedding Layer 구조에는 두 가지 흥미로운 점이 있다. 1) 다른 field의 input vector의 길이는 다를 수 있지만 embedding은 같은 크기(k)이다. (역자 예시: gender field는 보통 length가 남, 여 2인 반면 국적이나 나이 field의 길이는 더 길다. 하지만 embedding시에는 똑같이 k=5차원 벡터로 임베딩 된다.) 2) FM에서의 latent feature vector(V)가 이 네트워크의 가중치로 사용되고 input field vector를 압축하는 데 사용되고 학습되다. [Zhang et al., 2016]에서는 V가 FM에 의해 pre-trained되고 이 값을 초기값으로 사용한다. 이번 논문에서는 이런 방법을 사용하는 대신 FM을 DNN과 별개로 학습 구조에 포함한다. 이렇게 함으로써 pre-training을 할 필요가 없어지고 전체 네트워크를 end-to-end로 학습할 수 있게 된다. Embedding Layer의 output을 다음과 같이 표현하면:
$a^{(0)} = [e_1, e_2, ..., e_m]\label{3}\tag{3}$
$e_i$는 i번째 field의 임베딩을 나타내고 m은 field의 수를 나타낸다. $a^{(0)}$은 DNN에 들어가서 다음과 같이 forward process를 거친다:
$a^{(l+1)} = \sigma (W^{(l)}a^{(l)}+b^{(l)}),\label{4}\tag{4}$
$a^{(l)}$은 l번째 layer의 output이다.
FM component와 Deep component가 같은 feature embdding을 공유한다는 점이 주목할 만 한데 이 덕분에 두 가지 중요한 장점을 갖게 된다. 1) raw feature로부터 낮은 차원과 높은 차원의 피쳐 상호작용을 둘 다 학습할 수 있다. 2) Wide & Deep 모델과 다르게 input의 직접적인 feature engineering이 필요하지 않다.
2.2 다른 신경망 구조와의 관계
FNN : 앞서 언급했던 모델이다. DNN component만을 활용하고 Embedding시에 FM Pre-Trained된 값으로 initialization 한다. High-Order를 상호작용을 학습할 수는 있지만 Low-Order학습은 불가능하다.
PNN : DNN Component구조에서 Product Layer를 추가한 형태이다. Inner Product를 활용할 수도 있고 Outer Product를 활용할 수도 있고 둘 다 활용할 수도 있다. Outer Product를 활용하는 경우 근사법을 사용하기 때문에 feature 정보를 많이 잃어버리고 이 때문에 unstable해진다. Inner Product의 경우 더 reliable하지만 Product Layer 이후에 Hidden Layer의 모든 neuron에 연결되기 때문에 High Computational Complexity가 요구된다. PNN과 다르게 DeemFM은 오직 마지막 output layer(하나의 neuron)에만 연결된다. FNN과 같이 Low-Order학습은 불가능하다.
Wide & Deep : DeepFM과 다르게 Wide Part의 Input을 직접 feature engineering 해야 한다. 이 모델의 Linear Regression(LR)부분을 FM으로 바꾸면 DeepFM과 비슷하지만 DeepFM은 Feature Embedding을 Share한다는 점이 다르다. Embedding을 share하는 방식은 low-order, high-order 상호작용을 표현하는 feature representation에 영향을 미쳐 더 정교하게 만든다.
3. Experiments
3.1 Experiment Setup
Datasets
1) Criteo Dataset : 4,500만 명의 유저 클릭 기록을 포함하고 있다. 13개의 continuous feature와 26개의 categorial feature가 있다. 실험에서는 무작위로 90%는 train set으로 나머지 10%는 테스트용으로 나눈다.
2) Company* Dataset(저자가 속해 있는 Huawei 데이터를 말하는 것 같습니다) : 실제 산업에서의 CTR 예측 성능을 평가하기 위해 회사 데이터에서 실험을 해보았다. 회사의 App store에서 연속된 7일의 유저 클릭 기록을 training용으로 사용했고 다음 하루치를 test용으로 사용했다. 전체 데이터는 10억 개가량의 기록이 있다. 이 dataset에서는 app에 관련된 feature(e.g. identification, category and etc)와 user와 관련된 feature(e.g. 유저가 다운로드한 앱 등), context feature(e.g. operation time 등)이 있다.
Evaluation Metrics
실험에서 AUC와 Logloss를 평가 지표로 사용했다.
Model Comparison
9개의 모델을 실험에서 비교했다: LR, FM, FNN, PNN(내적 사용, 외적 사용, 내외적 둘 다 사용 3가지), Wide & Deep(Wide 부분을 LR로 사용한 모델과 FM으로 사용한 모델 두 가지), DeepFM.
3.2 Performance Evaluation
Efficiency와 Effectiveness를 나누어서 실험했다.
Efficiency Comparison
LR 대비 학습에 걸린 시간을 나타낸 그래프이다. FNN을 보면 DeepFM에 비해 오래 걸리는데(1.89+1.32) Pre-Training에서 시간을 많이 쓴다. IPNN이나 PNN의 경우 Inner Product가 Hidden Layer에 붙으면서 학습 속도가 굉장히 느려지는 걸 확인할 수 있다. Wide&Deep 모델(LR&DNN로 표시)보다는 살짝 느리지만 준수한 속도를 보인다.
Effectiveness Comparison
- 피쳐 간의 상호작용이 전혀 표현되지 않는 LR보다 상호작용을 표현하는 다른 모델들이 성능이 더 좋다.
- Low-order와 High-order 상호작용을 같이 학습하는 모델인 DeepFM과 Wide&Deep 모델의 성능이 더 좋다.
- Low-order와 High-order를 학습할 때 같은 feature-embedding을 share하는 DeepFM이 Wide&Deep 모델보다 성능이 좋다.
결과적으로 Wide&Deep보다 AUC와 LogLoss측면에서 각각 0.37% 포인트, 0.42% 포인트 성능이 더 좋아졌다. 근소한 차이지만 Wide&Deep 논문에 의하면 Offline에서 0.275% 포인트 차이가 Online CTR에서는 3.9% 포인트 차이로 이어졌다. 회사 AppStore에서 일일 전환율이 수백만 달러이기 때문에 작은 비율의 상승은 년간 수 백만 달러의 추가 이익을 가져온다.
3.3 Hyper-Parameter Study
1) activation functions; 2) dropout rate; 3) number of neurons per layer 4) number of hidden layers 5) network shape에 대해 Tuning한 결과이다. (기존의 DNN 결과와 비슷해서 간략하게 서술합니다.)
1) relu가 tanh보다 좋았다. 2) 0.6 ~ 0.9 정도의 dropout이 좋았다. 3) 200~400 정도가 좋았다. 이 이상은 overfit이 일어난다. 4) 3개가 넘는 hidden layer는 overfitting을 일으킨다. 5) 3개의 hidden layer기준으로 같은 shape(neuron수가 200-200-200)이 증가하는 shape(100-200-300)이나 감소하는 shape(300-200-100)이나 diamond shape(150-300-150)보다 좋았다.
4. Related Work
생략
5. Conclusions
이번 논문에서는 기존의 CTR예측 SOTA 모델의 단점을 극복하고 더 좋은 성능을 보인 모델인 FM기반 신경망 모델 DeepFM을 제시했다. DeepFM은 Deep Component와 FM Component를 jointly 학습한다. 이런 방식은 세 가지 장점이 있다. 1) pre-training이 필요하지 않다. 2) 높은 차원과 낮은 차원의 피쳐 상호작용을 같이 학습한다. 3) Feature Engineering이 필요 없도록 feature embedding을 공유하는 전략을 사용한다. 두 개의 real-word datasets 상에서 effectiveness측면이나 efficiency 측면을 다른 SOTA 모델과 비교했다. 실험 결과는 1) DeepFM이 AUC와 Logloss 지표에서 SOTA모델을 앞질렀고 2) 제일 efficient한 모델과 비교할 만큼 성능이 좋았다.
두 가지 후속 연구 방향이 있다. 하나는 높은 차원의 피쳐 상호작용을 강화하는 방법(예를 들면 pooling layer를 도입)을 탐색해보는 것이고 다른 하나는 GPU cluster상에서 large-scale problem을 DeepFM에서 학습하는 것이다.
'RecSys' 카테고리의 다른 글
Explicit vs Implicit Feedback Datasets (0) | 2019.09.14 |
---|