| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- expo
- coding
- DeepMind
- Reinforcement Learning
- Ai
- 논문리뷰
- selenium
- 전국국밥
- clone coding
- 딥러닝
- TTS
- 데이터분석
- React
- ReactNative
- Instagrame clone
- 음성합성
- 카트폴
- Ros
- python
- TeachagleMachine
- 강화학습
- JavaScript
- FirebaseV9
- 클론코딩
- 머신러닝
- 사이드프로젝트
- App
- 앱개발
- 강화학습 기초
- pandas
- Today
- Total
qcoding
[AI논문리뷰-추천알고리즘] Neural Collaborative Filtering - 행렬분해의 내적을 신경망으로 바꾼 추천 모델 본문
[AI논문리뷰-추천알고리즘] Neural Collaborative Filtering - 행렬분해의 내적을 신경망으로 바꾼 추천 모델
Qcoding 2026. 5. 6. 21:04한 문단 요약
NCF는 추천 시스템의 고전적 핵심인 행렬분해(Matrix Factorization)를 "사용자 벡터와 아이템 벡터의 내적"으로 고정하지 말고, 신경망이 사용자-아이템 상호작용 함수를 직접 배우게 하자는 논문이다. 저자들은 GMF, MLP, NeuMF 세 모델을 제안했고, MovieLens 1M과 Pinterest implicit feedback 실험에서 NeuMF가 HR@10, NDCG@10 기준으로 BPR/eALS보다 평균 4~5%가량 높은 성능을 보였다고 보고한다. 지금 보면 단순한 구조지만, 딥러닝 추천 모델의 출발점을 이해하기에 여전히 좋은 기준점이다.
이 논문은 무엇을 해결하려고 했나?
이 논문의 문제의식은 한 문장으로 정리된다. "추천에서 사용자와 아이템의 관계를 왜 항상 내적으로만 계산해야 하는가?" 기존 Matrix Factorization(MF)은 사용자 latent vector와 아이템 latent vector를 같은 공간에 놓고, 두 벡터의 내적이 크면 선호도가 높다고 본다. 이 방식은 단순하고 강력하지만, interaction function이 선형 결합으로 고정된다.
저자들은 특히 implicit feedback 추천을 겨냥한다. 클릭, 구매, 시청, pin처럼 관측된 행동은 선호의 힌트일 뿐이고, 관측되지 않은 0은 싫어한다는 뜻이 아니라 "아직 보지 못했다"일 수도 있다. 이런 데이터에서는 user-item 관계가 희소하고 노이즈가 많으므로, 단순 내적 하나로 복잡한 ranking 구조를 복원하기 어렵다고 본다.
NCF의 답은 단순하다. 사용자와 아이템을 embedding으로 바꾸는 것은 유지하되, 그 다음의 interaction function을 neural network로 학습하자. 그러면 MF는 NCF의 특수한 경우가 되고, 더 깊은 MLP나 GMF+MLP 앙상블인 NeuMF는 더 표현력 있는 모델이 된다.
배경지식과 핵심 키워드
추천 시스템 논문은 용어가 쉬워 보여도 평가 프로토콜과 데이터 의미를 놓치면 결론을 과대해석하기 쉽다. 아래 키워드는 NCF를 읽을 때 꼭 붙잡아야 하는 축이다.
|
Collaborative Filtering
사용자의 과거 상호작용만 보고 다음에 좋아할 아이템을 예측하는 추천 방식이다. 이 논문은 텍스트, 이미지, 태그 같은 보조 정보를 쓰지 않는 pure CF 설정을 택해 user-item interaction 자체에 집중한다. MovieLens는 6,040명 사용자와 3,706개 아이템, Pinterest는 55,187명 사용자와 9,916개 아이템으로 평가했고, sparsity는 각각 95.53%, 99.73%라서 희소성 문제가 매우 크다.
|
Implicit Feedback
별점처럼 명시적인 선호가 아니라 클릭, 구매, pin 같은 행동 로그에서 선호를 추정하는 데이터다. y_ui=1은 사용자 u가 아이템 i와 상호작용했다는 뜻이고, y_ui=0은 싫어한다는 뜻이 아니라 미관측일 수 있다. 그래서 NCF는 모든 0을 정답 negative로 보지 않고, positive 하나당 negative 4개를 샘플링해 pointwise log loss를 학습한다.
|
|
Matrix Factorization
MF는 사용자 벡터 p_u와 아이템 벡터 q_i를 학습하고, 예측 점수를 p_u와 q_i의 내적으로 계산한다. 이 구조는 각 latent dimension의 곱을 같은 가중치로 더하는 선형 모델이라 해석할 수 있다. 논문은 Figure 1의 예시로, 낮은 차원의 latent space에서 내적만으로는 사용자 간 ranking 관계를 동시에 만족시키기 어렵다고 설명한다.
|
GMF
Generalized Matrix Factorization은 MF를 NCF 틀 안에 넣은 모델이다. p_u와 q_i를 element-wise product로 결합한 뒤, output layer가 그 결과를 점수로 바꾼다. output 가중치를 모두 1로 두고 activation을 identity로 놓으면 고전적 MF와 같은 형태가 되므로, GMF는 "MF를 일반화한 신경망 버전"에 가깝다.
|
|
MLP Interaction Function
MLP 모델은 사용자 embedding과 아이템 embedding을 concat한 뒤 여러 hidden layer를 통과시켜 interaction function을 학습한다. predictive factor가 8일 때 논문 기본 MLP는 32→16→8 구조를 쓴다. Table 3과 4에서 MLP-0은 MovieLens HR@10이 약 0.45 수준에 머물지만, MLP-4는 factor 64에서 HR@10 0.707, NDCG@10 0.432까지 올라가므로 단순 concat만으로는 부족하고 비선형 변환이 필요하다는 근거가 된다.
|
NeuMF
Neural Matrix Factorization은 GMF 경로와 MLP 경로를 나란히 학습한 뒤 마지막에서 concat해 예측하는 모델이다. GMF는 선형적인 latent factor 곱을 잘 잡고, MLP는 더 복잡한 비선형 상호작용을 학습한다. 논문에서 NeuMF는 MovieLens factor 64에서 HR@10 0.730, NDCG@10 0.447을 기록했고, Pinterest에서도 factor 16 기준 HR@10 0.880, NDCG@10 0.558로 가장 강한 결과를 보인다.
|
|
HR@10 / NDCG@10
Hit Ratio@10은 정답 아이템이 추천 상위 10개 안에 들어왔는지 보는 지표다. NDCG@10은 정답이 상위권일수록 더 큰 점수를 주므로 위치 정보를 반영한다. 논문은 각 사용자별로 마지막 interaction 하나를 test로 남기고, 관측되지 않은 아이템 100개를 샘플링해 정답과 함께 ranking한 뒤 두 지표의 평균을 보고한다.
|
Negative Sampling
implicit feedback은 positive만 명확하기 때문에 어떤 0을 negative로 볼지가 핵심이다. NCF는 학습에서 positive 하나당 4개의 negative를 샘플링했고, Figure 7 분석에서는 최적 sampling ratio가 대략 3~6 근처라고 보고한다. Pinterest에서는 ratio가 7보다 커지면 성능이 떨어지기 시작해, negative를 많이 넣는 것이 항상 좋은 것은 아니라는 점도 보여준다.
|
핵심 인사이트
NCF의 핵심은 embedding을 쓰느냐가 아니라, embedding 이후의 사용자-아이템 결합 함수를 고정된 내적에서 학습 가능한 함수로 바꾼 데 있다. 그래서 논문의 진짜 비교 대상은 "딥러닝 vs 비딥러닝"이라기보다 "고정 interaction function vs 학습된 interaction function"에 가깝다.
기존 방법의 한계
기존 MF 계열의 장점은 명확하다. 구현이 쉽고, 대규모 sparse matrix에서도 학습이 가능하며, 추천 시스템의 강한 baseline으로 오랫동안 쓰였다. 하지만 내적은 사용자와 아이템 latent factor의 같은 차원끼리 곱한 뒤 더하는 구조라, feature 간 상호작용을 같은 방식으로만 계산한다.
논문은 이 한계를 "interaction function의 설계 문제"로 본다. 사용자와 아이템이 실제로는 복잡한 취향 구조를 갖고 있어도, 모델은 그것을 내적 하나로 압축해야 한다. latent dimension을 크게 늘리면 표현력은 올라갈 수 있지만, MovieLens나 Pinterest처럼 sparse한 데이터에서는 overfitting 위험이 커진다.
또 다른 한계는 당시 딥러닝 추천 연구의 초점이다. 많은 연구가 텍스트 설명, 음악 오디오, 이미지 특징처럼 보조 정보를 neural network로 처리하고, 정작 collaborative filtering의 핵심인 user-item interaction은 다시 MF에 맡겼다. NCF는 바로 이 빈틈을 겨냥한다.
제안 방법의 핵심 아이디어
NCF는 사용자와 아이템 ID를 one-hot sparse vector로 입력받아 embedding layer에서 dense latent vector로 바꾼다. 그 뒤의 neural CF layer가 사용자 벡터와 아이템 벡터의 관계를 학습하고, output layer가 \hat{y}{ui}를 낸다. \hat{y}{ui}는 explicit rating이 아니라 추천 ranking에 쓰일 interaction score다.
저자들은 이 일반 틀에서 세 가지 모델을 만든다.
첫째, GMF는 MF의 내적을 element-wise product와 output layer로 일반화한다. 둘째, MLP는 사용자 embedding과 아이템 embedding을 concat하고 ReLU 기반 hidden layer를 쌓아 비선형 interaction을 학습한다. 셋째, NeuMF는 두 경로를 함께 사용한다. 흥미로운 점은 NeuMF에서 GMF와 MLP가 같은 embedding을 공유하지 않고, 각자 다른 embedding을 학습한다는 것이다. 선형 관계를 잘 잡는 공간과 비선형 관계를 잘 잡는 공간을 분리한 셈이다.
학습은 binary classification 관점의 log loss로 한다. 관측된 interaction은 1, 샘플링된 미관측 interaction은 0으로 두고, 모델이 positive에 높은 확률을 주도록 학습한다. BPR처럼 pairwise ranking loss를 직접 최적화하지는 않지만, negative sampling 비율을 유연하게 조절할 수 있다는 장점이 있다.
모델 구조/알고리즘 흐름
학습 흐름을 실제 구현 관점에서 보면 다음과 같다.
- user ID와 item ID를 one-hot vector로 만든다.
- embedding matrix를 통해 user latent vector와 item latent vector를 얻는다.
- GMF 경로는 두 벡터의 element-wise product를 계산한다.
- MLP 경로는 두 벡터를 concat한 뒤 여러 fully connected layer와 ReLU를 통과시킨다.
- NeuMF는 GMF 출력과 MLP 출력을 concat하고, 마지막 output layer에서 sigmoid score를 만든다.
- observed interaction과 sampled negative interaction에 대해 binary log loss를 최소화한다.
- 추론 시에는 후보 아이템의 score를 계산하고, score가 높은 순서대로 Top-K 추천을 만든다.
논문의 NeuMF pre-training도 실무적으로 중요하다. 먼저 GMF와 MLP를 각각 학습한 다음, 두 모델의 가중치를 NeuMF 초기값으로 가져온다. 마지막 output layer는 두 경로를 결합하도록 새로 구성하고, alpha=0.5로 두 경로의 기여를 균형 있게 둔다. Table 2에서 pre-training NeuMF는 MovieLens에서 평균 2.2%, Pinterest에서 평균 1.1%의 상대 개선을 보였다. 다만 MovieLens factor 8에서는 pre-training 없는 모델이 HR@10 0.688, NDCG@10 0.410으로 조금 더 높아, 작은 모델에서는 항상 이득이라고 말하기 어렵다.
논문 그림/표로 이해하기
NeuMF pre-training 결과 (Table 2 재구성)
| 데이터셋 | Factors | Pretrain HR@10 | Pretrain NDCG@10 | No Pretrain HR@10 | No Pretrain NDCG@10 |
|---|---|---|---|---|---|
| MovieLens | 64 | 0.730 | 0.447 | 0.705 | 0.426 |
| 16 | 0.880 | 0.558 | 0.871 | 0.547 |
실험 설정과 결과 해석
실험은 MovieLens 1M과 Pinterest 두 데이터셋으로 구성된다. MovieLens는 원래 explicit rating 데이터지만, 논문에서는 rating 여부만 남겨 implicit interaction으로 변환했다. Pinterest는 pin 행동 자체가 implicit feedback이며, 원본이 너무 sparse하므로 사용자당 최소 20개 interaction이 있는 subset을 사용했다.
평가는 leave-one-out 방식이다. 각 사용자의 마지막 interaction 하나를 test로 빼고, 나머지 interaction으로 학습한다. 테스트 때는 전체 아이템을 모두 ranking하지 않고, 사용자와 상호작용하지 않은 아이템 100개를 샘플링한 뒤 정답 아이템이 상위 10개 안에 드는지 본다. 이 설정은 계산량을 줄이지만, negative sample이 바뀌면 절대 수치도 달라질 수 있어 오늘날 논문과 직접 비교할 때는 주의가 필요하다.
결과적으로 NeuMF가 가장 강하다. 논문은 NeuMF가 eALS보다 평균 4.5%, BPR보다 평균 4.9% 상대 개선을 보였다고 설명한다. 또 GMF가 BPR보다 꾸준히 나은 결과를 보이는 점을 들어, 같은 MF 형태라도 pairwise BPR loss보다 pointwise log loss와 negative sampling 조합이 이 설정에서 효과적이라고 해석한다.
깊은 MLP의 효과도 중요한 결론이다. 같은 predictive factor에서도 hidden layer를 쌓으면 HR@10과 NDCG@10이 전반적으로 좋아진다. MovieLens factor 64 기준으로 MLP-0의 HR@10은 0.453에 불과하지만 MLP-4는 0.707까지 올라간다. 단순히 user vector와 item vector를 붙이는 것만으로는 interaction을 배웠다고 보기 어렵고, hidden layer가 실제 결합 함수를 만드는 역할을 한다는 주장에 힘을 싣는다.
실험을 읽을 때의 주의점
NCF의 성능 개선은 의미 있지만, 평가가 100개 sampled negative 기반이라는 점은 기억해야 한다. 전체 catalog ranking, time split, popularity bias 보정, cold-start 평가까지 포함하면 다른 결론이 나올 수 있다.
한계와 비판적 관점
첫 번째 한계는 입력 정보가 ID 중심이라는 점이다. 논문은 pure CF를 의도적으로 택했기 때문에 구조가 깔끔하지만, 새로운 사용자나 새로운 아이템이 들어오는 cold-start 상황에는 약하다. 저자들도 content feature를 입력으로 확장할 수 있다고 언급하지만, 본 실험의 핵심 결과는 ID embedding 기반이다.
두 번째는 평가 프로토콜이다. leave-one-out과 100개 negative sampling은 당시 널리 쓰인 방식이지만, 실제 서비스에서는 수천만 개 후보 중에서 ranking해야 한다. sampled evaluation은 모델 간 상대 비교에는 쓸 수 있어도, 운영 지표를 그대로 대변한다고 보기는 어렵다.
세 번째는 시간 정보와 노출 편향을 거의 다루지 않는다는 점이다. 사용자가 아이템을 클릭하지 않은 이유는 싫어서가 아니라 노출되지 않았기 때문일 수 있다. implicit feedback 추천에서 이 문제는 매우 크지만, NCF는 negative sampling으로 단순화한다.
마지막으로, 2017년 기준의 Keras/Theano 구현과 작은 benchmark는 현대 추천 시스템 규모와 거리가 있다. 지금은 two-tower retrieval, sequence recommendation, graph neural network, LLM 기반 re-ranking 등 선택지가 훨씬 많다. 그래도 NCF의 "interaction function을 학습한다"는 관점은 많은 후속 모델의 기본 언어가 되었다.
구현하거나 응용한다면 무엇을 봐야 하나?
직접 구현한다면 먼저 데이터 split과 negative sampling을 고정해야 한다. 모델 구조보다 재현성을 더 크게 흔드는 부분이 평가 방식이기 때문이다. 논문 공식 코드도 train.rating, test.rating, test.negative 형태의 파일을 전제로 하므로, 같은 형식으로 데이터를 만들면 비교가 쉽다.
모델 쪽에서는 GMF, MLP, NeuMF를 모두 구현해보는 것이 좋다. GMF는 element-wise product 하나로 MF의 일반화를 확인할 수 있고, MLP는 layer 수와 embedding dimension이 성능에 주는 영향을 보기 좋다. NeuMF는 두 경로의 embedding을 공유하지 않는 점, pre-training된 GMF/MLP를 가져올 때 마지막 output layer를 어떻게 초기화하는지 확인해야 한다.
서비스 응용 관점에서는 NCF를 단독 추천기로 쓰기보다 candidate re-ranking 모델로 보는 편이 현실적이다. 전체 아이템을 모두 NeuMF로 scoring하면 비용이 커질 수 있으니, 먼저 인기/협업 필터링/벡터 검색으로 후보를 줄이고 그 후보를 NeuMF로 재정렬하는 구조가 자연스럽다. 게임 추천, 콘텐츠 추천, 상점 아이템 추천처럼 ID 기반 interaction이 충분히 쌓이는 도메인에서는 여전히 실험해볼 가치가 있다.
한 줄 결론과 다음에 읽을 논문
한 줄 결론: NCF는 "추천의 핵심은 embedding이 아니라 user-item interaction function을 어떻게 학습하느냐"라는 질문을 딥러닝 방식으로 분명하게 던진 논문이다.
다음에 읽을 주제로는 같은 추천 흐름에서 Wide & Deep Learning for Recommender Systems를 추천한다. NCF가 pure collaborative filtering의 interaction function을 다뤘다면, Wide & Deep은 memorization과 generalization을 함께 가져가는 산업형 추천 모델의 관점을 보여준다.
출처
'AI논문리뷰-추천알고리즘' 카테고리의 다른 글
| [AI논문리뷰-추천알고리즘] SASRec - Self-Attention으로 순차 추천의 장단기 문맥을 함께 잡은 모델 (2) | 2026.05.06 |
|---|---|
| [AI논문리뷰-추천알고리즘] Wide & Deep Learning - 추천 시스템에서 암기와 일반화를 함께 쓰는 법 (1) | 2026.05.06 |
| [AI논문리뷰-추천알고리즘] BERT4Rec - 양방향 Transformer와 Cloze 학습으로 순차 추천을 바꾼 모델 (0) | 2026.05.06 |
| [AI논문리뷰-추천알고리즘] GRU4Rec - 세션 기반 추천을 RNN으로 풀어낸 출발점 (0) | 2026.05.06 |
