추천 후보는 많을수록 좋을까? TopK를 최적화해 전환율을 높인 방법

6 days ago 15

안녕하세요. 토스 Commerce Personalization Team에서 토스 쇼핑의 추천 시스템을 만들고 있는 ML Engineer 구국원입니다.추천 시스템은 흔히 더 좋은 모델을 만드는 문제로 보입니다. 하지만 실제 서비스를 운영하다 보면 모델 바깥에도 성능을 좌우하는 중요한 결정이 많아요. 각 추천 모델에서 상품을 몇 개씩 가져올 것인지 정하는 TopK도 그중 하나입니다.저희는 여러 리트리벌(Retrieval) 모델의 TopK를 경험적으로 정해 왔습니다. 새로운 리트리벌 모델이 생길 때마다 후보 수는 조금씩 늘었고, 어느새 랭커(Ranker)가 평가해야 할 상품과 광고 유효성 검사량도 함께 커졌어요. 그렇다고 모든 리트리벌 모델의 후보를 같은 비율로 줄이면 가치 있는 상품까지 잃을 수 있었습니다.이 글에서는 이 문제를 조합 최적화 문제로 바꿔 풀고, 온라인 실험으로 검증한 과정을 소개할게요. 결론부터 말하면 전체 후보 수를 약 절반으로 줄이면서 User CVR(User Conversion Rate)은 7.55%, 사용자당 주문 수는 10.13% 높일 수 있었습니다.TopK가 커질수록 추천이 좋아질까요?토스 쇼핑의 추천 시스템은 크게 Retrieval, Ranking 단계로 이루어져 있어요.TopK의 K는 각 리트리벌 모델이 다음 단계로 넘기는 상품 수예요. 예를 들어 구매 이력을 보는 모델에서 500개, 최근 클릭을 보는 모델에서 200개를 가져오면 두 모델의 TopK 합은 700개가 됩니다.후보가 많으면 좋은 상품을 놓칠 가능성은 줄어듭니다. 하지만 공짜는 아니에요. Ranking 단계가 평가할 상품이 많아지고, 광고 상품의 유효성을 확인하는 비용도 늘어납니다. 따라서 피드를 만드는 데 총 소요 시간이 증가하여 응답 시간이 길어질 수 있고, 점수가 낮은 후보가 뒤 단계까지 살아남을 가능성도 커져요.당시 TopK는 주로 각 모델을 담당하는 ML Engineer의 경험에 따라 정했습니다. 개별 모델만 보면 합리적인 값이어도 여러 리트리벌 모델의 후보를 합치면 전체 후보 수가 계속 커지는 구조였어요. 더 어려운 점은 모든 리트리벌 모델이 같은 가치를 만들지 않는다는 것이었습니다. 어떤 모델은 상위 수백 개까지 구매 가능성이 높지만, 다른 모델은 상위 몇십 개 이후 가치가 빠르게 낮아졌어요.그래서 질문을 바꿨습니다.모든 리트리벌 모델의 TopK를 똑같이 줄이지 않고, 전체 후보 수라는 예산 안에서 가치가 높은...

Read Entire Article