ν† μŠ€ν…Œν¬ 둜고
πŸ›’ ν† μŠ€ μ‡Όν•‘ μΆ”μ²œ μ‹œμŠ€ν…œ: 수백만 μ‚¬μš©μžμ™€ μƒν’ˆμ„ μž‡λŠ” λ©€ν‹° μŠ€ν…Œμ΄μ§€ 접근법

πŸ›’ ν† μŠ€ μ‡Όν•‘ μΆ”μ²œ μ‹œμŠ€ν…œ: 수백만 μ‚¬μš©μžμ™€ μƒν’ˆμ„ μž‡λŠ” λ©€ν‹° μŠ€ν…Œμ΄μ§€ 접근법

#Machine Learning#ML
κΉ€μ •μ˜€
2025λ…„ 4μ›” 17일

μ•ˆλ…•ν•˜μ„Έμš”, ν† μŠ€ 컀머슀 κ°œμΈν™”νŒ€μ˜ ML Engineer κΉ€μ •μ˜€μž…λ‹ˆλ‹€.

ν˜„μž¬ ν† μŠ€ μ•± ν•˜λ‹¨ λ©”λ‰΄μ˜ 쀑앙은 μ €ν¬νŒ€μ—μ„œ λ§Œλ“€μ–΄κ°€κ³  μžˆλŠ” ν† μŠ€ 쇼핑이 μžλ¦¬ν•˜κ³  μžˆλŠ”λ°μš”. ν† μŠ€ 쇼핑은 μ‚¬μš©μž 데이터λ₯Ό 기반으둜 μ‚¬μš©μžμ—κ²Œ κ°€μž₯ ν•„μš”ν•œ μƒν’ˆμ„ μΆ”μ²œν•΄μ£Όκ²Œ λ˜μ–΄μžˆμ–΄μš”. 이 글을 ν†΅ν•΄μ„œ ν† μŠ€ 쇼핑은 μ–΄λ–»κ²Œ κ°œμΈν™” μΆ”μ²œ μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³  μžˆλŠ”μ§€ κ°„λž΅νžˆ μ„€λͺ…ν•΄ λ“œλ¦¬κ³ μž ν•©λ‹ˆλ‹€.

πŸ” λͺ©μ ν˜• μ‚¬μš©μžμ™€ νƒμƒ‰ν˜• μ‚¬μš©μž

ν† μŠ€ 쇼핑은 λ‹€μ–‘ν•œ μ†ŒλΉ„μž μœ ν˜•μ„ 닀루고 μžˆμ–΄μš”. 이 쀑 특히 μ€‘μš”ν•œ 두 κ°€μ§€ μœ ν˜•μ€ λͺ©μ ν˜• μ‚¬μš©μžμ™€ νƒμƒ‰ν˜• μ‚¬μš©μžμΈλ°μš”, κ·Έ μ •μ˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • λͺ©μ ν˜• μ‚¬μš©μž (Goal-Oriented User)

    λͺ…ν™•ν•œ ꡬ맀 λͺ©ν‘œ λ˜λŠ” νŠΉμ • μƒν’ˆμ— λŒ€ν•œ μˆ˜μš”λ₯Ό κ°€μ§€κ³  ν”Œλž«νΌμ— λ°©λ¬Έν•˜λŠ” μ‚¬μš©μžμž…λ‹ˆλ‹€. 이듀은 ꡬ체적인 μƒν’ˆλͺ…, μΉ΄ν…Œκ³ λ¦¬, κ°€κ²©λŒ€ λ“±μ˜ 기쀀을 기반으둜 검색 및 탐색 ν™œλ™μ„ μˆ˜ν–‰ν•˜λ©°, μ΅œλŒ€ν•œ λΉ λ₯΄κ²Œ μ›ν•˜λŠ” μƒν’ˆμ„ λ°œκ²¬ν•˜κ³  κ΅¬λ§€ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•΄μš”.

  • νƒμƒ‰ν˜• μ‚¬μš©μž (Exploratory User)

    λͺ…μ‹œμ μΈ ꡬ맀 λͺ©μ  없이 ν”Œλž«νΌμ„ νƒμƒ‰ν•˜λ©° λ‹€μ–‘ν•œ μƒν’ˆμ„ λ‘˜λŸ¬λ³΄λŠ” μ‚¬μš©μžμž…λ‹ˆλ‹€. 이듀은 μš°μ—°νžˆ λ°œκ²¬ν•œ μƒν’ˆ 및 정보λ₯Ό 톡해 ν₯λ―Έλ₯Ό 느끼고, ꡬ맀둜 μ΄μ–΄μ§ˆ κ°€λŠ₯성을 λ†’μ΄λŠ” 행동 νŒ¨ν„΄μ„ λ³΄μ—¬μš”. νƒμƒ‰ν˜• μ‚¬μš©μžλŠ” μƒν’ˆ μΉ΄ν…Œκ³ λ¦¬μ— λŒ€ν•œ 관심이 κ΄‘λ²”μœ„ν•˜λ©°, ꡬ맀 κ²°μ •κΉŒμ§€ μƒλŒ€μ μœΌλ‘œ κΈ΄ 경둜λ₯Ό κ±°μΉ˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

