자이가 블럭스로 새롭게 태어났습니다

앞으로 새로운 웹사이트(www.blux.ai)를 이용해주시면 감사하겠습니다.

chevron-up
목록으로

강화학습? 강화학습! (1)

사용자가 표현하는 선호를 강화학습을 통해 모델링하기

Tech
2023/09/21

안녕하세요! Z.Ai팀의 ML 엔지니어 Simon입니다 😄

지난글을 마무리하면서 Transformer 기반의 순차모델은 사용자의 행동정보를 추출하는데 좋은 성능을 보여주고 있지만 여러 한계점이 있다고 설명드렸습니다. 이번글부터는 그 한계점들을 보완하기 위해 어떤 노력을 하고 있는지 설명드리도록 하겠습니다!

사용자가 표현하는 상품의 선호도를 모델에 반영할 수 없을까?

Sequential Recommendation Model의 Input은 사용자가 어떤 순서로 어떤 상품을 상호작용하였는지에 대한 정보입니다. 하지만 사용자는 자신이 상호작용한 상품에 대해 모두 같은 선호도를 가지고 있지 않습니다. 이는 행동데이터를 통해 간접적으로 알 수 있습니다. 가령 사용자가 자신이 클릭한 상품이 마음에 들었다면 좋아요를 누르거나 정말 마음에 들었다면 구매를 진행할 것입니다. 물론 직접적인 선호를 표현하는 리뷰나 별점 데이터를 적극 활용하는 것이 좋지만 해당 데이터는 매우 희소하기 때문에 Z.Ai의 ML팀은 행동 데이터에서 간접적으로 드러나는 정보를 모델에 학습시키기 위한 방법을 모색하였습니다.

Z.Ai는 고객사들에게 간단하게 Z.Ai의 추천 엔진에 쉽게 데이터를 연동할 수 있도록 SDK를 제공하고 있습니다. 이를 통해 어떤 사용자가 언제, 어떤 상품을 어떻게(클릭, 좋아요..) 행동하였는지에 대한 정보를 수집하고 있는데요, “어떻게”에 해당하는 필드에 대한 정보를 이용해 모델링하는 방식으로 접근하였습니다. 처음에는 Transformer를 통과한 사용자의 선호 벡터에 좋아요 등 명확한 선호 표현이 발생한 상품 벡터들을 Concat하여 Linear Mapping을 하는 등의 방식을 시도해보았지만 한계점이 분명하였습니다. 우선 사용자의 선호도에 대한 상대적인 차이를 명확하게 모델링할 수 없었고, 그 상대적인 차이를 모델러가 통제할 수 없었기 때문입니다. 이에 모델의 목적을 다음과 같이 정하여 리서치를 진행하였습니다.

이에 모델의 목적을 다음과 같이 정하여 리서치를 진행하였습니다.

  1. 상품에 대한 사용자의 선호를 숫자로 표현할 수 있어야하며, 이는 모델러가 통제가능해야 한다.
  2. 사용자가 보여주는 상품에 대한 상대적인 선호의 차이를 모델에 명확하게 반영하여 학습 혹은 추론시 사용자의 선호를 극대화할 수 있어야 한다.

이러한 목적에 맞는 방법이 강화학습(Reinforcement Learning)이라고 판단한 Z.Ai의 ML팀은 Sequential Recommendation에 강화학습을 적용할 수 있는 방법을 고민하였습니다.

💪 강화학습이 뭔데?

강화학습이란?

강화학습은 어떤 행동(Action)을 취하는 주체(Agent)가 환경(Environment)과 상호작용하며 자신의 행동을 결정하는 정책(Policy)을 최적화하는 과정을 모델링한 학습 방법입니다. 이때 Agent의 행동은 Environment의 상황(State)에 따라 달라지며 Environment는 Agent의 행동에 맞는 보상(Reward)를 줌과 동시에 자신의 State를 변화시킵니다. 이런 과정에서 Agent는 이러한 피드백을 바탕으로 해당 환경에서 지속적으로 행동을 하였을 때 향후 기대되는 Reward들의 합인 Cumulative Reward가 극대화되는 방향으로 Policy를 수정하여 행동을 변화시켜 나갑니다. 이 과정에서 Agent는 자신의 행동이 Environment의 State에 어떤 연쇄적인 변화를 유발할 것인지, 이때 자신이 얻을 수 있는 Reward는 어떻게 되는지 기댓값을 통해 계산해야합니다. 이를 위해서는 State가 자신의 행동에 따라 어떻게 변화하는지에 대한 전이확률(Transition Probability)을 알아야하고, 향후 발생할 수 있는 모든 Reward의 값을 계산할 수 있어야 합니다. 이는 Bellman Equation에 따라 앞으로 발생할 모든 경우가 아닌 바로 다음 State에 대해서만 고려해도 되며, 이에 대한 유일해가 존재함이 증명되었지만 매 단계마다 Transition Probability를 계산하는 것을 불가능합니다.

