Tae Hyun Kim (Lowell)

Wide and Deep

2분 읽기 #recsys#factor-models

정의

Wide & Deep(Cheng et al., 2016)은 **선형 wide component(기억, memorization)**와 **DNN deep component(일반화, generalization)**를 결합한 클릭률(CTR) 예측 모델이다. Google Play 앱 추천에 처음 적용되었다.

y^=σ(wwideT[x,ϕ(x)]+wdeepTa(L)+b)\hat{y} = \sigma\big(\mathbf{w}_{\text{wide}}^T [\mathbf{x}, \boldsymbol{\phi}(\mathbf{x})] + \mathbf{w}_{\text{deep}}^T \mathbf{a}^{(L)} + b\big)

Wide Component

일반화 선형모형(generalized linear model)으로, raw feature x\mathbf{x}cross-product transformation ϕ(x)\boldsymbol{\phi}(\mathbf{x})를 입력으로 받는다:

ϕk(x)=i=1dxicki,cki{0,1}\boldsymbol{\phi}_k(\mathbf{x}) = \prod_{i=1}^{d} x_i^{c_{ki}}, \quad c_{ki} \in \{0, 1\}

이 cross-product feature는 사람이 직접 설계해야 하며, 특정 feature 조합의 동시 출현(co-occurrence)을 기억한다.

Deep Component

순방향 신경망(feed-forward neural network)으로, categorical feature를 dense embedding으로 변환한 뒤 여러 hidden layer를 거친다:

a(l+1)=ReLU(W(l)a(l)+b(l))\mathbf{a}^{(l+1)} = \text{ReLU}(\mathbf{W}^{(l)} \mathbf{a}^{(l)} + \mathbf{b}^{(l)})

고차 feature interaction을 암묵적으로 학습해, 보지 못한 feature 조합으로의 일반화를 담당한다.

Joint Training

Wide와 Deep component를 **함께 학습(joint training)**하며, 두 component의 output을 가중합해 최종 예측을 만든다. 학습에는 Wide는 FTRL + L1을, Deep은 AdaGrad를 사용했다.

직관적 이해

추천 시스템에서 두 가지 능력이 모두 필요하다:

  • 기억(memorization) (Wide): “사용자가 과거에 설치한 앱과 비슷한 앱을 추천” — 과거 데이터의 직접적인 패턴을 기억한다.
  • 일반화(generalization) (Deep): “이 사용자의 전반적 취향으로 볼 때 새 카테고리의 앱도 좋아할 수 있음” — 보지 못한 조합으로 일반화한다.

Wide만 쓰면 과거 패턴에 과적합되고, Deep만 쓰면 특정 동시 출현(co-occurrence)을 놓칠 수 있다. 둘을 결합하면 양쪽의 장점을 함께 취한다.

장점과 한계

장점:

  • 기억과 일반화를 균형 있게 결합한다.
  • 산업계에서 대규모로 검증되었다(Google Play, 5억+ 사용자).
  • Wide와 Deep 각각의 역할이 명확해 해석하기 쉽다.

한계:

  • Wide part의 cross-product feature를 사람이 직접 설계해야 한다(도메인 전문성 필요).
  • Wide와 Deep이 embedding을 공유하지 않아, 두 component 간 학습 신호가 분리된다.
  • cross-product feature의 선택이 성능에 큰 영향을 주며, 잘못 설계하면 성능이 떨어진다.
  • 저차(low-order) interaction 중 사람이 정의하지 않은 조합은 포착하지 못한다.

관련 개념

  • DeepFM - Wide를 FM으로 대체해 feature engineering이 불필요하고, 공유 임베딩(shared embedding)을 도입한다.
  • Factorization Machine - 2차 feature interaction을 자동으로 학습해 Wide의 cross-product를 대체한다.
  • FNN - FM으로 사전학습한 뒤 DNN을 학습하는, Wide & Deep과는 다른 접근이다.
  • PNN - product layer로 interaction을 포착하며, Wide & Deep의 Deep만 확장한 구조다.

참고 논문

  • Cheng, H., et al. (2016). Wide & deep learning for recommender systems. DLRS 2016. — 원논문이다.
  • guoDeepFMFactorizationMachineBased2017 - DeepFM으로, Wide & Deep의 한계를 개선한다.

연결 그래프