β†’ ν† μŠ€ 쇼핑은 νƒμƒ‰ν˜• μ‚¬μš©μžμ˜ 비쀑이 λ†’μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, μ‚¬μš©μžκ°€ μžμ—°μŠ€λŸ½κ²Œ ν₯λ―Έλ₯Ό 느끼고 ꡬ맀 ν–‰λ™μœΌλ‘œ 이어지도둝 λ•λŠ” κ°œμΈν™” μΆ”μ²œ μ‹œμŠ€ν…œμ΄ ν•„μˆ˜μ μ΄μ—μš”.

πŸ“ˆ μΆ”μ²œ μ‹œμŠ€ν…œμ˜ ν•„μš”μ„±

  • 수백만 λͺ…μ˜ μ‚¬μš©μžμ™€ 수백만 건의 μƒν’ˆμ΄ μ‘΄μž¬ν•˜λŠ” λŒ€κ·œλͺ¨ ν”Œλž«νΌμ—μ„œλŠ”, μ‚¬μš©μžμ™€ μƒν’ˆ κ°„μ˜ 졜적 맀칭을 μˆ˜μž‘μ—…μœΌλ‘œ μ œκ³΅ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 특히 νƒμƒ‰ν˜• μ‚¬μš©μžμ˜ 경우, λͺ…ν™•ν•œ 검색 ν‚€μ›Œλ“œ 없이도 λ§€λ ₯적인 μƒν’ˆμ„ λ°œκ²¬ν•  수 μžˆλ„λ‘ λ•λŠ” κ°œμΈν™” μΆ”μ²œ μ‹œμŠ€ν…œμ΄ 핡심 역할을 ν•©λ‹ˆλ‹€.
  • μΆ”μ²œ μ‹œμŠ€ν…œμ€ μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚€κ³ , ꡬ맀 μ „ν™˜μœ¨μ„ 높이며, μ„œλΉ„μŠ€ 체λ₯˜ μ‹œκ°„μ„ μ¦κ°€μ‹œν‚€λŠ” 데 직접적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

πŸ›  λ©€ν‹° μŠ€ν…Œμ΄μ§€ μΆ”μ²œ μ‹œμŠ€ν…œ

λŒ€κ·œλͺ¨ μΆ”μ²œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, μ €ν¬λŠ” μ„±λŠ₯κ³Ό 속도λ₯Ό λͺ¨λ‘ κ³ λ €ν•˜μ—¬ λ©€ν‹° μŠ€ν…Œμ΄μ§€(Multi-Stage) ꡬ쑰λ₯Ό μ±„νƒν–ˆμ–΄μš”. 이 κ΅¬μ‘°λŠ” 크게 λ‹€μŒκ³Ό 같은 λ‹¨κ³„λ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

