🍎 μ‹ν’ˆμ—μ„œ AI κ³΅λΆ€ν•˜κΈ°

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ: GraphSAGE의 원리와 ν™œμš© λ³Έλ¬Έ

Food_Health_AI/μΆ”μ²œ μ‹œμŠ€ν…œ

κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œ: GraphSAGE의 원리와 ν™œμš©

FoodAI 2025. 4. 3. 19:40

πŸ’‘λ“€μ–΄κ°€λ©°

μ˜€λŠ˜λ‚  μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” λ‹€μ–‘ν•œ μ„œλΉ„μŠ€λ“€μ€ κ°œμΈν™”λœ μΆ”μ²œ μ‹œμŠ€ν…œμ„ ν™œμš©ν•˜μ—¬ μ‚¬μš©μž λ§Œμ‘±λ„λ₯Ό 높이고 μžˆμŠ΅λ‹ˆλ‹€. λ„·ν”Œλ¦­μŠ€μ˜ μ˜ν™” μΆ”μ²œ, 유튜브의 λ™μ˜μƒ μΆ”μ²œ, 그리고 μŒμ‹ 배달 μ•±μ˜ 메뉴 μΆ”μ²œκΉŒμ§€ - 이 λͺ¨λ“  μ„œλΉ„μŠ€μ˜ ν•΅μ‹¬μ—λŠ” 효율적인 μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

특히 μ΅œκ·Όμ—λŠ” κ·Έλž˜ν”„ ꡬ쑰λ₯Ό ν™œμš©ν•œ μΆ”μ²œ μ‹œμŠ€ν…œμ΄ μ£Όλͺ©λ°›κ³  μžˆλŠ”λ°μš”. μ˜€λŠ˜μ€ κ·Έ μ€‘μ—μ„œλ„ ν™•μž₯μ„±(Scalability)κ³Ό νš¨μœ¨μ„± μΈ‘λ©΄μ—μ„œ νƒμ›”ν•œ μ„±λŠ₯을 λ³΄μ΄λŠ” GraphSAGE(Graph SAmple and aggreGatE)에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. μŒμ‹ μΆ”μ²œ μ‹œμŠ€ν…œμ—μ„œ μ–΄λ–»κ²Œ 적용될 수 μžˆλŠ”μ§€ μ‹€μ œ 사둀와 ν•¨κ»˜ μ‚΄νŽ΄λ΄…μ‹œλ‹€.


I. κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ˜ 기초

μΆ”μ²œ μ‹œμŠ€ν…œμ—μ„œ κ·Έλž˜ν”„λž€ λ¬΄μ—‡μΌκΉŒμš”? κ°„λ‹¨νžˆ 말해, μ‚¬μš©μžμ™€ μƒν’ˆ(λ˜λŠ” μ½˜ν…μΈ ) κ°„μ˜ 관계λ₯Ό λ…Έλ“œ(점)와 μ—£μ§€(μ„ )둜 ν‘œν˜„ν•œ κ΅¬μ‘°μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 'μ‚¬μš©μž Aκ°€ μƒν’ˆ Bλ₯Ό κ΅¬λ§€ν–ˆλ‹€'λŠ” μ •λ³΄λŠ” μ‚¬μš©μž A와 μƒν’ˆ Bλ₯Ό μ—°κ²°ν•˜λŠ” μ—£μ§€λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

GCN(Graph Convolutional Network)의 이해

κ·Έλž˜ν”„ 데이터λ₯Ό λ”₯λŸ¬λ‹μ— ν™œμš©ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ 것이 GCNμž…λ‹ˆλ‹€. GCN은 λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°€μ§‘λ‹ˆλ‹€:

  • λ…Έλ“œ μž„λ² λ”©(Node Embedding)을 ν•™μŠ΅ν•˜κΈ° μœ„ν•œ 방법둠
  • 이웃 λ…Έλ“œμ˜ νŠΉμ„±(feature)을 λ©”μ‹œμ§€ νŒ¨μ‹±(message passing)으둜 전달받아 μ—…λ°μ΄νŠΈ
  • ν™•μž₯μ„±(Scalability)κ³Ό λ…Έλ“œ νŠΉμ„± ν™œμš©μ΄ κ°€λŠ₯ν•΄ μ‚°μ—… μˆ˜μ€€μ˜ μΆ”μ²œ μ‹œμŠ€ν…œ κ΅¬ν˜„ κ°€λŠ₯
  • κ·ΈλŸ¬λ‚˜ 전체 κ·Έλž˜ν”„ ꡬ쑰 정보가 ν•„μš”ν•œ Transductiveν•œ λ°©λ²•λ‘ μ΄λΌλŠ” ν•œκ³„ 쑴재

