본 글은 2017년 발표된 Deep & Cross Network for Ad Click Predictions을 읽고 요약 및 정리한 글입니다.
논문
직접 구현 DCN 모델 코드 (Pytorch)
직접 구현 DCN Movielens100k 학습 코드 (Jupyter)
| 항목 | Wide & Deep | DeepFM | DCN |
|---|---|---|---|
| 구성 | Wide (Linear model) + Deep (MLP) | FM (low-order interactions) + Deep (high-order interactions) | Cross Network(feature crossing) + Deep (MLP) |
| Feature Engineering | 수동 Feature Cross 필요 | 자동 Feature Factorization Machines 학습 (2차) | 자동 Feature Cross 학습 (교차층으로 다양한 차수) |
| Embedding 공유 | ❌ (Wide와 Deep 입력 분리) | ✅ (FM과 Deep이 Embedding Layer 공유) | ✅ (Cross와 Deep이 Embedding을 공유) |
| Interaction Modeling | - Wide: 1차(선형), 수동 조합 | - FM: 2차 pairwise interaction 자동 학습 | - Cross: 입력과 이전층의 외적 기반 명시적 교차 |
| 모델 수식 | 최종: |
| 구분 | Cross Component | Deep Component |
|---|---|---|
| 역할 | 저차원 명시적 feature crossing | 고차원 비선형 관계 학습 |
| 목적 | 저차원 상호작용(feature cross) 자동 학습 | 고차원의 복잡한 비선형 표현 학습 |
| 특징 | 원본 입력과 이전층의 내적/외적을 통해 교차 특징 포착 | 비선형 특징 포착 |
| 모델 수식 | |



- DCN이 다른 model들을 상회
- DNN에 비해 DCN은 메모리 소비가 40% 적음

- DCN은 다른 모델에 비해 적은 파라미터로 이상적인 logloss를 달성

- 다양한 메모리에서 사용에서 비교해도 DCN이 DNN을 상회

- Node와 Layer 수를 바꿔서 DNN과 DCN 비교
- DCN이 모든 범위에서 DNN을 상회

- cross layer의 개수에 따른 성능 변화
- layer가 많아진다고 꼭 성능이 좋아지지는 않음
- 일정 수준 이후에는 좋아질수도 좋아지지 않을 수도 있음