강화학습은 시뮬레이션을 통해 Environment 속에서 다양한 Action(Exploitation, Exploration)을 취하며 Transition Probability에 대한 정보가 없이도 최적의 Policy를 학습할 수 있도록 고안된 학습 방식입니다.

강화학습 모델을 어떻게 정의하고, 학습시키지?

강화학습의 궁극적인 목표는 주어진 State에서 취해야할 Action을 결정하는 Policy를 최적화하는 것이고, 이를 정의하기 위해서는 크게 Agent가 Environment와 상호작용하는 Policy와 목적함수, 학습방식을 고려해야 합니다. 각각에 대해 간단하게 설명하면 다음과 같습니다.

1. Agent가 Environment에서 행동하고, 학습하는 Policy에 따라 : On-Policy vs Off-Policy

On-Policy와 Off-Policy의 가장 큰 차이점은 Agent의 Action을 결정하는 Behavior Policy와 학습의 대상이 되는 Target Policy의 동일여부입니다. 두 Policy가 같을 경우 On-Policy, 다를 경우를 Off-Policy이라고 정의합니다. 쉽게 정리하면 On-Policy 방식의 Model의 경우 Environment와 상호작용(Behavior Policy)하며 즉각적으로 Agent 자신의 Policy를 업데이트(Target Policy)해나가는 반면, Off-Policy 방식은 다른 Agent들의 행동을 통해 수집된 데이터를 기반으로 행동하며(Behavior Policy) 자신의 Policy를 업데이트(Target Policy)해나갑니다.

2. 목적 함수의 형태에 따라 : Policy-Based vs Value-Based

모든 Machine Learning Model을 학습시키기 위해서는 최적화의 대상이 되는 목적함수가 필요합니다. 강화학습 역시 마찬가지 입니다. Policy를 최적화하기 위해서는 Policy와 관련된 Objective Function이 필요하고, 이를 학습하기 위한 Gradient값을 정의해야합니다. 우선 강화학습에서는 Policy 최적화를 위한 목적함수를 Cumulative Expected Reward를 이용하여 정의합니다.

maxπθEτπθ[R(τ)] where R(τ)=t=0|τ|λtrt(st,at)

위 최적화식의 직관적인 의미는 Cumulative Expected Reward를 극대화하는 방향으로 Policy를 학습하겠다는 것입니다. 구체적으로 Cumulative Expected Reward의 정의와 의미는 다음과 같습니다.

R(τ)=t=0|τ|λtrt(st,at)

Cumulative Expected Reward는 Agent는 Episode가 끝날 때까지 앞으로 발생할 Reward는 모르기 때문에 Expected Value로서 표현이 되고, 이는 Action을 취했을 때 다음 State로 전이되는 Transition Probability와 Agent가 Action을 취하는 Policy의 Expectation으로 정의됩니다. Discount Factor는 0에서 1사이의 값을 가지며, 1에 가까울 수록 먼 미래의 Reward도 현재 Policy에 강하게 반영하겠다는 것을 의미합니다.

이를 Expectation의 정의에 맞게 식을 표현하면 다음과 같습니다.

Eτπθ[R(τ)]=τP(τ|θ)×R(τ)

이때, 해당 Episode가 발생할 확률을 뜻하는 P(τ|θ)는 다음과 같이 표현이 가능합니다.

P(τ|θ)=ρ0(s0)×Πt=0τ{P(st+1|st,at)×π(at|st)}

위 식에서 알 수 있는 사실은 강화학습의 목적함수가 Policy의 함수로써 표현된다는 것입니다.

Policy-Based 방식은 Policy도 하나의 확률분포이기 때문에 Policy 자체를 파라미터화하여 최적화하는 방식입니다. 즉, Eτπθ[R(τ)]πθ(a|s)의 함수이므로, πθ(a|s)으로 편미분하여 그 값을 최적화할 수 있습니다. 반면 Value-Based 방식은 Policy를 ϵgreedy방식으로 정의합니다. ϵgreedyPolicy는 기본적으로 현재 State에서 특정 Action을 선택했을 때 앞으로 발생할 수 있는 모든 상황들에 대한 Cumulative Reward들의 Expectation 값인 Q-Value가 가장 높은 Action을 선택하며, 매우 작은 확률인 ϵ의 확률로 다른 Action을 취해 Environment를 Explore하는 방식입니다. 즉, Q-Value를 잘 예측하여 최적의 Policy에 도달하는 것이 목표가 됩니다. 대표적인 학습방식이 Q-learning이며, 이를 Deep Learning으로 접목시킨 알고리즘이 DQN입니다. [3]

