본문 바로가기
Study/개발자 블로그

카카오 AI추천 : 토픽 모델링과 MAB를 이용한 카카오 개인화 추천

by 22 장지훈 2023. 12. 5.

우리의 일상 속에는 수많은 추천이 함께합니다. 오늘은 개인화 추천 기술에 대해 함께 알아보려고 합니다.

 

 

 

위와 같은 기사에 대해서 한번 생각해 보겠습니다. 이 기사에 대해 기대할 수 있는 클릭률을 계산했을 때 모든 사람이 동일하진 않습니다. 한국 야구에도 관심이 많고 추신수 선수에게도 관심이 많은 어떤 사람은 이 콘텐츠를 보자마자 클릭을 할 수도 있고, 어떤 사람은 이 콘텐츠를 보더라도 제목만 보고 클릭은 하지 않을 수도 있습니다.

 

 

 

 

이처럼 개인마다 각 콘텐츠에 기대할 수 있는 클릭률이 다르기에, 이를 계산하고 클릭할 확률이 가장 높은 콘텐츠들을 각 사용자에게 맞춤형으로 제시해 주는 것이 개인화 추천 기술이라고 할 수 있겠습니다. 각 서비스마다 조금씩 다른 방법으로 개인화 추천이 이루어지고 있지만 오늘은 토픽 모델링과 실시간 최적화(Multi-Armed Bandit(MAB) 방식의 실시간 최적화)를 함께 활용한 개인화 추천 프레임워크 기술에 대해 소개하고자 합니다. 우선 토픽 모델링과 MAB에 대해 각각 설명한 후, 이 둘을 함께 활용해서 어떻게 개인화된 추천 결과를 생성할 수 있는지에 대해 소개하겠습니다.

 

 

 

토픽 모델링은 기존에 자연어 처리 분야에서 사용되고 있었던 기법입니다. 하나의 문서 안에 다양한 주제가 있다고 가정할 때, 문서별로 속한 단어들을 가지고 문서가 각 주제에 대해 얼마나 속해 있는지를 계산하는 것이죠. 개인화 추천에서도 사용자들과 콘텐츠들의 특징을 추출하기 위해 토픽 모델링을 먼저 진행하게 됩니다. 자연어 처리 분야에서는 문서별로 속한 단어들을 가지고 토픽 모델링을 수행했었는데, 여기서 ‘문서’를 ‘사용자’로, ‘단어’를 ‘아이템’으로 바꾸게 되면, 서비스 내의 클릭 로그를 가지고 토픽 모델링을 수행할 수 있게 됩니다. 그 결과, 위 그림처럼 각 사용자에 대한 주제 벡터를 구할 수 있습니다. 이때, 벡터의 크기 k는 토픽의 개수이며 각각의 값은 주제에 속할 확률을 의미하게 됩니다.

 

 

 

 

 

이제 각각의 토픽에 대해 실시간 최적화를 수행하는 방법에 대해 알아보겠습니다.

실시간 최적화를 위해서는 MAB모델을 사용할 수 있습니다. MAB는 보상을 알 수 없는 K개의 선택지가 존재할 때 탐색과 활용을 적절히 조절하여 최종 보상의 총합을 최대화하는 문제라고 볼 수 있습니다.

사용자에게 어떤 콘텐츠를 추천하면 좋을지 탐색하기 위하여 새로운 콘텐츠를 추천해 주고 피드백을 수집하는 것이 탐색(Exploration), 수집된 피드백을 바탕으로 사용자가 가장 좋아할 것으로 예상되는 콘텐츠를 추천해 주는 것이 활용(Exploitation)의 예라고 할 수 있습니다.

기존 서비스에 새로운 추천 시스템을 만들고자 한다고 가정해보겠습니다. 활용할 수 있는 알고리즘 기법에는 대표적으로 전통적인 CF기법이 있을 것입니다. 요즘도 학계에서는 전통 CF 프레임워크 구조를 바탕으로 많은 연구들이 이루어지고 있습니다.

 

 

 

 

그렇다면 실제 개인화 추천 서비스에서 MAB 알고리즘을 사용하는 것은 어떠한 장점이 있기 때문에 사용하는 것일까요?

다양한 장점들이 있을 수 있겠지만 크게 3가지를 소개하고자 합니다. 첫 번째는 ‘실제 환경에서 목표를 학습’할 수 있다는 것, 두 번째는 장기적인 보상을 최적화 시켜주는 ‘탐색(Exploration)’, 그리고 세 번째는 ‘실시간성’입니다.

 

 

 

 

전통적인 CF 프레임워크에서는 유저와 아이템의 상호작용(Interaction)에 대한 과거 데이터 X를 바탕으로 유저 u의 아이템 i에 대한 선호도를 예측할 수 있는 모델을 주로 지도학습을 통해 학습합니다. 이때 u, i가 유저의 아이템에 대한 선호도를 나타낼 수 있는 목표이며, 평점, 클릭 여부, 체류 시간 등이 될 수 있습니다.

이와는 다르게 MAB는 강화 학습 기반의 프레임워크로써, 추천 모델이 유저 u에게 아이템 i를 추천해 주고 그에 대한 실제 피드백을 관찰하며 모델을 업데이트합니다.

과거 데이터를 바탕으로 지도학습 CF 모델을 학습할 경우에는 모델의 추천 결과를 사람에게 보여주고 이에 대한 반응(피드백)을 살펴볼 수 없기 때문에 ‘추천해 줬을 때 클릭을 하는지’를 직접적으로 최적화할 수는 없습니다. 그렇기 때문에 대리 목표를 최적화함으로써 간접적으로 실제 목표 또한 잘 맞추도록 학습되길 기대하는 것입니다. 이처럼 과거 데이터를 기반으로 한 CF 모델과 강화 학습 기반의 MAB 모델은 학습하는 목표가 분명히 다릅니다.

