데이터를 만들어내는 확률분포가 시간에 따라 변하는 상황을 말한다. 반대로 분포가 시간이 지나도 그대로면 stationary 다.

머신러닝 모델은 대개 “학습 데이터와 앞으로 들어올 데이터가 같은 분포에서 나온다” 는 가정 위에 서 있다. 이 가정이 깨지면 학습이 끝난 시점에는 잘 맞던 모델이 시간이 지나면서 조금씩 틀리기 시작한다.

추천·광고에서

이 분야에서 non-stationary 는 예외가 아니라 기본 조건에 가깝다.

  • 아이템 인기가 계절·이벤트·유행에 따라 바뀐다
  • 유저의 관심사가 시간에 따라 이동한다
  • 아이템 카탈로그 자체가 계속 늘고 줄어든다
  • 모델이 추천한 결과가 다음 로그를 만들어서, 모델이 스스로 데이터 분포를 바꾼다

Multi-Armed Bandit 에서 무엇이 달라지나

정상 환경의 bandit 은 각 arm 의 보상 분포가 고정돼 있다고 본다. 그래서 표본이 쌓일수록 추정이 정확해지고, 탐색을 점점 줄여도 된다.

분포가 변하면 이 논리가 뒤집힌다. 과거 관측이 지금의 보상을 설명하지 못하므로, 오래된 데이터를 계속 평균에 넣으면 추정이 옛날 상태에 붙들린다. 탐색을 완전히 멈추면 변화를 알아챌 방법도 사라진다. 그래서 다음과 같은 장치를 쓴다.

  • 표본 평균 대신 지수가중이동평균 — 갱신식을 로 두고 를 상수로 고정한다. 표본 평균은 이라 시간이 갈수록 새 관측의 영향이 사라지지만, 상수 는 오래된 관측에 지수적으로 낮은 가중치를 줘서 최근을 계속 따라간다
  • 탐색을 끝까지 유지epsilon-greedy algorithm 에서 을 0 으로 줄이지 않고 남겨둔다
  • 변화점 감지 — 보상이 급변한 시점을 찾아 그 이전 통계를 버린다