-
[추천시스템/뉴스추천] KDD-2019 NPA : Neural News Recommendation with Personalized Attention 논문 리뷰Deep Learning/Recommender System 2021. 9. 17. 00:15
2019년 KDD에 실린 논문으로, 뉴스 추천에 있어서 서로 다른 사용자는 단어와 뉴스를 다르게 받아들임을 반영하여 주목을 받았다. 논문 리뷰 스터디에서 해당 논문을 맡아 발제하였고 그 내용을 정리하려고 합니다.
INTRO
서로 다른 사용자는 단어와 뉴스를 다르게 받아들임
유저1은 2,3번째 뉴스를 선호하지만 유저2는 1,3번째 뉴스를 선호 & 같은 3번째 뉴스에서도 유저1은 Crazy라는 단어에, 유저2는 Actually Work라는 단어에 집중 이전의 추천은 이러한 사용자 개별의 선호는 반영되지 않았고, 단지 text 안에서의 중요한 단어에 가중치를 부여하는 방식을 사용하였음
→ 이것을 추천에 반영한다면 더욱 향상된 personalized 뉴스 추천이 가능할 것이라는게 논문의 핵심
APPROACH
NPA의 큰 Architecture 위 아키텍처를 크게 세 부분으로 나누면,
1. News encoder
: 뉴스 벡터 학습
2. User encoder
: 유저 벡터 학습
3. Click predictor
: 후보 뉴스에 대한 클릭 확률 예측
이다.
이 순서대로 자세히 살펴보겠다.
APPROACH – 1. News Encoder (연두색 부분)
News Encoder의 목표 : 뉴스 기사 제목으로부터 뉴스 벡터를 학습하는 것
News Encoder ▶ 총 세 가지의 모듈이 존재
1-1. Word embedding
단어의 사전적 의미를 반영한 워드 임베딩 행렬을 이용하여 저차원 매핑
∴ Ew = [e1, e2, ..., eM ]
1-2. CNN
단어 시퀀스가 local context를 반영하도록 CNN 이용
(+ CNN은 로컬한 부분을 요약해서 학습)
∴ [c1, c2, ..., cM ]
1-3. word-level personalized attention
사용자마다 중요하게 생각하는 단어가 다름
→ 추천에 반영
∴ [r1, r2, ..., rN ] and [r′0, r′1, ..., r′K]
하지만, 이전의 뉴스 추천 논문에서도 Attention을 사용했었다. 그럼 어떤 차이를 보였기 때문에 이 논문의 Personalized Attention이 주목을 받은 것일까? Attention의 개념과 둘의 차이를 정리해보았다.
기존의 attention Personalized attention Query에 대해 유사도를 계산하고 weight를 주어서 어떤 단어가 중요한 지 스스로 학습 ∙ fixed query vector
∙ 사용자 선호도 반영 X
→ 서로 다른 사용자가 갖는 정보성의 차이를 반영 X∙ UserID embedding vector
∙ 사용자마다 다른 사용자 선호 쿼리를 학습
→ 사용자 선호도를 고려한 집중(attention)이 가능해짐기존의 attention은 전체적으로 중요한, 즉 뉴스 타이틀이라는 text만 딱 주어졌을 때 정보만 이용해서 어떤 단어가 중요한지를 밝혀냈다. 반면, NPA의 Personalized attention의 핵심은 UserID 임베딩 벡터를 사용해서 사용자마다 쿼리를 다르게 했다. 그래서 기존에 안됐던 "사용자 개인 별 다른 선호도를 고려"할 수 있게 만든 것이다.
APPROACH – 2. User Encoder (노란색 부분)
User Encoder의 목표 : 클릭된 뉴스로부터 유저 벡터를 학습하는 것
User Encoder ▶ News-level personalized attention module
cf) News encoder : word-level personalized attention module
: 서로 다른 사용자에게 어떤 뉴스는 흥미로울 수도 있고 아닐 수도 있음을 반영
그렇다면 word-level과 news-level attention은 뭐가 다른 것일까? 표를
사랑선호하는 나는 또 정리해보았다.attention 모델인 만큼, 그 구성요소인 k-q-v로 정리하니 다소 이해에 도움이 되었다.
Word-level attention news-level attention user embedding vector를 사용해 쿼리 학습 ∙ key : CNN 통과한 단어 시퀀스
∙ query : 사용자 선호 쿼리 qw
∙ value : 가중치 αw
∙ output : 단어 단위의 맥락/사용자 선호도 반영한 r 벡터들∙ key : r 벡터들
∙ query : 뉴스 선호 쿼리 qd
∙ value : 가중치 αd
∙ output : 뉴스 단위의 사용자 선호도 반영한 uAPPROACH – 3. Click Predictor (주황색 부분)
News data의 근본적 문제
- 사용자가 클릭하는 뉴스가 매우 적기 때문에, positive news와 negative news의 비율이 매우 불균형 (negative 훨씬 많음)
- ∙ 기존 뉴스 추천 모델에서의 sampling
- click score를 예측하기 위해서 일부 뉴스만 사용 (sampling)
- positive / negative 비율을 균형 있게 구성 → 방대한 negative news 정보의 손실
- 뉴스 데이터는 매우 방대하기 때문에 계산 비용이 많이 듦
⇒ real-world news recommendation에 최적의 결과를 제공하지 못함
Solution) Negative Sampling
- 학습 과정에서 총 K+1개의 뉴스를 이용해 click score를 예측
- 1개의 positive sample + K개의 negative sample → K+1 way classification task
- 뉴스 벡터와 사용자 벡터를 내적, 정규화하여 최종 score 계산
EXPERIMENTS
- Datasets
- Real-world dataset : MSN News의 약 4주(2018.12.13-2019.01.12) 간 유저 로그
- Test : 마지막 주
- Train : 나머지 주
- Validation : 10% random sampling
- Accuracy metrics : AUC, MRR, nDCG@5, nDCG@10
- Dataset 통계
위 통계에서는 positive sample과 negative sample의 차이에 주목해 볼 필요가 있다.
아래 질문들은 제 나름대로 정리를 한 것입니다. 사실 논문 저자의 질문은 4개가 아닐 수도 있습니다. 그럴 가능성이 높겠죠? 나는 감자니까
<실험을 통해 얻고자 한 것>
Q1. NPA의 성능은?
Q2. Personalized Attention이 정말 효과적인가?
Q3. Negative sampling의 영향력은?
Q4. Hyperparameter(negative sampling ratio)의 영향은?
Q1. NPA의 성능은?
성능 대체적으로 다른 알고리즘에 비해 성능이 우수하다. 자세히 보면, 신경망 기반의 CNN, DSSM, NPA 성능이 좋고, negative sampling을 수행한 DSSM/NPA 성능이 좋다. 또 attention을 사용한 DFM, DKN, NPA의 성능이 우수하다.
샘플 당 계산 비용 negative sampling 덕분에 계산 비용 측면에서도 우수하다. NPA와 DSSM의 학습 비용을 보면, K로 나누어져 있는 것을 볼 수 있는데 이게 negative sampling의 효과이다.
테스트 데이터의 성능 추이 가까이 붙어있는 날짜일수록 유저 선호도의 관련성이 높을 것이므로, 당연히 train과 가장 가까운 첫째 날의 성능이 가장 좋다.
시간이 흐를수록 성능이 낮아지는 것은 뉴스 데이터의 특징이 시간에 민감하고, 회전율이 높기 때문.
셋째 날부터는 안정적인 그래프를 보이면서 시간의 흐름에 robust한 특징이 드러난다.
이는 NPA 모델이 단순히 '훈련데이터에 뉴스가 있었구나!'를 기억하는 것이 아니라, '유저 선호도와 뉴스 토픽에 기반한 개인화된 추천'을 해줌을 의미한다.
Q2. Personalized Attention이 정말 효과적인가?
- Attention 사용하는 것이 outperform
- Personalized attention이 가장 우수
- Vanilla와 달리, PA는 사용자 선호도에 따른 중요 단어와 뉴스를 뽑을 수 있음
- Word-level & News-level attention 같이 사용하는 것이 가장 성능 우수
Q3. Negative sampling의 영향력은?
- 성능이 올라감
- Negative sampling을 하지 않았을 때 손실되던 Negative sample들의 정보를 포함시켜서 더 나은 뉴스 추천 가능
Q4. Hyperparameter(negative sampling ratio)의 영향은?
▶ Hyperparameter K : negative sampling ratio
- K가 커질 수록 성능 올라가는 추세
- 그러나 일정 이상 커지면 성능 내려감
- 적당한 K를 setting할 필요가 있음
CONCLUSION
▶ NPA의 핵심 idea
- News representation model
CNN을 이용하여 title로부터 news representation을 학습
- User representation model
Personalized attention을 이용하여 clicked news로부터 user representation을 학습
- Personalized Attention mechanism
UserID 임베딩 벡터를 활용한 사용자 선호 쿼리를 word-level attention & news-level attention에 적용
→ 서로 다른 사용자는 집중해서 읽는 단어와 뉴스가 다르다는 것을 추천에 반영하였다.
보기보다 핵심적인 내용은 단순한 논문이었던 것 같다.
파이팅~
휴 드디어 정리했다.
'Deep Learning > Recommender System' 카테고리의 다른 글
[추천시스템] 3. Evaluation and Metrics (0) 2021.02.25 [추천시스템] 2. Item-Item Collaborative Filtering (0) 2021.02.18 [추천시스템] 1. User-User Collaborative Filtering (0) 2021.02.17 [추시 질문 모음] Predictions and Recommendations (0) 2021.02.03