많은 혹은 대부분의 ML 서비스들은 지도학습을 통해 모델을 학습하고 업데이트 한다. 다른 분야보다도 추천 시스템은 이런 배치 단위의 학습을 통한 모델 업데이트에는 여러 한계가 존재한다.

  1. 종속성 문제 : 사용자의 선호도는 상호작용을 통해 변화한다. 따라서, 추천 시스템은 이러한 변화를 반영하지 못해 정확도가 떨어진다.
  2. 장기적인 보상 결여 : 장기적인 관점의 추천보다 당장 다음 interaction에 대한 결과만을 추구하게 된다.
  3. 개인화 추천 : 사용자의 과거 데이터로만 학습한 모델은 개인화 추천에 있어 한계가 있다.

강화 학습은 이러한 추천 시스템의 한계를 극복하기 위한 방법이다. 강화 학습은 상호작용을 통해 보상을 최대화하는 방향으로 학습하는 알고리즘이다. 이러한 강화 학습을 추천 시스템에 적용한다면, 사용자의 선호도 변화와 새로운 상품에 대한 반영이 가능해진다.

이번 글에서는 추천 시스템에 강화학습을 적용한다는 개념에 대해 알아보려 한다.

Batch Learning vs. Incremental Learning

Batch Learning과 Incremental Learning은 머신러닝에서 사용되는 서로 다른 학습 방법이다.

Batch Learning

Batch Learning은 전체 데이터셋을 한 번에(mini batch도 포함) 모델에 입력하여 학습하는 방법이다. 대부분의 서비스나 사람들이 사용하는 학습 방법이다. 새로운 데이터를 학습 시키고 싶은 경우 이전 데이터+새로운 데이터를 학습시키고 새로운 모델 배포한다.

  • 장점
    • 안정성
    • 수렴 속도
    • 일관된 평가
  • 단점
    • 메모리 요구량
    • 실시간 학습이 어려움
    • 학습 시간

이 방법은 대규모 데이터셋에서 높은 정확도를 보이지만, 모델 학습이 느리고 리소스를 많이 소모한다. 또한, 새로운 데이터가 추가되면 모델을 다시 학습시켜야 한다.

Incremental Learning(Online Learning)

Incremental Learning은 데이터를 일부씩 모델에 입력하여 학습하는 방법이다. Online 상에서 실시간으로 학습이 이루어지기 때문에 Online Learning이라고도 한다. 실시간 반영이 중요한 주식 예측, 추천 시스템, 온라인 광고, 검색 엔진 등에 사용된다. learning rate를 높게 하면 새로운 데이터에 빠르게 적응하지만 이전 데이터를 금방 잊게될 수 있으므로 설정에 주의해야 한다.

  • 장점
    • 실시간 학습
    • 대규모 데이터 처리 용이
  • 단점
    • 개발 비용 증가
    • 이상치 데이터 처리

이 방법은 전체 데이터셋을 한 번에 처리하지 않기 때문에 처리 속도가 빠르며, 새로운 데이터가 추가되어도 기존에 학습된 모델을 사용하여 새로운 데이터를 학습할 수 있다. 그러나, 일부 데이터만을 사용하여 학습하기 때문에 정확도가 낮을 수 있다. 또한 이상치 데이터가 들어올 경우 모델의 학습이 완전히 다른 방향으로 치우칠 수 있어 이상치 처리에 주의를 기울여야 한다.

추천시스템 + 강화 학습은 이 Incremental Learning 방식을 사용한다고 보면 된다.

RS + RL

이 글에서 강화 학습의 기초 개념을 설명하지는 않겠다. 이번 글에서는 Deep Reinforcement Learning absed Recommendation with Explicit User-Item Interactions Modeling이라는 논문을 통해 설명하려 한다.

추천시스템에 강화 학습을 결합하면 위와 같은 그림이 된다.

  • Enviroment = Users
  • Agent = Recommender
  • state = user’s positive interaction
  • action = 모든 candidate items의 ranking scores를 결정, Top-N items이 추천됨
  • Reward = user’s feedback(satisfaction)

User가 Environment가 되어 rewardstate를 만들어낸다. Agent에서는 추천 아이템을 action으로 뽑아내고 이를 User에서 제공한다. 그 안을 좀 더 자세히 살펴보면 아래의 그림과 같다.

순차적으로 설명하자면 다음과 같다.

  1. MF 혹은 ALS와 같은 Decomposition 모델을 사용하여 User vector와 Item vector를 생성한다.
  2. User(Environment)의 positive interaction에 해당하는 item vactor와 user vector를 통해 state vector를 계산한다. 2-1. 좀 더 자세히 살펴보면, user vector + user-item interaction vector + item vector(avrage pooling)를 concat해준다.
  3. 2번에서 만든 state vector를 input으로 받은 Actor 블록의 ouput으로 Ranking vector인 action을 계산한다.
  4. Critic 블록에서는 state vector와 Ranking vector를 통해 Q-value를 계산하게 되고, 모델의 weight를 업데이트하게 된다.
  5. Ranking vector와 Item space의 scalar product를 통해 아이템을 추천한다.

위와 같이 강화 학습과 추천시스템을 결합 할 수 있다. 임베딩에서는 추천시스템의 기법이 사용되었고, 이를 기반으로 강화 학습을 통해 모델을 업데이트 한다. 테스트 하고 싶다면, timestamp가 있는 데이터를 활용하여 구현하고 실험 해볼 수 있다.

References