추천 시스템의 현실적인 어려움에 대해서 KCC 2022 Workshop (Kakao Tech Workshop)에서 발표한 내용입니다.
Challenges in Real-world Recommender Systems박치완 bell.park카카오 추천팀kakao techCopyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.
View Slide
카카오 추천팀- 여러가지 카카오 서비스에 추천 시스템을 제공하고 추천 로직을 지속적으로 개선하는 조직- 추천 시스템과 머신 러닝 기술을 통해 카카오 서비스의 성공을 견인하는 것이 목표- 멜론, 카카오웹툰, 픽코마, 미디어다음 뉴스, 브런치, 선물하기 등 다양한 서비스의 추천 시스템 제공- 콘텐츠 부터 커머스 까지 넓은 도메인을 다룸- 실제 서비스에 추천 시스템을 적용하기 위한 다양한 업무를 수행- 대규모 데이터 처리를 위한 파이프라인 구축- 서비스 데이터 분석 및 목표 지표 디자인- 추천 모델 연구- 실시간 서빙을 위한 추천 API 개발
- 실제 서비스에 추천 시스템을 적용할 때 마주하는 여러 가지 문제 상황에 대해 공유합니다.- Cold-start Problem- Diversity- Response Time- 문제 상황에 대응하는 카카오의 접근법을 공유합니다.- Exploration-Exploitation- Diversification- Approximate K-NN and Optimization이 발표에서는
1. Cold-start2. Diversity3. Response TimeSummary
1. Cold-start2. Diversity3. Response Time마무리
- 사용자 또는 아이템에 대한 정보가 없어 협업 필터링(Collaborative Filtering)을 하기 어려운 상황- Item cold-start- 새로 추가된 아이템이라 아이템의 소비 이력이 없음- User cold-start- 서비스에 처음 접속하는 (또는 다른 디바이스로 접속하는) 사용자- 실제 추천 환경에서 매우 빈번하게 발생함- 1시간 동안 발행되는 뉴스 기사 수는 1000개 이상- 대부분의 뉴스 기사는 4-6시간이 지나면 사용자가 소비하지 않음- 전면 풀 교체가 일어나는 경우도 존재함Cold-start Problem
- Item cold-start 문제를 해소하기 위해 카카오는 Exploration-Exploitation 전략을 사용- 신규 아이템에 대해서 추천을 수행해보면서 목표 메트릭을 수집 (Exploration)- 수집된 메트릭을 바탕으로 메트릭을 높일 수 있는 방향으로 추천 (Exploitation)Methods for Item Cold-start ProblemCold Item Warm Item
- Exploration-Exploitation 전략을 통해 실시간으로 아이템의 성능을 학습하는 과정을 반복적으로 수행- Multi-armed Bandit / Contextual Bandit 문제를 풀 수 있는 여러 가지 알고리즘을 사용- Thompson Sampling- UCB (Upper Confidence Bound)- LinUCB (Linear Upper Confidence Bound)- 간단한 확률 모델링을 넘어서 더 복잡한 모델을 적용하는 연구를 진행 중- Neural Bandits- DQN-based Recommender SystemsMethods for Item Cold-start Problem
- User cold-start 문제를 위해서 카카오는 여러가지 방법을 종합적으로 사용- 인기순 추천(Most Popular) 목록을 항상 유지하고, User cold-start 케이스에 활용- 다른 서비스의 사용자 행동 로그로 부터 관심사, 성/연령 정보를 추정해 추천에 활용- 다른 추천 모델이 생성한 추천 결과를 추정 관심사, 성/연령 정보를 통해서 모사- 관심사 추정 정보를 고도화 하는 실험을 준비 중- 카카오 서비스 사이의 Cross-domain recommendation 문제- 추천을 위한 유저 임베딩 생성 후 각 추천 영역에 전이 학습(Transfer Learning) 적용Methods for User Cold-start Problem
- 추천 품질 측면에서 다양성은 중요한 요소- 소비할 것 같은 아이템만 추천하면 점점 좁은 영역으로 소비 영역 수렴이 발생하게 됨 (feedback loop)- 카카오 뷰->사용자들이 다른 영역에서 콘텐츠(보드)를 소비할 수 없기 때문에 추천에 의한 영향이 큼- 전반적으로 인기가 높은 아이템이 사용자의 소비 이력에 추가될 확률이 점점 높아짐- 외부 요인이 없다면, 시간이 지날 수록 추천 결과가 수렴하는 현상이 발생- 추천 품질 측면이 아니더라도 다양성이 필요한 경우가 있음- 선물하기->기프티콘 이외의 다른 상품들도 선물이 이뤄질 수 있도록 해야함- 양면 시장(Two-sided market)인 서비스의 경우 이 부분이 부각됨- 아이템 생산자 역시, 자신의 아이템이 소비가 많이 되어야 이후 새로운 아이템을 생성할 동인이 생김Diversity
- Diversity를 높이기 위해 추천 결과의 후처리 작업을 주로 사용- 인접한 순위의 아이템들끼리 비교해 비슷한 아이템일 경우 순위 재조정- Diversity의 기준을 어떤 것으로 잡아야 하는지는 서비스와 추천 영역에 따라 다름- 카카오 뷰->추천하는 보드의 카테고리가 다양해지도록 튜닝- 멜론->추천하는 음악의 아티스트, 장르가 다양해지도록 튜닝- Diversity를 늘리는 것이 서비스의 성장에 도움이 되는지 데이터를 통해 검증하는 중- 다양한 아이템을 소비하는 사용자가 그렇지 않은 사용자보다 서비스를 더 길게 사용하나?- 다양하게 아이템을 노출 시켜주면 실제로 다양하게 아이템을 소비하는가?Diversity
- 추천 요청이 들어왔을 때 해야하는 일이 많음- A/B 테스트를 위한 실험 버킷 설정- 추천 모델의 결과 계산- 아이템 필터링- 기존에 소비한 아이템 제거- 서비스 요구사항에 부합하지 않는 아이템 제거- 더 이상 서비스 되지 않는 아이템, 연령에 따른 필터링 등- 메타 데이터 결합- 후처리 로직Response Time
- 카카오 추천 서버 통계- 하루에 1.7B+ 추천 요청 처리- 99.6%의 추천 요청이 100ms 이내에 처리됨Response Time
- 추천 영역 이외에도 서비스의 많은 부분이 있어 추천 영역의 요구 응답 시간 기준은 높은 편- 어떤 서비스의 경우, 추천 결과가 30ms 내에 나와야 함- 응답 시간 제약으로 인해 추천 모델 선택에 제약이 있음- 복잡한 랭킹 모델(Deep learning based ranking)의 적용의 어려움- 대부분은 내적(dot product)으로 계산할 수 있는 랭킹을 적용함- 아이템 개수가 매우 많은 경우 단순한 모델 조차도 계산 시간이 부담됨- 멜론 - 매 요청마다 50만개 이상의 아이템을 정렬 해야 함Response Time
- Candidate generation + Ranking의 2-stage 추천 모델 (Covington et. al., RecSys 2016)- Candidate generation 단계에서는 랭킹 모델의 부담을 줄이기 위해 가벼운 모델로 1차 필터링- 단순 아이템 인기도로 필터링 하는 경우도 있음- Ranking 단계에서 현재 상황과 사용자에게 맞는 아이템을 2차적으로 필터링해서 추천에 적용Response Time
- Approximate K-NN Search- 랭킹 모델에서 병목이 되는 주요 부분은 아이템별 스코어를 계산하는 마지막 레이어(Output)- 데이터 입력하는 부분은 대부분 0이므로 빠르게 연산 가능- 마지막 레이어의 행렬을 미리 Approx. K-NN 알고리즘으로 인덱스를 만들어 추천 요청시 빠르게 처리- Kakao N2 (https://github.com/kakao/n2)Response Time
- 카카오의 여러 서비스에 추천 시스템을 안정적으로 제공하기 위해 통합된 추천 시스템 구축- 추천 시스템을 실제 서비스에 적용하는 데는 여러가지 도전적인 어려움이 있음- Cold-start Problem->Bandits (Exploration-Exploitation), Cross-domain approach- Diversity->Diversification- Response Time->2-stage 추천 모델, Approx. K-NN마무리
Q&A카카오 추천팀이 더 궁금하다면?https://github.com/kakao/recoteam