[부스트캠프 AI Tech 7기] DeepFM

jinnk0·2024년 11월 14일

필요성

CTR(클릭률)을 예측 및 극대화하기 위해 사용자의 행동 패턴에 숨겨져 있는 복잡한 피처 간의 상호작용을 파악하는 것이 중요하다. 하지만 기존 모델은 고차원 또는 저차원의 상호작용을 파악하는 것에 치우쳐 있거나 복잡한 피처 엔지니어링을 필요로 한다.

DeepFM 모델은 고차원과 저차원의 상호작용을 모두 고려할 수 있고, end-to-end 방식의 모델이기 때문에 별도의 피처 엔지니어링이 필요하지 않다.

  • 저차원 상호작용 : 주로 두 가지의 특성 간의 단순한 조합과 상호작용
  • 고차원 상호작용 : 3개 이상의 여러 특성 간의 복잡한 상호작용
  • end-to-end : 입력부터 출력까지의 모든 단계를 한 모델에서 처리하는 것을 말한다. 입력값의 전처리나 피처 엔지니어링 없이 raw data를 입력값으로 받아 처리한다.

구조

DeepFM 모델은 저차원의 피처 간 상호작용을 잘 학습하는 FM component와 고차원의 상호작용을 학습하는 데 적합한 Deep component로 이루어져 있다.

wide 부분의 입력과 deep 부분의 입력을 별도로 구성해야 하는 Wide & Deep 모델과 다르게 DeepFM은 동일한 입력을 사용한다.

FM component

FM(Factorization Machine)은 pairwise product를 통해 latent vector를 이용하여 특성 간의 상호작용을 효과적으로 표현할 수 있다. 고차원의 상호작용을 표현하는 것도 가능하지만, 계산의 효율성과 성능 사이의 균형을 맞추기 위해 보통은 2차 상호작용까지만 고려한다.

Deep component

심층 신경망을 활용하여 고차원의 상호작용을 학습할 수 있다. 심층 신경망 구조로는 CNN, RNN을 사용하기도 하지만 주로 DNN을 기반으로 사용한다. 기본적으로 Feed Forward Network 구조이다.

CNN은 인접한 feature 간의 상호작용에 편향되어 있는 경우, RNN은 순차적인 의존성이 있는 경우에 더 적합하다.

입력 데이터셋 구성

n개의 인스턴스로 구성되며, 각각의 인스턴스 (x, y)는 일반적으로 사용자와 아이템의 쌍으로 이루어진 m개의 필드를 포함한다. y는 0 또는 1로 클릭 여부를 나타내고, x는 연속형 또는 범주형 피처를 포함할 수 있다.

범주형 피처는 one-hot encoding으로 표현하고, 연속형 피처는 그대로 사용하거나, 이산화하여 one-hot encoding으로 표현한다.

구현

y^=sigmoid(yFM+yDNN)\hat y = \mathit{sigmoid}(y_{FM} + y_{DNN})

  • yFMy_{FM} : FM component의 출력
  • yDNNy_{DNN} : Deep component의 출력

FM

yFM=<w,x>+j1=1dj2=j1+1d<Vi,Vj>xj1xj2y_{FM} = <w, x> + \sum^d_{j_1 = 1} \sum^d_{j_2=j_1+1} <V_i, V_j>x_{j_1}\cdot x_{j_2}

j1=1dj2=j1+1d<Vi,Vj>xj1xj2=12f=1k((i=1nvi,fxi)2i=1nvi,f2xi2)\sum^d_{j_1 = 1} \sum^d_{j_2=j_1+1} <V_i, V_j>x_{j_1}\cdot x_{j_2} = \frac{1}{2}\sum_{f=1}^{k}((\sum_{i=1}^{n}v_{i,f}x_i)^2-\sum_{i=1}^{n}v_{i,f}^2x_i^2)

  • ww : 각 피처들이 결과값에 미치는 영향에 대한 가중치
  • xx : 입력 피처 벡터
  • <w,x><w, x> : wwxx의 내적
  • Vi,VjV_i, V_j : 피처 i와 j의 잠재벡터
  • <Vi,Vj><V_i, V_j> : 피처 간의 2차 상호작용 표현
  • xj1xj2x_{j_1}\cdot x_{j_2} : 피처의 실제 값들 간의 곱으로, 해당 상호작용의 강도를 나타내는 가중치 역할을 한다.

DNN

yDNN=σ(WH+1aH+bH+1)y_{DNN} = \sigma(W^{|H|+1} \cdot a^H + b^{|H|+1})

  • MLP layers로 구성
  • H|H| : hidden layer(은닉층)의 수
  1. embedding layer
    • sparse vector 입력을 dense vector로 변환
    • FM component에서 사용되는 latent vector VV를 가중치로 사용하여 임베딩된 피처 벡터들을 압축
  2. hidden layers
    • embedding layer에서 처리된 dense vector를 순전파 과정을 통해 처리
    • 각 레이어에서 출력값(a(l)a^{(l)})에 가중치(W(l)W^{(l)})와 편향(b(l)b^{(l)})을 적용한 뒤 활성화 함수(σ\sigma)를 통과하여 다음 레이어로 전달

Reference

0개의 댓글