본문 바로가기

추천시스템

Continual Learning in Recommender Systems

이번 포스트에서는 추천시스템에서의 continual learning을 다룰 겸 ADER: Adaptively Distilled Exemplar Replay Towards Continual Learning for Session-based Recommendation이라는 논문을 소개하겠다.

1. Continual Learning

추천시스템은 한 번의 모델 학습으로 끝나는 것이 아니라 반드시 새로 유입된 데이터로 모델을 지속적으로 업데이트해야한다. 그 이유는 추천시스템을 이용하는 유저와 추천 대상인 아이템은 계속 변하고, 또 유저 취향과 환경은 계속 변하기 마련이기 때문이다. 논문에 추천시스템의 continual learning을 잘 표현하는 그림이 있다.

 

Continual Learning in Recommender Systems

$t$번째 모델 업데이트에서 기존 추천시스템의 모델 $f(\theta_{t-1})$은 지난 한 주기 동안 유저들과 상호작용하면서 적재된 데이터 $D_t$로 학습되어 $f(\theta_t)$가 된다. 다음 한 주기 동안은 $f(\theta_t)$가 유저들에게 아이템을 추천하고 이를 기반으로 새로운 데이터 $D_{t+1}$이 쌓인다. $D_{t+1}$이 다음 모델 업데이트 때 이용된다.

 

그러나 continual learning은 catastrophic forgetting이라는 문제로부터 자유롭지 못하다. Catastrophic forgetting이란 딥러닝 모델이 새로운 데이터를 학습하면서 이전에 학습한 데이터를 잊어버리는 것을 의미한다. 물론 이전 데이터를 계속 저장하여 새로운 데이터와 함께 모델을 학습시키는 방법도 있겠지만 이 방법은 지나친 계산량과 저장 공간을 요구할 것이기 때문에 비현실적이다.

 

논문 저자들은 이 문제에 대하여 (1) exemplar replay와 (2) adaptive distillation이라는 두 해결책을 제시한다.

 

2. Exemplar Replay

Exemplar replay는 과거 데이터에서 exemplar라는 몇몇 대표적인 데이터 샘플만 추출하여 저장하고 다음 학습에 활용하는 기법이다. 지난 업데이트 $t-1$에 저장한 exemplar set을 $E_{t-1}$이라고 했을 때 $t$번째 업데이트는 $D_t \cup E_{t-1}$로 한다. 실험 결과 이 기법이 오히려 과거 데이터를 전부 사용하는 것보다 더 좋은 결과를 보였다고 한다. 그렇다면 이 exemplar를 어떻게 잘 선택할 수 있을지에 대한 고민이 필요하다.

 

우리의 추천시스템 모델은 입력 데이터를 받고 마지막에 softmax activation을 통해 추천할 아이템을 선택한다고 하자. 저자들은 기본적으로 exemplar를 각 추천 아이템마다 추출할 것을 제안한다. 만약 모델이 데이터 $x$를 받고 아이템 $y$를 추천했었다면 $(x, y)$는 아이템 $y$에 대한 exemplar가 될 수 있을 것이다.

 

보통 아이템마다 노출 빈도가 다르다. 그래서 각 아이템의 exemplar 개수를 데이터에서 등장한 횟수에 비례하게 정하는 것이 공평할 것이다. 즉, $D_t \cup E_{t-1}$에서 각 아이템이 등장한 횟수에 비례하게 해당 아이템의 exemplar 개수를 정한다.

 

그렇다면 어떤 데이터 샘플이 특정 아이템의 과거를 가장 잘 대표한다고 볼 수 있을까? 논문에서 제안한 exemplar 선택 방법은 다음과 같다.

 

Exemplar 선택 방법

$I_t$는 추천 대상 아이템의 집합, $m_y$는 아이템 $y$의 (데이터에서의 등장 횟수에 비례한) exemplar 개수다. 각 아이템 $y$에 대하여 이번 학습 데이터 $D_t \cup E_{t-1}$에 있는 $y$의 모든 데이터 샘플 $(x, y)$의 집합을 $P_y$라고 한다. 그러면 모델에 의한 $P_y$의 평균 output feature vector $\mu$를 구할 수 있다. 그 다음 크기가 $m_y$이고 평균 feature vector가 $\mu$와 가장 가까운 $P_y$의 subset을 $y$의 exemplar set으로 삼게 된다.

 

3. Adaptive Distillation

계산량과 메모리 오버헤드를 고려하면 전체 exemplar의 수를 무작정 크게 할 수는 없다. 적은 exemplar 수에도 catastrophic forgetting을 방지하기 위하여 저자들은 adaptive distillation이라는 regularization 기법을 추가하였다. 이는 일반적인 cross entropy loss에 다음 regularization term을 더하는 기법이다.

 

여기서 $\hat{p_i}$는 이전 모델 $f(\theta_{t-1})$에 의해 출력된 아이템 $i$의 추천 확률, $p_i$는 업데이트된 모델 $f(\theta_t)$에 의해 출력된 아이템 $i$의 추천 확률이다. $L_{KD}$는 이전 모델과 새로 업데이트된 모델에 의한 아이템 추천 분포 사이의 거리로 해석할 수 있고 이를 loss에 더한다는 것은 이전 모델과 업데이트된 모델의 차이가 벌어지는 것을 penalize하겠다는 뜻이다. 

 

실전에서는 데이터셋 크기와 새로운 아이템 수 등에 따라 이전 데이터의 중요성이 달라질 것이다. 그래서 $L_{KD}$에 아래와 같이 $\lambda_t$라는 weight를 곱한다.

 

식을 보면 $\lambda_t$는 이전 업데이트 대비 새로 생긴 아이템이 적을수록, 그리고 exemplar 수 대비 새로 적재된 데이터 수가 적을수록 값이 커져 $L_{KD}$의 영향력을 높여서 모델 변화를 억제한다.

 

 

 

'추천시스템' 카테고리의 다른 글

Knowledge Graph  (0) 2022.10.30
추천시스템의 분류  (0) 2022.10.21
랭킹 최적화 문제  (0) 2022.07.18
정형 데이터를 다루기 위한 Neural Network  (0) 2022.01.18
Sequential Recommendation과 GNN  (0) 2022.01.18