GCN의 핡심은 이웃 λ…Έλ“œμ˜ 정보λ₯Ό 합쳐 쀑심 λ…Έλ“œμ˜ ν‘œν˜„(representation)을 κ°±μ‹ ν•˜λŠ” 과정에 μžˆμŠ΅λ‹ˆλ‹€. 이 과정은 λ‹€μŒκ³Ό 같은 μˆ˜μ‹μœΌλ‘œ ν‘œν˜„λ©λ‹ˆλ‹€:

 

$$f(𝐻^{𝑙}, 𝐴) = 𝜎(𝐴𝐻^π‘™π‘Š^𝑙)$$

 

μ—¬κΈ°μ„œ 𝐻^𝑙은 l번째 측의 λ…Έλ“œ ν‘œν˜„, π΄λŠ” 인접 ν–‰λ ¬, π‘Š^𝑙은 κ°€μ€‘μΉ˜ 행렬을 μ˜λ―Έν•©λ‹ˆλ‹€.


II. GraphSAGE: ν™•μž₯ κ°€λŠ₯ν•œ κ·Έλž˜ν”„ ν•™μŠ΅

GCN의 ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ GraphSAGEλŠ” "SAmpling and agGrEgation"의 μ•½μžλ‘œ, μ΄λ¦„μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ 'μƒ˜ν”Œλ§'κ³Ό '집계'κ°€ 핡심 κ°œλ…μž…λ‹ˆλ‹€.

GraphSAGE의 μ£Όμš” νŠΉμ§•

  • 전체 인접 행렬을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  이웃 λ…Έλ“œλ₯Ό μƒ˜ν”Œλ§ν•˜μ—¬ 계산 νš¨μœ¨μ„± ν–₯상
  • μƒˆλ‘œμš΄ λ…Έλ“œκ°€ μΆ”κ°€λ˜μ–΄λ„ 전체 κ·Έλž˜ν”„λ₯Ό μž¬ν•™μŠ΅ν•  ν•„μš” 없이 μž„λ² λ”© 생성 κ°€λŠ₯(Inductive learning)
  • λ‹€μ–‘ν•œ 집계 ν•¨μˆ˜(Mean, LSTM, Pooling Aggregator λ“±) 적용 κ°€λŠ₯

GraphSAGE의 μž‘λ™ 원리

GraphSAGEλŠ” λ‹€μŒ μ„Έ λ‹¨κ³„λ‘œ μž‘λ™ν•©λ‹ˆλ‹€:

1. 이웃 μƒ˜ν”Œλ§(Sampling)

각 λ…Έλ“œμ— λŒ€ν•΄ 일정 수의 이웃 λ…Έλ“œλ₯Ό κ· λ“± 뢄포(uniform distribution)둜 μƒ˜ν”Œλ§ν•©λ‹ˆλ‹€. μ΄λŠ” 전체 κ·Έλž˜ν”„λ₯Ό λͺ¨λ‘ κ³ λ €ν•˜μ§€ μ•Šκ³  λΆ€λΆ„ κ·Έλž˜ν”„(subgraph)만으둜 ν•™μŠ΅ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

2. 정보 집계(Aggregation)

μƒ˜ν”Œλ§λœ 이웃 λ…Έλ“œμ˜ 정보λ₯Ό μ§‘κ³„ν•©λ‹ˆλ‹€. μ—¬λŸ¬ 집계 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 있으며, κ°€μž₯ κ°„λ‹¨ν•œ 것은 평균(Mean)μž…λ‹ˆλ‹€.

3. λ…Έλ“œ ν‘œν˜„ κ°±μ‹ (Update)

μ§‘κ³„λœ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 쀑심 λ…Έλ“œμ˜ ν‘œν˜„μ„ κ°±μ‹ ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 과정을 μˆ˜μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

# 1. 이웃 λ…Έλ“œ 집계
h_N^k = AGGREGATE_k({h_u^(k-1) : u ∈ N(v)})

# 2. μžμ‹ μ˜ ν‘œν˜„κ³Ό μ§‘κ³„λœ 이웃 정보 κ²°ν•©
h_v^k = σ(W^k · CONCAT(h_v^(k-1), h_N^k))

III. μ‹€μ œ 사둀: Uber Eats의 메뉴 μΆ”μ²œ μ‹œμŠ€ν…œ

이둠적인 λ‚΄μš©μ„ μ‚΄νŽ΄λ΄€μœΌλ‹ˆ, 이제 μ‹€μ œ μ‚°μ—…μ—μ„œ GraphSAGEκ°€ μ–΄λ–»κ²Œ ν™œμš©λ˜λŠ”μ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μΈ μ‚¬λ‘€λ‘œ Uber Eats의 μŒμ‹ μΆ”μ²œ μ‹œμŠ€ν…œμ„ λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

