pile·
AI / ML·airbnb-engAirbnb Engineering·

게스트 여정 시퀀스 학습으로 Airbnb 검색 개인화하기

Airbnb가 수백 개의 수작업 통계 피처에 의존하던 검색 랭킹을, 게스트의 이벤트 시퀀스를 Transformer 인코더로 학습하는 방식으로 바꾼 과정을 다룬다. 조회 이벤트가 데이터를 압도하고, 노이즈 속 희소한 예약 전환을 최적화해야 하며, 수억 쌍의 학습 비용이 크다는 세 난제를 장기·단기 이중 시퀀스 설계와 학습 효율화로 풀었다. 최종적으로 오프라인 NDCG 누적 +3.78%와 온라인 예약·조회 지표 개선까지 얻었다.

핵심 포인트
  • 수백 개 수작업 통계 피처의 한계를 극복하려고 게스트 이벤트 시퀀스를 Transformer 인코더로 직접 학습한다.
  • 7년치 희소 이벤트를 담는 장기 시퀀스(최대 80개)와 최근 21일 조회를 담는 단기 시퀀스(최대 200개)로 분리 설계했다.
  • 검색 배칭·시퀀스 버킷화·희소 계산으로 학습 처리량을 약 4배 높였다.
  • 인코더는 일 배치로 임베딩을 미리 계산·저장하고, 랭킹 시점엔 저장 임베딩만 조회해 지연을 낮췄다.
  • 3단계 A/B로 점진 배포해 오프라인 NDCG 누적 +3.78%, 온라인 예약자·조회 지표를 개선했다.
상세 정리
  • 배경: 기존 랭킹은 총 예약 수·평균 가격 같은 집계 통계에 의존했는데, 피처가 수백 개로 늘어도 복잡한 게스트 선호를 담기엔 표현력이 부족했다.
  • 난제 셋: 조회 이벤트가 압도적으로 많아(일부 게스트는 수십만 건) 계산이 버겁고, SNS와 달리 노이즈 속 희소한 예약 전환을 최적화해야 하며, 수억 쌍 학습 비용이 크다.
  • 장기 시퀀스: 예약·리뷰·취소처럼 드물지만 정보량 큰 이벤트를 7년 범위로 담고 최대 80개로 자르는데, 이 컷은 가장 긴 2% 시퀀스만 truncate한다.
  • 단기 시퀀스: 최근 21일 리스팅 조회를 담고 최대 200개로 제한한다.
  • 피처: 모든 이벤트가 공유 피처 풀을 쓰고, 리스팅·호스트 ID 같은 고카디널리티 ID와 계층적 지리 ID를 통합 임베딩 테이블로 표현한다.
  • 효율화 배칭: 인과 마스킹으로 시퀀스를 누적 처리해 여러 검색이 인코더 forward 한 번을 공유하고, 각 검색을 대응하는 중간 임베딩으로 라우팅한다.
  • 효율화 버킷화·희소 계산: 길이별로 시퀀스를 버킷화해 패딩 낭비를 줄이고, 패딩된 검색은 랭킹 계산에서 제거한다 — 세 기법으로 처리량 약 4배.
  • 서빙: 시퀀스 인코더는 일 배치로 돌려 신규 이벤트가 있는 게스트의 임베딩만 갱신·저장하고, 쿼리 시 랭킹 모델이 저장 임베딩을 실시간 조회해 라이브 검색 맥락과 결합한다.
  • 배포: 장기 시퀀스 단독 → 단기 조회 시퀀스 추가 → 시퀀스 인코더와 공동 학습한 setwise 랭커 도입 순으로, 각 단계를 보통 3주 A/B로 검증했다.
  • setwise 랭커: 리스팅을 독립 채점하는 pointwise와 달리 후보 집합을 함께 보고 리스팅 간 상대 차이를 추론한다.
  • 오프라인 결과(예약 라벨 NDCG): 장기 +0.44%, 단기 조회 추가 +1.48%, setwise +2.3%로 누적 +3.78%.
  • 온라인 결과: 장기에서 미취소 예약자 +0.31%·조회 +0.38%, 단기 추가로 미취소 예약자 +0.55%·미취소 숙박 +0.82%·조회 +0.90%, setwise로 미취소 예약 +0.28%·예약 요청자 +0.32%.
  • 재사용: 같은 시퀀스 임베딩을 그대로 프로모션 이메일에 적용해 미취소 예약자 +0.16%·미취소 숙박 +0.23%·이메일 클릭 +5.04%를 얻었다.
  • 향후: 준실시간 임베딩 갱신, wishlist·지도 상호작용 같은 이벤트 확장, target-aware 랭킹, 생성형 추천, setwise 개선을 탐색 중이다.
왜 읽나대규모 검색·추천 랭킹에 사용자 이벤트 시퀀스 모델을 도입하려는 ML 엔지니어에게 설계·효율화·서빙 분리·배포 전략의 실전 레퍼런스.
airbnb-eng
Airbnb Engineering 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·AWS KoreaAWS Korea Tech·

    1시간 대화로 만드는 Amazon Connect Customer AI Agent [AICC Builder 시리즈 #1]

    Amazon Connect Customer AI Agent를 1시간 내에 구축할 수 있게 해주는 오픈소스 샘플 앱 AICC Builder를 다룬다. 요구사항 인터뷰를 통해 Lambda 함수, OpenAPI 명세, AI 프롬프트, Contact Flow JSON, CDK 인프라 코드, FAQ/지식베이스 총 6가지 배포 에셋을 자동 생성한다. 코드 한 줄 없이 전화받는 PoC까지 완성하는 것이 핵심 목표다.

    #mcp#voice-ai#bedrock+2
  2. AI / ML·twilio-engTwilio Engineering·

    PHP에서 Conversation Relay 사용 시 배경 소음 처리 방법

    Twilio Conversation Relay를 PHP로 구현할 때 배경 소음이 STT(음성→텍스트) 정확도를 저하시키는 문제를 다룬다. 음성 AI는 STT → LLM → TTS 순차 파이프라인이라 전사 오류가 전체 응답 품질을 망친다. Nova-3 모델 설정 튜닝과 Flux 모델 전환 두 가지 해결책을 실측 테스트 결과와 함께 제시한다.

    #voice-ai#stt#deepgram+2