1. Retrieval

Retrieval λ‹¨κ³„μ—μ„œλŠ” 수백만 개의 μƒν’ˆ μ€‘μ—μ„œ μ‚¬μš©μžμ—κ²Œ μ–΄μšΈλ¦΄ κ°€λŠ₯성이 높은 수천 개의 μƒν’ˆμ„ λΉ λ₯΄κ²Œ ν›„λ³΄λ‘œ λ½‘μ•„λ‚΄μš”. 이 λ‹¨κ³„λŠ” 맀우 λΉ λ₯Έ 응닡 속도가 μš”κ΅¬λ˜λ©°, μ•„λž˜μ™€ 같이 λ‹€μ–‘ν•œ 방법둠이 ν™œμš©λ©λ‹ˆλ‹€.

  • Two-Tower λͺ¨λΈ: μ‚¬μš©μžμ™€ μ•„μ΄ν…œ 각각을 μž„λ² λ”©ν•˜μ—¬ 벑터 곡간에 λ§€ν•‘ν•˜κ³ , 벑터 검색(Nearest Neighbor Search)을 톡해 μœ μ‚¬ν•œ μƒν’ˆμ„ λΉ λ₯΄κ²Œ κ²€μƒ‰ν•©λ‹ˆλ‹€. DNN 기반 인코딩을 μ‚¬μš©ν•˜λ©°, 두 νƒ€μ›Œμ˜ μž„λ² λ”© κ²°κ³Όλ₯Ό 내적(Dot Product)ν•˜μ—¬ μœ μ‚¬λ„λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
  • Graph 기반 λͺ¨λΈ: μ‚¬μš©μž-μƒν’ˆ μƒν˜Έμž‘μš© 데이터λ₯Ό κ·Έλž˜ν”„ ν˜•νƒœλ‘œ ν‘œν˜„ν•˜μ—¬, Graph Neural Network(GNN)λ₯Ό 톡해 잠재적 연관성을 ν•™μŠ΅ν•©λ‹ˆλ‹€. GraphSAGE, PinSage, LightGCN λ“±μ˜ 기술이 ν™œμš©λΌμš”.
  • Sequence λͺ¨λΈ: μ‚¬μš©μžμ˜ 행동 이λ ₯을 μ‹œν€€μŠ€λ‘œ λͺ¨λΈλ§ν•˜κ³ , Transformer 기반 λͺ¨λΈ(SASRec, BERT4Rec λ“±)을 톡해 μ‹œκ³„μ—΄ 관계λ₯Ό ν¬μ°©ν•˜μ—¬ λ‹€μŒ μƒν˜Έμž‘μš© μƒν’ˆμ„ μ˜ˆμΈ‘ν•©λ‹ˆλ‹€.

Retrieval λ‹¨κ³„λŠ” μ •ν™•μ„±κ³Ό νš¨μœ¨μ„±μ˜ κ· ν˜•μ„ λ§žμΆ”λŠ” 것이 μ€‘μš”ν•˜λ©°, 이후 Ranking λ‹¨κ³„λ‘œ λ„˜μ–΄κ°€κΈ° μœ„ν•΄ μΆ©λΆ„νžˆ λ‹€μ–‘ν•œ 후보λ₯Ό ν™•λ³΄ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

2. Ranking

