DeepFM: A Factorization-Machine based Neural Network for CTR Prediction (2017)

kellsie·2025년 7월 20일

논문리뷰

목록 보기
10/12

Original Paper (Arxiv) : DeepFM (https://arxiv.org/pdf/1703.04247)


📥Background: 추천시스템 기본 구조

1. 협업 필터링 (Collaborative Filtering, CF)

"비슷한 사용자 들이 좋아한 아이템을 추천하자"

(1) 원리

  • 사용자와 아이템간의 상호작용 기록 (e.g. 클릭, 좋아요, 구매 등)만을 기반으로 추천
  • 사용자-아이템 행렬(Interaction Matrix)을 구성하여 행은 사용자, 열은 아이템, 셀 값은 행동 기록 (e.g. 평점, 클릭 여부 등)

(2) 방식

종류설명
User-based CF나와 비슷한 행동을 한 사용자들이 좋아한 아이템 추천
Item-based CF내가 좋아한 아이템과 유사한 아이템을 추천

(3) 장점

  • 아이템 속성 정보 없이도 추천 가능
  • 직관적이고 구현이 간단

(4) 단점

  • 콜드 스타트 문제: 신규 유저 및 아이템에 대한 정보 부족
  • 희소성 문제: 대부분의 사용자-아이템 조합이 비어 있음 (Sparse Matrix)

2. 콘텐츠 기반 필터링 (Content-Based Filtering)

"사용자가 과거에 좋아한 아이템 과 유사한 아이템을 추천하자.”

(1) 원리

  • 아이템의 속성(메타데이터)과 사용자의 과거 행동 기록을 분석
  • e.g. 사용자가 공포 영화를 좋아했다면, 유사한 장르/감독/배우가 있는 영화를 추천

(2) 사용 예시

  • 영화 추천 시: 장르, 감독, 배우 등의 feature vector를 기반으로 유사도 계산 (cosine similarity 등)

(3) 장점

  • 사용자마다 개인화된 추천 가능
  • 새로운 아이템도 속성만 알면 추천 가능 → 신규 아이템 콜드 스타트 문제 완화

(4) 단점

  • 사용자의 취향이 고정되기 쉬움 (Serendipity 부족)
  • 유저 프로파일링이 어렵거나 부정확할 수 있음


📄Paper Review

0. Abstract

기존 방법들은 저차(low-order)/고차(high-order) 상호작용에 편향되어 있거나, 복잡한 feature engineering에 의존하는 문제가 있었다.

이에 본 논문에서는 저차와 고차 특성 상호작용을 모두 강조하면서도 end-to-end 방식으로 학습할 수 있는 새로운 모델을 제안한다. 저차에 강한 Factorization Machine(FM)과 고차 표현 학습에 강한 Deep Learning의 장점을 하나의 신경망 구조로 결합하였다.

(당시 최신 모델이던) Wide & Deep과 비교했을 때, DeepFM은 별도의 feature engineering 없이 하나의 입력으로 end-to-end 학습이 가능하다는 특징이 있다. (*Wide & Deep의 경우, Wide와 Deep 파트에 각각 다른 입력이 가능하며, Wide 파트에는 교차 피처를 도메인 지식 기반으로 만들어줘야 함)

기준 벤치마크 데이터와 상업용 데이터에 대한 실험을 진행한 결과, DeepFM이 기존 모델들보다 CTR 예측 성능과 효율성 모두에서 우수한 성능을 보였다.



1. Introduction

(1) CTR 예측의 중요성

클릭률(CTR, Click-Through Rate) 예측은 많은 추천시스템에서 목표로 하는 핵심 과제이다. 그렇기 때문에 사용자에게 보여줄 아이템을 예측된 CTR 순서대로 정렬하여 제공한다.

(2) 사용자 클릭 행동 이면의 피처 상호작용

사용자의 클릭 행동은 단일 feature보다 다중 feature 간의 복합 관계에서 비롯되는 경우가 많다.

예시 1: 이차 상호작용 (Order-2 Interaction)
“사람들은 식사 시간대에 배달 앱을 자주 다운로드한다.”

  • 관련 피처: 앱 카테고리 × 시간대
  • 설명: Food Delivery 카테고리와 12:00 PM이라는 시간대가 함께 나타날 때 클릭 가능성 증가

예시 2: 삼차 상호작용 (Order-3 Interaction)
“남성 10대는 슈팅 게임과 RPG를 선호한다.”

  • 관련 피처: 앱 카테고리 × 성별 × 연령대
  • 설명: 이 세 가지 피처의 조합이 클릭 여부에 큰 영향을 줄 수 있음

결론적으로, 저차와 고차 상호작용을 모두 고려하는 것이 CTR 예측에 중요하다.

(3) 상호작용을 효과적으로 모델링하는 방법

구분내용
전문가 설계 가능한 상호작용일부 단순한 상호작용은 사람이 이해하고 직접 설계할 수 있음 (e.g. 성별 × 카테고리)
데이터 기반으로만 드러나는 상호작용대부분의 상호작용은 데이터 안에 숨어 있고, 자동화된 모델링 없이는 발견하기 어려움 (e.g. 기저귀와 맥주 사례)

맥주와 기저귀가 동시에 구매되는 이유는 주로 아버지들이 기저귀를 사는 경우가 많다는 사실에서 비롯된다.

그러나 이러한 모든 관계를 전문가가 직접 설계하는 것에는 한계가 있다. feature 수가 많아질수록 모든 조합을 사람이 설계하는 것은 불가능에 가깝다는 것이다. 따라서 고차 피처 상호작용의 경우, 자동으로 학습할 수 있는 모델이 필요하다.

(4) 기존 모델의 특징 및 한계점

① 일반 선형 모델 (FTRL)

  • 구조가 단순함에도 실제 환경에서 준수한 성능
  • feature 간 상호작용 학습 능력 부족함. 따라서 일반적으로는 수작업으로 2차 상호작용을 특징 벡터에 추가
    → 고차 상호작용을 일반화하는 데 한계

② Factorization Machine (FM)

  • 2차 상호작용을 잠재 벡터(latent) 간 내적으로 모델링
  • 이론적으로는 고차 상호작용도 모델링할 수 있지만, 너무 복잡하기 때문에 실제로는 대부분 2차 상호작용까지만 사용

③ DNN

  • 복잡한 상호작용을 학습할 수 있는 잠재력有
  • CNN: 이웃 피처 간의 상호작용만 잘 포착
  • RNN: 시계열 종속성이 있는 데이터에는 적합하지만 일반적인 CTR 에측에는 부적합

④ FNN (Factorization-machine supported Neural Network)

  • FM을 사전학습한 후, 그 출력을 DNN에 전달하는 구조
  • FM의 한계에 종속되어 고차 학습이 어려움

⑤ PNN (Product-based Neural Network)

  • 임베딩 층과 완전 연결 층 사이에 곱(product) 연산을 적용하는 새로운 층을 도입
  • FNN과 PNN 모두 저차 상호작용을 제대로 포착하지 못한다는 딥 모델의 한계점이 존재

⑥ Wide & Deep

  • 선형 모델인 Wide part와 딥 모델인 Deep part를 함께 사용하는 하이브리드 구조
  • wide 파트와 deep 파트에 각각 다른 입력을 사용
  • wide 파트는 전문가의 feature engineering에 의존해야 한다는 단점

(5) DeepFM : 모든 차수의 상호작용을 자동 학습

저차/고차 피처 상호작용에만 편향되어 있거나 feature engineering에 의존하는 한계를 극복하고자 본 논문에서는 raw features 외에는 feature engineering 없이, 모든 차수의 피처 상호작용을 end-to-end 방식으로 학습할 수 있는 모델을 제안한다.

  • FM과 DNN 구조를 결합
  • FM : 저차 피처 상호작용 / DNN : 고차 피처 상호작용 학습
  • Wide & Deep 모델과 달리 wide 파트와 deep 파트가 같은 입력과 임베딩 벡터를 공유하므로 학습이 효율적

❓ FNN과 다른 점이 무엇인가
FNN도 FM과 DNN을 활용한 모델인가 뭐가 다른가하는 개인적인 궁금증이 생겼다. GPT에게 물어보니 차이점은 다음과 같다.

항목FNNDeepFM
구조FM으로 사전 학습한 임베딩을 DNN의 입력으로 사용FM과 DNN을 동시에 학습하며, 입력 및 임베딩을 공유
학습 방식2단계 학습 (FM → DNN)End-to-End 단일 학습
입력 벡터FM에서 미리 학습한 고정 임베딩 사용Raw features를 직접 임베딩하고 학습
임베딩 공유X (FM과 DNN이 분리되어 있음)O (FM과 DNN이 임베딩 벡터 공유)
피처 엔지니어링약간 필요함 (FM을 위한 구조)불필요 (raw feature로 충분)
성능DeepFM에 비해 다소 낮음 (고정 임베딩 한계)FNN보다 일반적으로 더 우수한 성능


2. Our Approach

CTR 예측을 위한 학습 데이터셋은 일반적으로 (χ,y)(\chi, y) 형태의 nn개의 인스턴스로 구성된다.

  • χ\chi : 사용자-아이템 쌍을 포함하는 mm개의 필드(e.g. 성별, 지역, 나이 등)로 구성된 데이터

    필드 타입인코딩 방식
    범주형One-hot 인코딩
    연속형실수값 그대로 사용 또는 구간화 후 one-hot 인코딩

    x=[xfield1, xfield2, , xfieldj, , xfieldm]x = [x_{\text{field}_1},\ x_{\text{field}_2},\ \dots,\ x_{\text{field}_j},\ \dots,\ x_{\text{field}_m}]
     xfieldj\ x_{\text{field}_j} : 해당 필드를 표현한 벡터 / 전체 xx : 고차원이고 희소한 벡터

  • yy \in {0,1}\{0, 1\} : 사용자의 클릭 행동을 나타내는 이진 레이블 (0 : 클릭X / 1 : 클릭O)

📍CTR 예측 : xxy^\hat{y} \in {0,1}\{0, 1\}의 확률 회귀 문제
입력 특징의 희소성과 다양한 상호작용을 잘 다룰 수 있는 모델 설계가 중요


2.1. DeepFM

DeepFM은 두 개의 예측 결과를 더한 후 시그모이드 함수를 적용하여 최종 CTR을 출력한다. 이를 수식으로 표현하면 다음과 같다.

y^=σ(yFM+yDNN)\hat{y} = \sigma(y_{\text{FM}} + y_{\text{DNN}})
  • y^\hat{y} : 유저가 특정 아이템을 클릭할 확률
  • yFMy_{\text{FM}} : FM 파트가 계산한 1차 및 2차 feature 상호작용의 결과
  • yDNNy_{\text{DNN}} : DNN 파트가 계산한 고차원 feature 상호작용의 결과
  • σ\sigma : 시그모이드 함수 → 결과값을 [0, 1] 사이 확률로 변환

(1) FM Component

[그림1] FM 파트 구조 (출처: 논문 발췌)


yFM=w,x+j1=1dj2=j1+1dvj1,vj2xj1xj2y_{\text{FM}} = \langle \mathbf{w}, \mathbf{x} \rangle + \sum_{j_1=1}^{d} \sum_{j_2=j_1+1}^{d} \langle \mathbf{v}_{j_1}, \mathbf{v}_{j_2} \rangle x_{j_1} x_{j_2}

FM 파트는 저차 상호작용을 학습한다. 다시 말해, 피처의 단독 영향과 쌍별 상호작용을 계산한다. 위의 수식에서 ++ 앞 부분은 1차(단독), 뒷 부분은 2차 상호작용의 계산식이다. 이때 계산식과 각 변수에 대한 설명은 다음과 같다.

  1. 1차(feature 단독 영향) : w,x\langle \mathbf{w}, \mathbf{x} \rangle
    각 feature에 대해 직접적인 영향도를 측정
  2. 2차(feature 간 쌍별 상호작용) : j1=1dj2=j1+1dvj1,vj2xj1xj2\sum_{j_1=1}^{d} \sum_{j_2=j_1+1}^{d} \langle \mathbf{v}_{j_1}, \mathbf{v}_{j_2} \rangle x_{j_1} x_{j_2}
    각 feature 간 쌍을 구성하여, 내적을 통해 서로의 상호작용 강도를 계산

  • x\mathbf{x} : 입력 피처 벡터 (원-핫 인코딩 기반으로 sparse vector)
  • w\mathbf{w} : 각 피처의 중요도를 나타내는 가중치
  • vj\mathbf{v}_{j} : j번째 feature의 잠재 벡터 (임베딩 벡터)
  • vj1,vj2\langle \mathbf{v}_{j_1}, \mathbf{v}_{j_2} \rangle : 두 feature 간의 연관성 (내적)

(2) Deep Component

[그림2] DNN 파트 구조 (출처: 논문 발췌)


Deep 파트는 FFNN으로, 앞서 설명한 바와 같이 고차 피처 상호작용을 학습하는 데에 사용된다.

① Embedding Layer
이미지나 오디오와 같은 데이터셋은 연속적이고 dense한 데에 반해, CTR 예측의 input은 다음과 같은 특징을 가지고 있어 새로운 아키텍쳐가 필요하다.

  • sparse vector (one-hot encoding을 해서)
  • 초고차원 (선택지가 매우 많음 e.g. 앱 ID 수천 개 등)
  • 범주형 & 연속형의 혼재
  • 필드 단위로 구성

논문에서는 이와 같은 sparse vector를 다루기 위해서 다음과 같은 임베딩 레이어를 활용하였다.

[그림3] 임베딩 층의 구조 (출처: 논문 발췌)


(1) 최초 입력 : one-hot encoded vector

  • 각 필드는 one-hot 인코딩됨
  • e.g. 앱 카테고리 = 게임 → [0, 0, 1, 0, 0, ...]

(2) 임베딩 가중치 행렬 곱

  • 각 필드는 임베딩 가중치 행렬 VRN×kV \in \mathbb{R}^{N \times k}를 갖고 있음
  • NN : 필드의 범주 개수
  • kk : 임베딩 차원 (보통 5~100)
    → one-hot vector에서 1인 위치의 임베딩 벡터만 갖고 옴

(3) 결과 : eiRke_i \in \mathbb{R}^{k}

  • 각 필드는 하나의 임베딩 벡터로 변환됨
  • 모든 필드의 임베딩을 합치면 다음과 같음 (*m = 필드의 개수)
    a(0)=[e1,e2,,em]Rm×k\mathbf{a}^{(0)} = [\mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_m] \in \mathbb{R}^{m \times k}
    → 이것이 DNN의 입력이 됨

필드의 개수와 필드의 범주의 개수

  • 필드의 개수 : 전체 필드의 개수 (m)
  • 필드 내 범주의 개수 : 필드 별로 갖는 범주의 개수의 총합 (N)

(예시)

  • 성별 = {남, 여} → 필드1 : 2개의 범주
  • 연령대 = {10대, 20대, ...} → 필드2 : 6개의 범주
  • 지역 = {서울, 부산, 대전, ...} → 필드3 : 10개의 범주
    → M = 3 / N = 2, 6, 10

📍FM과 DNN 파트가 동일한 임베딩 벡터 VV 공유

  • 메모리 절약: 임베딩 파라미터 중복 제거
  • 일관된 표현 학습: FM과 DNN이 동일한 표현 기반에서 학습
  • end-to-end 학습 가능: FM과 DNN을 따로 학습시킬 필요 없이 동시에 학습

② 순전파 계산

a(l+1)=σ(W(l)a(l)+b(l))a^{(l+1)} = \sigma \left( W^{(l)} a^{(l)} + b^{(l)} \right)
  • a(l+1)a^{(l+1)} : ll번째 층의 출력
  • W(l)W^{(l)} : ll번째 층의 가중치 행렬
  • b(l)b^{(l)} : ll번째 층의 편향 벡터
  • σ\sigma : 활성화 함수 (ReLU, sigmoid, TanH 등)

③ 시그모이드 함수 통과

yDNN=σ(W(H+1)a(H)+b(H+1))y_{\text{DNN}} = \sigma\left(W^{(|H|+1)} \cdot a^{(|H|)} + b^{(|H|+1)}\right)
  • yDNNy_{\text{DNN}} : DNN의 출력값 (CTR 예측값)
  • σ\sigma : 활성화 함수 (여기서는 sigmoid)
  • W(H+1)W^{(|H|+1)} : 마지막 출력층의 가중치 행렬
  • a(H)a^{(|H|)} : 마지막 은닉층의 출력값
  • b(H+1)b^{(|H|+1)} : 출력층의 편향 벡터
  • H|H| : 은닉층의 개수

2.2 Relationship with the other Neural Networks

[그림4] 기존 모델들과의 비교 (출처: 논문 발췌)


(1) FNN (Factorization-machine supported Neural Network)

  • 구성 : FM을 이용해 임베딩 파라미터를 사전 학습한 뒤, DNN에 연결

  • 문제점

    • FM 사전학습에 의해 임베딩이 과도하게 FM에 의존할 수 있음
    • 사전학습 오버헤드로 인해 효율성 저하
    • 고차(interactions of order ≥ 2) 특성만 학습하고, 저차(1차) 상호작용은 고려하지 않음
  • DeepFM과의 차이점 : DeepFM은 사전학습이 필요 없으며, 저차 + 고차 상호작용을 모두 동시에 학습


(2) PNN (Product-based Neural Network)

  • 구성 : 임베딩 층과 첫 번째 은닉층 사이에 product layer 삽입

  • 세 가지 변형

    • IPNN: 내적 (inner product)
    • OPNN: 외적 (outer product)
    • PNN*: 내적 + 외적 결합
  • 효율성 문제 해결 시도

    • 내적: 일부 뉴런 제거
    • 외적: k차원으로 압축
  • 문제점

    • 외적은 정보 손실이 커서 불안정
    • 내적은 계산 비용이 높음, 특히 product layer가 모든 뉴런에 연결되기 때문
  • DeepFM과의 차이점

    • DeepFM은 product layer를 최종 출력 뉴런에만 연결하여 계산 효율성을 확보
    • 저차 상호작용은 고려하지 않음 (PNN의 한계)

(3) Wide & Deep (구글 제안 모델)

  • 구성

    • Wide 파트: 선형 모델(LR)
    • Deep 파트: DNN
  • 특징

    • 저차 + 고차 상호작용 동시 학습
    • Wide 입력은 전문가의 수작업 feature engineering이 필요 (e.g. 사용자의 설치 앱과 노출 앱의 교차 항)
  • DeepFM과의 차이점

    • DeepFM은 raw feature만 입력으로 사용하여 별도의 수작업 feature engineering 불필요
    • Wide 파트를 FM으로 대체하고, 임베딩을 Deep과 공유하여 더 정밀한 표현 학습 가능


3. Experiment

3.1. Experiment Setup

  • Benchmark 데이터셋
    • Criteo : 공개된 클릭 예측용 대규모 광고 데이터셋
    • Company : 내부 상용 데이터셋도 함께 실험 (정량 수치는 비공개)
  • 입력 피처 구성
    • 범주형 + 연속형 필드 포함
    • 범주형 → One-hot encoding → Sparse vector
    • 연속형 → 그대로 혹은 구간화 후 One-hot encoding

3.2 Performance Evaluation

모델LogLoss ↓AUC ↑
LR가장 낮은 성능낮음
FMLR보다 개선됨향상됨
FNNFM보다 더 향상더 높음
PNN (IPNN)FNN보다 조금 더 향상조금 더 높음
Wide & Deep고르게 우수우수
DeepFM최고 성능최고 성능


(4. Related Work의 경우 앞의 내용과 겹치기 때문에 생략)

5. Conclusion

이 논문에서는 CTR 예측을 위한 Factorization-Machine 기반 신경망인 DeepFM을 제안하였다. 이 모델은 기존 최신 모델들의 한계를 극복하고 더 나은 성능을 달성하기 위해 고안되었다. DeepFM은 FM 컴포넌트와 딥 컴포넌트를 공동 학습하며, 다음과 같은 장점을 통해 성능 향상을 얻는다.

  • 사전 학습이 필요 없음
  • 고차(high-order) 및 저차(low-order) 피처 상호작용을 모두 학습 가능
  • 피처 임베딩을 공유하여 복잡한 피처 엔지니어링 없이 학습 가능

두 개의 실제 데이터셋(Criteo 공개 데이터와 상용 앱스토어 데이터)을 활용하여 DeepFM과 기존 최신 모델들의 효과성과 효율성을 비교하는 실험을 수행하였다.

  • AUC 및 Logloss 지표에서 모든 비교 모델보다 우수한 성능을 보임
  • 학습 효율성 또한 최신 딥러닝 모델들과 비슷한 수준


🤔 My Thoughts

  • 이번 멀티모달 프로젝트를 준비하면서 추천 시스템을 처음 공부했는데, 확실히 사업성과 맞닿아 있는 분야이다 보니 공부할 때 재미있었다.
  • 최근에 나온 다른 논문들도 읽어봐야겠다.
  • 이번주에 DeepFM을 코드로 구현해서 본 게시물에 내용을 추가할 예정이다.
profile
every high and every low

0개의 댓글