two-tower-model

2 개의 포스트

‘로컬’ 슈퍼 앱에서 장기 유저 모델링은 어떻게 달라질까? (새 탭에서 열림)

당근(Karrot)은 유저의 장기적인 행동 패턴과 여러 버티컬을 넘나드는 관심을 포착하기 위해 Transformer 기반의 장기 유저 모델링 시스템을 구축했습니다. 대규모 행동 로그를 대조 학습(Contrastive Learning)으로 학습하여 공통 유저 임베딩을 생성하고, 이를 홈피드와 광고 등 다양한 추천 지면에 적용함으로써 서비스 전반의 온라인 지표를 개선했습니다. 특히 지역 기반 서비스의 특성을 반영한 배치 샘플링 전략과 대규모 콘텐츠 임베딩 학습 기법을 통해 기술적 한계를 극복하며 개인화 추천의 품질을 한 단계 높였습니다. ### 장기 유저 모델링의 필요성과 구조적 접근 * 단기 히스토리만으로는 파악하기 어려운 계절적 취향, 이사 등 특정 시기에 발생하는 반복적 관심사, 그리고 중고거래와 알바 등 여러 서비스를 넘나드는 유저의 통합적 의도를 파악하기 위해 장기 모델링을 도입했습니다. * 실시간 랭킹 모델의 지연 시간(Latency) 문제를 해결하기 위해, 별도의 유저 인코더가 오프라인에서 임베딩을 생성하고 다운스트림 모델들이 이를 '공통 피처'로 사용하는 디커플링 구조를 채택했습니다. * 수백억 건의 다중 버티컬 로그를 활용해 유저의 다음 액션을 예측(Next Action Prediction)하는 방식으로 학습하며, 이는 기존 모델 대비 약 150배 많은 데이터를 활용한 결과입니다. ### 콘텐츠 임베딩 전환과 인프라 최적화 * 아이템 ID 기반 임베딩의 한계인 신규 아이템 대응 불가(Cold Start) 문제와 GPU 메모리 점유 문제를 해결하기 위해, LLM 기반의 콘텐츠 임베딩으로 전환했습니다. * 임베딩 테이블이 차지하던 메모리를 Transformer 모델 스케일업에 집중하여 파라미터 수를 ID 기반 모델 대비 1,000배 확장하는 데 성공했습니다. * 수백 GB 규모의 대규모 임베딩 데이터를 처리하기 위해 `memmap`을 사용하여 필요한 시점에만 데이터를 디스크에서 읽고, `bbhash(Minimal Perfect Hash)`를 통해 ID 매핑에 필요한 메모리를 97% 절감하는 기술적 최적화를 수행했습니다. ### 지역성을 고려한 지역 제한 배치 샘플링 (RCBS) * 당근은 거래의 86%가 반경 5km 이내에서 발생하는 지역 기반 서비스로, 유저가 물리적으로 볼 수 없는 지역의 아이템은 학습 시 의미 없는 부정 샘플(Impossible Negatives)이 되어 학습 신호를 희석시켰습니다. * 이를 해결하기 위해 같은 지역 유저끼리 미니배치를 구성하는 '지역 제한 배치 샘플링(RCBS)'을 도입하여, 유효한 부정 샘플(Feasible Negatives)의 비중을 2%에서 70%로 대폭 끌어올렸습니다. * 단순히 부적절한 샘플을 제거하는 마스킹 방식 대신 배치 구성을 변경함으로써, 효과적인 배치 사이즈를 유지하면서도 유저의 세밀한 취향을 구분해야 하는 '어려운 부정 샘플(Hard Negative)' 학습 효과를 얻었습니다. ### 실전 적용 및 운영 전략 * 생성된 유저 임베딩은 홈피드와 광고 랭킹 모델의 추가 피처로 입력되어 장기 취향을 보강하거나, 추천 후보(Retrieval) 모델의 독립적인 소스로 활용되어 결과의 다양성을 높였습니다. * 유저의 최신 취향을 반영하기 위해 GCP Dataflow와 Beam 파이프라인을 활용해 24시간 주기로 임베딩을 갱신하며, 최근 활동이 있는 유저만 선별적으로 추론하여 비용과 시간을 최적화했습니다. * 온라인 A/B 테스트 결과, 임베딩의 갱신 주기가 짧을수록 성능이 향상됨을 확인했으며 향후 실시간 추론에 가까운 시스템 구축을 과제로 삼고 있습니다.