Ranking λ‹¨κ³„μ—μ„œλŠ” Retrieval λ‹¨κ³„μ—μ„œ 얻은 수천 개의 후보ꡰ을 λ°›μ•„ κ°œμΈν™” λͺ¨λΈμ„ 톡해 점수λ₯Ό λ§€κΈ°κ³  μ •λ ¬ν•΄μš”. μ£Όμš” λͺ©ν‘œλŠ” pCTR(predicted Click-Through Rate) 및 pCVR(predicted Conversion Rate)을 μ •ν™•νžˆ μ˜ˆμΈ‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 단계 μ—­μ‹œ μ•„λž˜μ™€ 같이 λ‹€μ–‘ν•œ 방법둠이 μ‚¬μš©λ©λ‹ˆλ‹€.

  • DeepFM: FM(Factorization Machine)으둜 νŠΉμ§• κ°„μ˜ 이차 μƒν˜Έμž‘μš©μ„ ν¬μ°©ν•˜κ³ , DNN으둜 λΉ„μ„ ν˜• 관계λ₯Ό ν•™μŠ΅ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.
  • DLRM(Deep Learning Recommendation Model): μ‘°λ°€ νŠΉμ§•(Dense features)κ³Ό ν¬μ†Œ νŠΉμ§•(Sparse features)을 ν†΅ν•©ν•˜μ—¬ λ³΅μž‘ν•œ μ‚¬μš©μž-μƒν’ˆ 관계λ₯Ό λͺ¨λΈλ§ν•©λ‹ˆλ‹€.
  • DCN(Deep & Cross Network): νŠΉμ§• κ°„μ˜ μ‘°ν•©(Cross Feature Interactions)을 λͺ…μ‹œμ μœΌλ‘œ ν•™μŠ΅ν•˜μ—¬ 고차원적인 νŠΉμ§• 쑰합을 효과적으둜 λ°˜μ˜ν•©λ‹ˆλ‹€.
  • ESMM(Entire Space Multi-Task Model): 클릭(Click)κ³Ό μ „ν™˜(Conversion) ν™•λ₯ μ„ ν•¨κ»˜ ν•™μŠ΅ν•˜λŠ” Multi-Task Learning 기반 λͺ¨λΈλ‘œ, pCTRκ³Ό pCVR을 λ™μ‹œμ— κ³ λ €ν•˜μ—¬ ν•™μŠ΅ νš¨μœ¨μ„±κ³Ό μΌλ°˜ν™”λ₯Ό λ†’μž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λͺ¨λΈλ“€μ€ κ°œλ³„ 예츑 μ„±λŠ₯을 λ†’μ΄λŠ” κ²ƒλΏλ§Œ μ•„λ‹ˆλΌ, μ„œλΉ„μŠ€μ˜ 핡심 μ§€ν‘œ(GMV, Orders λ“±) μ΅œμ ν™”μ—λ„ 큰 κΈ°μ—¬λ₯Ό ν•©λ‹ˆλ‹€.

3. Re-ranking

μ΅œμ’… 단계인 Re-rankingμ—μ„œλŠ” 초기 λͺ¨λΈ 점수 외에도 λ‹€μ–‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 μ‚¬μš©μž κ²½ν—˜ ν–₯상을 μœ„ν•œ μš”μ†Œλ₯Ό λ°˜μ˜ν•˜μ—¬ κ²°κ³Όλ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€. μ£Όμš” λͺ©ν‘œλŠ” μΆ”μ²œ 결과의 λ‹€μ–‘μ„±(Diversity), 신선도(Novelty), λΉ„μ¦ˆλ‹ˆμŠ€ μ§€ν‘œ μ΅œμ ν™”λ₯Ό λ™μ‹œμ— λ§Œμ‘±μ‹œν‚€λŠ” κ²ƒμ΄μ—μš”.

  • 신선도(Novelty) 보μž₯: μ‚¬μš©μžμ—κ²Œ μƒˆλ‘œμš΄ κ²½ν—˜μ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄, Cold-Start μ•„μ΄ν…œ(졜근 λ“±λ‘λœ μ‹ μƒν’ˆ λ˜λŠ” μƒν˜Έμž‘μš© 데이터가 적은 μƒν’ˆ)을 일정 λΉ„μœ¨ ν¬ν•¨μ‹œν‚΅λ‹ˆλ‹€.
  • κ΄‘κ³  μƒν’ˆκ³Ό λΉ„κ΄‘κ³  μƒν’ˆμ˜ ν˜Όν•©: κ΄‘κ³  μ„±κ³Όλ₯Ό κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄, κ΄‘κ³  μƒν’ˆκ³Ό λΉ„κ΄‘κ³  μƒν’ˆμ„ μžμ—°μŠ€λŸ½κ²Œ μ„žμ–΄ λ…ΈμΆœν•΄μš”. κ΄‘κ³  μƒν’ˆμ΄ κ³Όλ„ν•˜κ²Œ λͺ°λ¦¬μ§€ μ•Šλ„λ‘ μ‘°μ •ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ ν•΄μΉ˜μ§€ μ•ŠμœΌλ©΄μ„œ 높은 ROIλ₯Ό κΈ°λŒ€ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
  • λ‹€μ–‘μ„± 및 μΉ΄ν…Œκ³ λ¦¬ κ· ν˜• κ³ λ €: λ‹€μ–‘ν•œ μΉ΄ν…Œκ³ λ¦¬μ™€ μƒν’ˆ νƒ€μž…μ„ κ³ λ₯΄κ²Œ λ°°μΉ˜ν•˜μ—¬ μΆ”μ²œ ν’ˆμ§ˆμ„ λ†’μž…λ‹ˆλ‹€.