Uber Eats의 GraphSAGE 적용 사둀

2019λ…„ 말에 곡개된 μžλ£Œμ— λ”°λ₯΄λ©΄, Uber EatsλŠ” GraphSAGEλ₯Ό ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ κ°œμΈν™”λœ 메뉴(dish) μΆ”μ²œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έ κ²°κ³ΌλŠ” λ†€λΌμ› μŠ΅λ‹ˆλ‹€:

  • κΈ°μ‘΄ μΆ”μ²œ λͺ¨λΈ λŒ€λΉ„ 12%의 AUC(Area Under Curve) μ„±λŠ₯ ν–₯상
  • μ‚¬μš©μž λ§Œμ‘±λ„μ™€ μ£Όλ¬Έ μ „ν™˜μœ¨ 증가
  • λ‹€μ–‘ν•œ μŒμ‹ μΉ΄ν…Œκ³ λ¦¬μ— λŒ€ν•œ μΆ”μ²œ 정확도 ν–₯상

μ–΄λ–»κ²Œ μŒμ‹ μΆ”μ²œμ— ν™œμš©λ˜μ—ˆμ„κΉŒ?

Uber Eats의 μΆ”μ²œ μ‹œμŠ€ν…œμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 κ·Έλž˜ν”„ ꡬ쑰λ₯Ό ν™œμš©ν–ˆμ„ κ²ƒμœΌλ‘œ μΆ”μ •λ©λ‹ˆλ‹€:

  • λ…Έλ“œ: μ‚¬μš©μž, 메뉴, μŒμ‹μ  λ“±
  • μ—£μ§€: μ£Όλ¬Έ λ‚΄μ—­, 쑰회 기둝, 평점 λ“±
  • λ…Έλ“œ νŠΉμ„±: λ©”λ‰΄μ˜ 가격, μΉ΄ν…Œκ³ λ¦¬, 인기도, 메뉴λͺ…μ˜ word2vec κ°’ λ“±

GraphSAGEλ₯Ό 톡해 각 λ…Έλ“œμ˜ μž„λ² λ”©μ„ 효율적으둜 ν•™μŠ΅ν•œ ν›„, 이λ₯Ό λ°”νƒ•μœΌλ‘œ κ°œμΈν™”λœ λž­ν‚Ή(personalized ranking)을 μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ App을 μ—΄λ©΄ κ·Έ μ‚¬μš©μžμ™€ μœ μ‚¬ν•œ μ·¨ν–₯을 κ°€μ§„ λ‹€λ₯Έ μ‚¬μš©μžλ“€μ΄ μ„ ν˜Έν•œ 메뉴λ₯Ό μΆ”μ²œν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.


IV. μ˜μ–‘ν•™μ  κ΄€μ μ—μ„œμ˜ μ‹ν’ˆ μΆ”μ²œ μ‹œμŠ€ν…œ

μŒμ‹ μΆ”μ²œμ€ λ‹¨μˆœνžˆ μ·¨ν–₯λ§Œμ„ κ³ λ €ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ˜μ–‘ν•™μ  츑면도 μ€‘μš”ν•©λ‹ˆλ‹€. GraphSAGE와 같은 κ·Έλž˜ν”„ 기반 μΆ”μ²œ μ‹œμŠ€ν…œμ€ λ‹€μŒκ³Ό 같은 μ˜μ–‘ κ΄€λ ¨ μš”μ†Œλ„ κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

μ˜μ–‘ κ· ν˜•μ„ κ³ λ €ν•œ μΆ”μ²œ

κ·Έλž˜ν”„ λ…Έλ“œμ— μ˜μ–‘μ†Œ 정보(λ‹¨λ°±μ§ˆ, μ§€λ°©, νƒ„μˆ˜ν™”λ¬Ό, 비타민 λ“±)λ₯Ό νŠΉμ„±μœΌλ‘œ μΆ”κ°€ν•˜λ©΄, μ‚¬μš©μžμ˜ μ˜μ–‘ κ· ν˜•μ„ κ³ λ €ν•œ μΆ”μ²œμ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

  • μ‚¬μš©μžκ°€ λ‹¨λ°±μ§ˆμ΄ λΆ€μ‘±ν•œ 식단을 주둜 μ„­μ·¨ν–ˆλ‹€λ©΄, λ‹¨λ°±μ§ˆμ΄ ν’λΆ€ν•œ 메뉴 μΆ”μ²œ
  • νŠΉμ • 비타민이 ν’λΆ€ν•œ μ‹ν’ˆκ³Ό λΆ€μ‘±ν•œ μ‹ν’ˆ κ°„μ˜ 관계λ₯Ό κ·Έλž˜ν”„λ‘œ λͺ¨λΈλ§ν•˜μ—¬ κ· ν˜• 작힌 μ˜μ–‘μ†Œ μ„­μ·¨ μœ λ„