행동 시퀀스 모델링 (새 탭에서 열림)

핀터레스트는 사용자의 오프사이트(offsite) 행동 이력을 분석하여 미래의 전환 가능성을 예측하는 행동 시퀀스 모델링(Behavioral Sequence Modeling)을 통해 광고 후보군 생성 시스템을 혁신했습니다. 이 시스템은 트랜스포머(Transformer) 기반의 투타워(Two-tower) 구조를 활용해 사용자별로 개인화된 광고주 및 상품을 추천하며, 이를 통해 광고의 관련성을 높이고 광고주 측면에서는 전환 비용(CPA)을 낮추는 성과를 거두었습니다. 결과적으로 수억 개의 상품 카탈로그 속에서 사용자의 진화하는 쇼핑 의도를 실시간으로 포착하여 정교한 광고 서빙이 가능해졌습니다. **광고주 상호작용 예측 모델 (Phase 1)** - 사용자가 과거에 조회, 구매, 장바구니에 담은 상품 시퀀스를 분석하여 다음에 상호작용할 가능성이 높은 광고주를 예측합니다. - 사용자 타워는 양방향 트랜스포머(Bidirectional Transformer)를 사용하여 이벤트 시퀀스를 인코딩하고, 광고주 타워는 MLP 레이어를 통해 광고주를 표현하는 투타워 구조를 채택했습니다. - 학습 시에는 체크아웃, 장바구니 담기, 가입 등을 양성(Positive) 샘플로 정의하고, 샘플링된 소프트맥스 손실(Sampled Softmax Loss)과 인기 항목에 대한 과도한 페널티를 방지하기 위한 Log-Q 편향 수정을 적용했습니다. - 오프라인 평가에서 200만 개의 광고주 임베딩을 대상으로 Recall@K를 측정하여 성능을 검증했으며, 온라인 실험 결과 전환수 증가와 CPA 감소라는 유의미한 비즈니스 지표 개선을 확인했습니다. **상품 단위(Item-level) 예측으로의 확장 (Phase 2)** - 광고주 단위를 넘어 특정 상품(Pin)을 직접 예측함으로써 더욱 깊이 있는 개인화와 효율적인 광고 전달 시스템을 구축했습니다. - 10억 개 이상의 방대한 상품 데이터를 처리하기 위해 핀터레스트 내부의 핀(Pin) 임베딩과 카탈로그 메타데이터를 통합하여 더욱 풍부한 상품 표현력을 확보했습니다. - 대규모 아이템 코퍼스를 다루기 위해 인배치 부정 샘플(In-batch negatives)과 2,000만 개의 무작위 샘플링된 핀을 혼합하여 대조 학습(Contrastive Learning)의 효과를 극대화했습니다. - 일 단위 추론 작업을 통해 최근 활동이 있는 사용자의 임베딩을 업데이트하고, 이를 온라인 피처 스토어에 게시하여 실시간 서빙 시스템에서 활용합니다. **서빙 플로우 및 성능 평가** - 오프라인 배치 워크플로우에서 예측된 상위 100개의 광고주/상품 리스트를 온라인 피처 스토어에 저장하고, 광고 요청 시 L1 랭커와 L2 랭커로 전달하여 최종 광고를 선정합니다. - 모델 성능은 단순 MLP 기반의 풀링(Max/Mean Pooling) 모델을 베이스라인으로 설정하고, 이보다 우수한 Recall@K 성능을 보이는 트랜스포머 모델을 최종 선택했습니다. - 아이템 단위 예측은 하위 단계의 랭킹 모델이 처리해야 할 후보군 수를 최적화함으로써 시스템의 확장성을 높이고 사용자 만족도를 증진시키는 역할을 합니다. 단순한 인구통계학적 타겟팅에서 벗어나 사용자의 실시간 행동 시퀀스를 반영하는 임베딩 기반 검색(Embedding-based Retrieval) 시스템을 구축하는 것이 대규모 커머스 플랫폼에서 광고 효율을 극대화하는 핵심 전략임을 보여줍니다. 특히 아이템 수가 기하급수적으로 늘어날수록 광고주 단위가 아닌 개별 상품 단위의 시퀀스 모델링이 필수적입니다.