3. 학습의 실시간성에 따라 : Online Training vs Offline Training

강화학습 모델이 Environment와 실시간으로 상호작용하며 Gradient를 Back Propagate하는 방식을 Online Training이라 하고, Offline Training은 기존 데이터로 학습을 한 뒤 실제 프로덕션환경에서는 추론만 진행하는 방식입니다. 전자는 적은 데이터로도 점진적으로 학습할 수 있다는 장점이 있고, 후자는 충분한 데이터로 학습한 경우 안정적인 성능을 보여줄 수 있다는 장점이 있습니다.

🤔 그래서 왜 강화학습인데?

강화학습을 추천 시스템에 적용한다면 상품에 대해 사용자가 표현하는 상대적인 선호를 모델러가 리워드 함수로 자유롭게 정의할 수 있다는 것이 가장 큰 장점이었습니다. 가령 사용자가 특정 상품에 클릭을 하거나 좋아요를 누르거나 구매를 한 상황의 경우를 모두 다른 리워드를 부여하여 선호의 차이를 구분할 수 있습니다. 나아가 객단가 낮은 상품들을 위주로 취급하는 플랫폼에서의 구매와 객단가가 높은 상품들을 위주로 취급하는 플랫폼에서의 구매에서 사용자가 표현하는 선호는 차이가 있을 것입니다. 강화학습을 이용하게 될 경우 두 플랫폼의 차이를 미세하게 조정하여 모델링을 진행할 수 있습니다.

두번째 장점은 사용자의 장기적인 만족감을 고려한 모델링이 가능하다는 것입니다. Sequential Recommendation Model의 경우 목적함수로써 Negative Log Likelihood를 주로 사용합니다. 훈련 시 특정 행동 데이터를 가진 사용자가 바로 다음으로 상호작용한 상품의 확률을 Maximize하는 방향으로 훈련이 됩니다. 사용자의 바로 다음 상호작용을 맞추는데 모델 학습의 초점이 맞추어져 있는 것이라고 이해할 수 있습니다. 이는 모델 학습입장에서 최근 상호작용을 진행한 상품과 유사한 상품을 추천으로 반환할 경우 loss가 떨어질 것이라 판단하는 경우가 많고, 이는 사용자가 쉽게 모델의 행동을 파악하여 추천 지면에서 쉽게 이탈하는 결과로 이어집니다. 강화학습의 목적함수는 Cumulative Expected Reward Function을 극대화하는 것입니다. 이는 리워드 함수를 잘 설정할 경우 사용자의 장기적인 만족감을 극대화하는 방향으로 모델을 학습시킬 수 있을 것이라 판단하였습니다.

세번째 장점은 강화학습을 이용할 경우 다양한 방식으로 모델링이 진행할 수 있다는 것입니다. 강화학습의 ϵgreedy방식을 이용할 경우 사용자의 Exploration을 유도하는 추천 결과를 타겟팅할 수 있고, 이는 사용자에게 더욱 다채로운 경험을 제공할 수 있습니다. 또한 인기상품뿐만 아니라 Long-Tail에 존재하는 상품들도 노출시켜 해당 플랫폼에서 상품을 탐색하는 체류시간을 증가시킬 수 있습니다.

이러한 세가지 장점들은 Z.Ai의 추천 엔진에 강화학습을 접목시킬 이유가 충분하다고 판단하였고, 이를 적용하기 위해 강화학습의 구성요소를 추천 도메인에 맞게 재정의하고, 여러 실험들을 진행하였습니다.

🤷‍♂️ Sequential Recommendation에 강화학습 적용하기

추천 시스템의 관점에서 강화학습의 재정의

강화학습을 추천 시스템에 적용하기 위해서는 우선 강화학습의 구성요소들을 추천 도메인에 맞게 재정의할 필요가 있었고, 다음과 같이 정의하였습니다.[2],[4]

  1. Environment : Reward를 주는 요소로, 사용자가 이에 해당합니다.
  2. Agent : Action을 취하는 요소로, 추천이라는 Action을 취하는 추천 시스템이 이에 해당합니다.
  3. S: 모든 가능한 사용자 state의 집합입니다. 이때 state는 사용자가 이전에 interaction한 item들로 modeling이 가능하며, 이는 Sequential Recommender System Model의 hidden state로 정의가 가능합니다. ⇒ Notation : st=G(x1:t)S
  4. A: Agent(추천 시스템)가 취할 수 있는 모든 Action들의 집합으로 추천의 대상이 되는 상품들로 이해할 수 있습니다. Offline dataset에서는 예측해야하는 next interaction item이 됩니다. ⇒ Notation : at=xt+1
  5. P: S×A×SR: State Transition Probability, Agent가 주어진 State에서 특정 Action을 취했을 때 다음 State로 이전될 확률입니다. → Almost Unknown
  6. R:S×AR: Reward, Agent가 상품에 대해 보이는 반응으로, Event Type으로써 알 수 있습니다. ⇒ Notation : rt(st,at)
  7. λ: 미래에 발생할 Reward를 현재가치로 환산할 때 사용되는 Discounting Factor