μ΄λ ‡κ²Œ λ‹€μ–‘ν•œ μš”μ†Œλ₯Ό λ°˜μ˜ν•œ Re-ranking은 λ‹¨μˆœ 예츑 μ μˆ˜μ— κΈ°λ°˜ν•œ 정렬보닀 μ‹€μ œ μ‚¬μš©μž κ²½ν—˜κ³Ό λΉ„μ¦ˆλ‹ˆμŠ€ λͺ©ν‘œ λͺ¨λ‘λ₯Ό λ™μ‹œμ— λ§Œμ‘±μ‹œν‚€λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

πŸ“ κ²°λ‘ 

ν† μŠ€ μ‡Όν•‘μ˜ ν™ˆ ν”Όλ“œ μΆ”μ²œ μ‹œμŠ€ν…œμ€ νƒμƒ‰ν˜• μ‚¬μš©μžμ˜ νŠΉμ„±μ„ κ³ λ €ν•˜μ—¬ μ„€κ³„λœ λ©€ν‹° μŠ€ν…Œμ΄μ§€ μΆ”μ²œ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

수백만 λͺ…μ˜ μ‚¬μš©μžμ™€ 수백만 건의 μƒν’ˆμ„ λ‹€λ£¨λŠ” ν™˜κ²½μ—μ„œ, Retrieval, Ranking, Re-ranking을 ν†΅ν•œ 점진적인 후보ꡰ μ •μ œκ°€ 핡심 μ „λž΅μ΄μ£ . 이λ₯Ό 톡해 μ‚¬μš©μžλŠ” λͺ…ν™•ν•œ ꡬ맀 λͺ©ν‘œ 없이도 μžμ—°μŠ€λŸ½κ²Œ ν₯미둜운 μƒν’ˆμ„ λ°œκ²¬ν•˜κ³ , ꡬ맀둜 μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

ν† μŠ€ μ‡Όν•‘μ—μ„œλŠ” 각 μŠ€ν…Œμ΄μ§€(Retrieval, Ranking, Re-ranking)별 μΆ”μ²œ λͺ¨λΈμ„ μ§€μ†μ μœΌλ‘œ κ°œμ„ ν•˜κ³  고도화할 ML Engineerλ₯Ό μ°Ύκ³  μžˆμ–΄μš”. ν† μŠ€ μ‡Όν•‘μ˜ μΆ”μ²œ μ‹œμŠ€ν…œμ„ ν•¨κ»˜ λ§Œλ“€μ–΄κ°€μ‹€ λΆ„λ“€μ˜ λ§Žμ€ 지원을 κΈ°λ‹€λ¦½λ‹ˆλ‹€!

λ‰΄μŠ€λ ˆν„°κ°€ λ°œν–‰λ˜λ©΄
μ΄λ©”μΌλ‘œ μ•Œλ €λ“œλ¦΄κ²Œμš”
κ΅¬λ…ν•˜κΈ°