건강 μƒνƒœλ₯Ό κ³ λ €ν•œ λ§žμΆ€ν˜• μΆ”μ²œ

μ‚¬μš©μžμ˜ 건강 μƒνƒœ(당뇨, κ³ ν˜ˆμ••, μ•Œλ ˆλ₯΄κΈ° λ“±)λ₯Ό λ…Έλ“œλ‘œ ν‘œν˜„ν•˜κ³ , 이λ₯Ό μ‹ν’ˆ λ…Έλ“œμ™€ μ—°κ²°ν•˜λ©΄ 건강 μƒνƒœμ— λ§žλŠ” μΆ”μ²œμ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€:

  • λ‹Ήλ‡¨ν™˜μžμ—κ²ŒλŠ” μ €λ‹Ή μ‹ν’ˆ μš°μ„  μΆ”μ²œ
  • μ•Œλ ˆλ₯΄κΈ°κ°€ μžˆλŠ” μ‚¬μš©μžμ—κ²ŒλŠ” ν•΄λ‹Ή μ•Œλ ˆλ₯΄κΈ° 유발 성뢄이 μ—†λŠ” 메뉴 μΆ”μ²œ

V. κ²°λ‘  🎯

GraphSAGEλŠ” κ·Έλž˜ν”„ ꡬ쑰의 데이터λ₯Ό 효율적으둜 ν•™μŠ΅ν•  수 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ, 특히 ν™•μž₯μ„±(Scalability) μΈ‘λ©΄μ—μ„œ 큰 μž₯점을 κ°€μ§‘λ‹ˆλ‹€. μ΄λŠ” λŒ€κ·œλͺ¨ μ‚¬μš©μžμ™€ μƒν’ˆ 데이터λ₯Ό λ‹€λ£¨λŠ” ν˜„λŒ€ μΆ”μ²œ μ‹œμŠ€ν…œμ— 맀우 μ ν•©ν•©λ‹ˆλ‹€.

μŒμ‹κ³Ό μ˜μ–‘ λΆ„μ•Όμ—μ„œλ„ GraphSAGE와 같은 κ·Έλž˜ν”„ 기반 μ•Œκ³ λ¦¬μ¦˜μ€ λ‹¨μˆœν•œ μΈκΈ°λ„λ‚˜ μœ μ‚¬μ„±μ„ λ„˜μ–΄, μ˜μ–‘ κ· ν˜•κ³Ό 건강 μƒνƒœλ₯Ό κ³ λ €ν•œ μ§€λŠ₯적인 μΆ”μ²œμ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. μš°λ²„μ΄μΈ  μ‚¬λ‘€μ—μ„œ 보듯이, μ΄λŸ¬ν•œ κΈ°μˆ μ€ 이미 μƒμš©ν™”λ˜μ–΄ 우리의 μ‹μƒν™œμ— 영ν–₯을 미치고 μžˆμŠ΅λ‹ˆλ‹€.

μΆ”μ²œ μ‹œμŠ€ν…œμ΄ λ”μš± λ°œμ „ν•˜λ©΄ λ‹¨μˆœνžˆ '무엇을 먹을지'λ₯Ό μΆ”μ²œν•˜λŠ” 것을 λ„˜μ–΄, 'κ±΄κ°•ν•œ μ‹μŠ΅κ΄€'을 ν˜•μ„±ν•˜λŠ” 데 도움을 μ£ΌλŠ” λ°©ν–₯으둜 λ‚˜μ•„κ°ˆ κ²ƒμž…λ‹ˆλ‹€. 개인의 μ·¨ν–₯, μ˜μ–‘ μš”κ΅¬μ‚¬ν•­, 건강 μƒνƒœλ₯Ό μ’…ν•©μ μœΌλ‘œ κ³ λ €ν•œ λ§žμΆ€ν˜• μ‹ν’ˆ μΆ”μ²œμ€ 미래 ν—¬μŠ€μΌ€μ–΄μ˜ μ€‘μš”ν•œ ν•œ 좕이 될 κ²ƒμž…λ‹ˆλ‹€.


μ°Έκ³  λ¬Έν—Œ:

  • Hamilton, W. L., Ying, R., & Leskovec, J. (2017). Inductive representation learning on large graphs. NIPS 2017.
  • Ying, R., He, R., Chen, K., Eksombatchai, P., Hamilton, W. L., & Leskovec, J. (2018). Graph convolutional neural networks for web-scale recommender systems. KDD 2018.
  • Uber Engineering. (2019). Food Discovery with Uber Eats: Using Graph Learning to Power Recommendations.