때문에 CF 모델의 경우 전체 서비스의 방대한 과거 데이터를 사용할 수 있다는 장점이 있지만, 개별 추천 행동과는 무관하게 과거 데이터를 통해 학습합니다.

사용자는 새로운 콘텐츠를 찾고자 할 수도 있습니다. 또한, 현실의 추천 시스템은 다양한 요인에 따라 그 시스템 내에서 아이템의 특성이 달라질 수도 있습니다.

결국 실제 시스템에서 행동에 대한 피드백을 취한 게 아닌, 과거 데이터로부터 정의한 대리 목표를 정답으로 학습한 모델의 경우, 실제 목표와의 간극이 발생할 수밖에 없습니다.

그러나 MAB는 실제 목표와의 간극이 없습니다.

 

 

 

 

 

다음으로 MAB는 T 번의 타임 스텝동안 행동을 취하며 누적 보상을 최대화할 수 있도록 설계된 알고리즘입니다.

그렇기 때문에 당장 현재 스텝(Step)에서 기대 보상(Reward)이 높지 않더라도 이후 미래의 보상을 높여줄 수 있다면 해당 행동을 선택합니다. 이를 탐색(Exploration)이라고 합니다. MAB가 탐색(Exploration)을 통해 사용자가 익숙하지 않지만 좋아할 수도 있는 새로운 아이템을 추천하기도 하는 반면, 전통적인 CF 프레임워크에서는 과거 데이터를 바탕으로 현재 가장 선호할 아이템만을 추천합니다.

현실의 추천 시스템은 근본적으로 사용자와 시스템이 상호작용하며 동적으로 변화합니다. 이런 상황에서 탐색 없이 활용만 한다면 새롭게 추가되는 아이템들은 추천에서 배제될 것입니다. 때문에 미래의 보상도 고려한 탐색은 추천 시스템의 장기적인 성능에 많은 도움이 됩니다.

 

 

 

 

 

MAB 알고리즘의 또 다른 장점은, 사용자의 피드백이 실시간으로 모델에 적용되어 추천 결과에 나타난다는 것입니다. 이러한 실시간 업데이트는 실제 클릭률에 영향을 미칩니다.

추천 결과를 보여주고 그에 대한 사용자의 피드백이 모델에 반영되어 다시 추천 결과에 나타나는 한 번의 루프에 드는 시간이 얼마나 짧은지에 따라 실제 클릭률이 유의미하게 달라지며, 실험 결과 이러한 업데이트 소요 시간이 짧으면 짧을수록 클릭률도 올라갔습니다.

오프라인 모델, 혹은 정적 모델에 비해 애초에 실시간으로 업데이트하는 구조를 가정하고 설계된 MAB 알고리즘이 실시간 최적화를 달성하기에 더 유리하기에 이는 MBA의 또 다른 장점입니다.

 

 

 

 

 

지금까지 개인화 추천 방식을 이해하기 위해 그 구성요소인 토픽 모델링과 MAB에 대해 간단히 알아보았습니다.

개인화 추천은 사용자 각각의 취향에 부합하면서도 현재 상황에 가장 적절한 콘텐츠를 추천해 주어야 하는데요, 먼저 추천이 제공되기 전에 사전에 쌓아놓았던 사용자와 아이템 간의 클릭 로그를 기반으로 토픽 모델링을 진행해 사용자와 아이템 각각에 대한 주제 벡터를 계산해놓습니다. 이때, 사용자의 주제 벡터는 사용자가 각 주제를 얼마나 선호하는지를 의미하고, 아이템의 주제 벡터는 아이템이 각 주제에 얼마나 속하는지를 의미합니다. 그런 다음 각 주제별로 MAB를 하나씩 할당합니다.

위 그림을 예로 들면, 사전에 진행한 토픽 모델링을 통해 사용자와 아이템이 [‘패스트푸드’, ‘제과’, ‘육류’]라는 주제에 얼마나 속하고 있는지를 계산합니다. 사용자의 주제 벡터가 [0.06, 0.10, 0.84]로 이루어져 있다는 것은 사용자가 ‘육류’라는 주제에 관심이 많다는 것을 의미합니다. 그와 동시에 각 주제에 해당하는 MAB에서는 모든 아이템에 대해 각 주제에 맞는 추천 점수를 가지고 있습니다.

사용자에 대한 추천 요청이 들어올 경우, 토픽 모델링에서 구한 사용자의 취향이 ‘육류’에 치우쳐져 있다면 추천 결과 또한 ‘육류’ MAB의 추천 결과에 가중하여 전달합니다.

그런 다음 어떤 사용자의 추천 결과에 대한 피드백을 받게 되면, 피드백 또한 추천이 나갈 때처럼 주제별로 속할 확률을 바탕으로 각 MAB에 피드백을 나누어서 전달하게 됩니다. 이 피드백에 해당하는 추천이 ‘패스트푸드’라는 주제에 집중했었던 추천이었다면, 해당 추천의 피드백 또한 ‘패스트푸드’의 MAB에 집중되어 전달되게 됩니다.

 

지금까지 카카오 추천팀에서 사용중인 토픽 모델링과 MAB 알고리즘을 통해 개인화 추천을 제공하는 방법에 대해 알아보았습니다. 감사합니다.