어떻게 모델을 설계하고, 훈련을 시킬까?

추천 시스템의 관점에서 강화학습을 정의하였다면 다음 단계는 이를 바탕으로 모델을 설계하고, 학습시키는 것입니다. 강화학습 모델을 정의하기 위해서는 앞서 설명한 요소들을 고려해야 하는데요, 결론적으로 Off-Policy 방식을 기반으로 Value-Based 방식으로 목적함수를 정의하여 Offline 방식으로 훈련을 진행하였습니다. 이 의사결정에는 추천 시스템은 UX와 직결된 요소라는 사실이 크게 반영되었습니다.

추천 시스템은 서비스의 가장 핵심지면에 위치하는 경우가 많습니다. 때문에 사용자가 해당 서비스에 접속한 경우 제일 먼저 접하게 되는 경험이 추천 시스템일 가능성이 매우 높습니다. 이때, Online Training 방식을 채택하여 안정적으로 학습되지 않은 모델을 실시간으로 학습시킬 경우 학습 초반 모델의 결과를 경험하는 사용자의 경우 쉽게 이탈하게 됩니다. 즉, 성숙도가 낮은 모델을 서빙할 경우 전반적인 사용자 경험을 헤칠 수 있기 때문에 Online Training이 아닌 Offline Training을 적용하기로 결정하였습니다.

Offline Training을 진행할 경우 데이터가 수집될 때의 행동은 해당 시기에 서빙되고 있던 추천 모델에 의한 Sequence이기 때문에 Bahavior Policy와 학습을 진행하는 Target Policy가 다르게 됩니다. 이는 자연스럽게 Off-Policy 방식을 채택하는 이유가 되었습니다. 또한 Bahavior Policy와 Target Policy가 다를 경우 Bahavior Policy에 존재하는 Bias를 보정해주어야 합니다.[4] Inverse Propensity Score 등으로 보정한다하더라도 Unbounded Variance 등의 불안정한 모습이 나타날 수 있습니다. 역시나 안정적인 학습을 위해 Value-Based Model을 채택하기로 결정하였습니다.

😩 문제는 데이터야!

Offline Training에 사용되는 행동 데이터는 기본적으로 매우 희소합니다. 예를 들어 10만개의 상품을 가진 플랫폼에서 사용자들이 실제로 상호작용을 진행하고, 피드백을 주는 상품은 얼마나 될까요?

또한 행동 데이터는 모두 Positive Feedback 데이터입니다. 특정 사용자가 어떤 상품을 클릭했다는 것은 진열된 상품 중 해당 상품을 선택했다는 것이니 긍정적인 피드백을 주었다고 판단할 수 있습니다. 강화학습 역시 Machine Learning의 일종이기 때문에 데이터는 매우 중요합니다. 특히나 Policy를 잘 학습하기 위해서는 Negative Feedback도 매우 중요하게 동작합니다.

때문에 강화학습의 논리를 온전히 추천시스템에 적용하는 것은 모델의 성능을 충분히 끌어올리지 못할 것이라 판단하였습니다. 이에 Z.Ai ML팀은 다양한 문헌을 찾아보며 이를 해결하기 위해 노력하였는데요, 다음 글에서는 이와 관련된 논문들과 함께 어떻게 이 문제를 해결하고자 했는지 설명드리도록 하겠습니다.

📚 Reference

[1] Reinforcement Learning : An Introduction (Richard Sutton)

[2] Self-Supervised Reinforcement Learning for Recommender Systems (Xin xin, 2020)

[3] Playing Atari with Deep Reinforcement Learning (Volodymyr Mnih, 2013)

[4] Off-policy Learning in Two-stage Recommender Systems (Jiaqi Ma, 2020)

Simon
ML Engineer
자이에서 ML Engineer로 일하고 있는 김회인 입니다. 😁
editor : Mike
z.ai Z.Ai 자이 제트에이아이 개인화추천자이의 개인화 추천으로 구매전환율 및 매출의 상승을 경험해 보세요!
도입 문의