Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st workshop on deep learning for recommender systems. 2016. 논문 리뷰입니다.
0. Abstract
- Wide : Memorization
- Cross-product feature transformation
- More feature engineering effort
- Deep : Generalization
- Generalize to unseen feature combination
- Less feature engineering effort
- Over-generalize
- Wide & Deep
- Joint wide linear models and deep neural networks
- 추천시스템을 위해 memorization, generalization의 장점을 합침
- 온라인 실험을 진행하여 wide&deep이 wide만 사용한 경우와 deep만 사용한 경우보다 더 좋은 성능을 냈다는 것을 밝힘
1. Introduction
- Memorization의 정의
- Frequent co-occurrence of items or features
- Exploit correlation available in the historical data
- Generalization의 정의
- Explore new feature combinations
- 추천시스템에서 Memorization과 Generalization
- Memorization : more topical and directly relevant to the items → historical data에서 본 내용을 바탕으로 추천
- Generalization : improve diversity of the recommendations
- Google Play Store의 apps recommendation 실험을 했지만 general하게 적용할 수 있다.
- 기존 추천 모델의 한계
- Generalized Linear Model
- Logistic Regression과 같은 모델에 대한 features를 만들어서 학습시킨다.
- cross product 연산을 사용하여 Memorization (주어진 데이터 기억)에 특화된다.
- 새로운 또는 관측되지 않은 데이터 (unseen data)에는 취약하다.
- overfitting이 발생할 수 있다.
- Embedding based Model
- Factorization Machine, Deep Neural Network 방법을 활용
- Generalization (unseen data 대응)에 특화된다.
- 특정 선호도를 가진 사용자나 좁은 매력을 가진 항목과 같이 matrix가 희소하고 순위가 높은 경우, 저차원 특징을 효과적으로 학습하는 것이 매우 어려움
- 이러한 경우, 대부분의 쿼리 항목 쌍 사이에 interaction이 없어야하지만, dense embedding은 non-zero prediction 으로 이어짐 → 과도한 일반화 → 섬세한 추천 불가
1-1. Contributions
- Wide & Deep Learning framework를 제안한다.
- Jointly training feed-forward neural network and linear model
- Google play에 상용화된 Wide&Deep 추천시스템의 평가와 구현내용을 공개한다.
- 모바일 앱스토어에서 App 구매, 다운로드 등 향상
- 학습과 서비스 속도를 충족
- Tensorflow 기반의 API를 오픈소스 형태로 제공한다.

2. Recommender System Overview
- Inference : User가 app store를 방문할 때 query 생성
- train : log 등 user actions을 활용하여 모델 학습
- 데이터베이스에는 100만 개가 넘는 앱이 존재 → latency requirements 내의 모든 쿼리, 모든 앱에 대해 모든 앱을 완전히 채점하는 것은 어려움

3. Wide & Deep Learning
3-1. The Wide Component

y=wTx+b
- Generalized Linear Model
- y → predcition (유저 행동여부)
- x = [x1,x2,...,xd]
- size d의 feature vector
- Raw input features & cross-product feature
- w = [w1,w2,...,wd] → model parameters
- b → bias
- cross-product transformation
ϕk(x)=i=1∏dxickicki∈{0,1}
- Cross-product feature의 k번째 요소
- Raw feature의 i번째 요소가 true인지 여부
- Feature interaction 반영
- 모델에 Non-linearity 적용
- ex) feature가 (gender, language)로 구성되어 있고, cross-product transformation (feature)의 k번째를 AND (female, en)일 때, 모두 만족하면 1 아니면 0
3-2. The Deep Component
- Features를 임베딩과 뉴럴넷에 학습한다. → Generalization

al+1=f(Wla(l)+b(l))
- l은 number of layers
- f는 activation function (ReLU)
- a(l),b(l),W(l)
- Activation, bias and model weights at l-th layer
- Dense Embeddings
- Nominal Feature에 해당하는 임베딩을 랜덤 초기화하고 모델 전체 학습
3-3. Joint Training of Wide & Deep Model
-
ensemble : 개별 모델이 서로를 알지 못한 채 개별적으로 학습, 추론 시에만 예측 결합되고 학습 시에는 결합되지 않음
-
joint training : 학습 시점에 wide, deep 부분과 그 합의 가중치 모두 고려 → 모든 parameter 동시 최적화
-
continuous, categorical features를 concat하여 deep의 input a로 활용
-
user install app과 impression app을 cross-product하여 wide의 input x로 활용
-
backpropagation을 wide와 deep에서 동시에 진행하여야함

- P(Y=1|X)는 app을 다운받을 확률
- sigmoid함수의 input으로 Wide와 Deep을 합한 값을 넣어주고, 그 output이 최종 결과
4. System Implementation
- 아래의 Figure3의 pipeline과 같이 데이터 생성, 모델 학습, 모델 제공의 3단계로 구성됨

4-1. Data Generation
- 일정 기간 동안의 사용자 및 앱 노출 데이터를 사용하여 학습 데이터 생성
- 레이블은 app acquisition (노출된 앱이 설치 되었으면 1, 설치되지 않았으면 0)
- categorical feature들을 정수형 변수로 매핑한 vocabularies는 이 단계에서 생성
- continuous 실수 feature들은 feature x를 누적 분포 함수에 매핑하여 [0,1]로 정규화
4-2. Model Training
- categorical feature 32 dimension embedding vector
- 모든 임베딩을 밀도가 높은 특징과 함께 연결하여 약 1200차원의 밀도 높은 벡터 생성
- 벡터 3개의 ReLU layer에 공급하고 마지막으로 logistic 출력 유닛에 공급
- 5000억 개 이상의 예제들로 학습
- 새로운 학습 데이터셋이 생길때마다 다시 모델을 학습시켜야함
- but 매번 처음부터 학습시키면 계산 비용↑, 시간↑ → embedding을 통해 새 모델을 초기화하는 warm-starting system 구현

4-3. Model Serving
- 모델이 학습되고 검증되면 모델 서버에 로드
- 각 요청에 대해 서버는 앱 검색 system, 사용자 기능으로부터 앱 후보 집합을 수신하여 각 앱에 접수 표시
- wide&deep mode에 대한 forward inference pass를 계산하여 점수 계산됨
5. Experiment Results
- live 실험 진행하여 app acquisition, serving performance 두 가지 측면에서 시스템 평가함
5-1. App Acquisitions
- 3주 동안 A/B test 프레임워크에서 3주 동안 온라인 실험 진행

- Offline AUC
- Test Set의 사용자 행동결과로 성능 측정
- AUC는 클수록 좋은 점수 (=ROC 커브의 아래 면적)
- Offline Acquisition Gain
- 실제 사용자들의 action을 추적
- 기존 모델 대비 application 실제 다운로드 수가 증가

- Multithreading, Split each batch into smaller batches → latency를 14ms 줄일 수 있었다.
- 추천알고리즘의 성능 뿐만 아니라 Commercial Mobile App Store의 서비스까지 신경 쓴 것을 알 수 있다.
6. Conclusions
- Wide & Deep Learning
- Memorization과 Generalization 모두가 중요하기 때문에 Memorization의 Wide와 Generalization의 Deep을 결합한 모델을 제안
- Wide : sparse한 feature interaction 효과적으로 기억
- Deep : 저차원 임베딩을 통해 이전에 볼 수 없었던 feature interaction 생성
- Linear model과 embedding-based model의 장점을 잘 조합함
- 좋은 추천 알고리즘을 실제 서비스 환경에서 작동할 수 있도록 구현함
- open sourse로 tensorflow api를 구현하여 다양하게 활용할 수 있음