λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT/AI, λ”₯λŸ¬λ‹

κ²½μ‚¬ν•˜κ°•λ²•(Gradient Descent) μ™„μ „ 정볡

by πŸ”₯κΉ‘ λ‹€ κ³ ! 2025. 3. 27.

λ”₯λŸ¬λ‹ ν•™μŠ΅μ˜ 핡심 μ•Œκ³ λ¦¬μ¦˜, κ²½μ‚¬ν•˜κ°•λ²•! 이름은 λ‚―μ„€μ§€λ§Œ, μ΄ν•΄ν•˜λ©΄ 신경망 ν›ˆλ ¨μ˜ 전체 ꡬ쑰가 보이기 μ‹œμž‘ν•©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”! μ˜€λŠ˜μ€ λ”₯λŸ¬λ‹μ„ μ œλŒ€λ‘œ κ³΅λΆ€ν•˜λ €λ©΄ λ°˜λ“œμ‹œ μ•Œμ•„μ•Ό ν•  κ°œλ…, λ°”λ‘œ κ²½μ‚¬ν•˜κ°•λ²•(Gradient Descent)에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄λ € ν•©λ‹ˆλ‹€. μ²˜μŒμ—” μˆ˜ν•™μ μœΌλ‘œ 느껴질 수 μžˆμ§€λ§Œ, κ°œλ…λ§Œ μ œλŒ€λ‘œ 작으면 λ‹€μ–‘ν•œ λͺ¨λΈ ν•™μŠ΅μ— μžμ‹ κ°μ΄ 생기싀 κ±°μ˜ˆμš”.

1. κ²½μ‚¬ν•˜κ°•λ²•μ΄λž€?

κ²½μ‚¬ν•˜κ°•λ²•(Gradient Descent)은 신경망이 졜적의 κ°€μ€‘μΉ˜λ₯Ό μ°ΎκΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ΅œμ ν™” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. 손싀 ν•¨μˆ˜(Loss Function)의 값을 μ΅œμ†Œν™”ν•˜λŠ” λ°©ν–₯으둜 νŒŒλΌλ―Έν„°(κ°€μ€‘μΉ˜μ™€ 편ν–₯)λ₯Ό μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

  • 기울기(경사)λ₯Ό 따라 μ΅œμ†Œκ°’μ„ ν–₯ν•΄ λ‚΄λ €κ°€λŠ” 방식
  • 산길을 따라 μ•„λž˜λ‘œ λ‚΄λ €κ°€λŠ” λŠλ‚Œκ³Ό μœ μ‚¬
  • λͺ¨λ“  λ”₯λŸ¬λ‹ ν•™μŠ΅μ˜ 핡심 기반

2. κ²½μ‚¬ν•˜κ°•λ²• μˆ˜μ‹κ³Ό 원리

κ²½μ‚¬ν•˜κ°•λ²•μ€ λ‹€μŒκ³Ό 같은 μˆ˜μ‹μ„ 기반으둜 μž‘λ™ν•©λ‹ˆλ‹€:

θ ← θ - α × ∇L(θ)
  • θ (세타): ν•™μŠ΅ν•  νŒŒλΌλ―Έν„° (κ°€μ€‘μΉ˜, 편ν–₯ λ“±)
  • α (μ•ŒνŒŒ): ν•™μŠ΅λ₯  (Learning Rate)
  • ∇L(θ): 손싀 ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°μ— λŒ€ν•œ λ―ΈλΆ„ (κ·Έλž˜λ””μ–ΈνŠΈ)

이 μˆ˜μ‹μ„ 톡해 ν˜„μž¬ μœ„μΉ˜μ˜ 기울기 λ°©ν–₯으둜 νŒŒλΌλ―Έν„°λ₯Ό μ‘°κΈˆμ”© μ—…λ°μ΄νŠΈν•˜λ©°, 손싀 값이 점점 μž‘μ•„μ§€λ„λ‘ μœ λ„ν•©λ‹ˆλ‹€. μ‰½κ²Œ 말해, 손싀 ν•¨μˆ˜μ˜ 경사(기울기)λ₯Ό λ°˜λŒ€λ‘œ 따라 μ΄λ™ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

3. λ‹€μ–‘ν•œ κ²½μ‚¬ν•˜κ°•λ²• μ’…λ₯˜

κ²½μ‚¬ν•˜κ°•λ²•μ€ 데이터 처리 방식에 따라 μ—¬λŸ¬ 가지 λ³€ν˜•μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. λŒ€ν‘œμ μΈ 3가지 방법을 μ‚΄νŽ΄λ³Όκ²Œμš”.

  • 배치 κ²½μ‚¬ν•˜κ°•λ²• (Batch Gradient Descent)
    • 전체 데이터셋을 ν•œ λ²ˆμ— μ‚¬μš©ν•΄ 기울기λ₯Ό 계산
    • μ •ν™•ν•˜μ§€λ§Œ κ³„μ‚°λŸ‰μ΄ 많고 느림
  • ν™•λ₯ μ  κ²½μ‚¬ν•˜κ°•λ²• (Stochastic Gradient Descent, SGD)
    • 데이터 ν•œ 건씩 μ—…λ°μ΄νŠΈ
    • μ†λ„λŠ” λΉ λ₯΄μ§€λ§Œ 변동성이 큼 (진동)
  • λ―Έλ‹ˆλ°°μΉ˜ κ²½μ‚¬ν•˜κ°•λ²• (Mini-batch Gradient Descent)
    • 데이터λ₯Ό μ—¬λŸ¬ 개의 μž‘μ€ 배치둜 λ‚˜λˆ„μ–΄ ν•™μŠ΅
    • 속도와 μ•ˆμ •μ„± λͺ¨λ‘ 확보 (μ‹€λ¬΄μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©)

λŒ€λΆ€λΆ„μ˜ λ”₯λŸ¬λ‹ ν”„λ ˆμž„μ›Œν¬μ—μ„œλ„ Mini-batch SGDκ°€ κΈ°λ³Έκ°’μœΌλ‘œ μ„€μ •λ˜μ–΄ 있고, 여기에 Momentumμ΄λ‚˜ Adam 같은 μ΅œμ ν™” 기법을 μΆ”κ°€ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.

4. ν•™μŠ΅λ₯ κ³Ό 수렴 문제

κ²½μ‚¬ν•˜κ°•λ²•μ„ μ‚¬μš©ν•  λ•Œ κ°€μž₯ μ€‘μš”ν•˜λ©΄μ„œλ„ λ―Όκ°ν•œ ν•˜μ΄νΌνŒŒλΌλ―Έν„°κ°€ ν•™μŠ΅λ₯ (Learning Rate, α)μž…λ‹ˆλ‹€. ν•™μŠ΅λ₯  섀정이 잘λͺ»λ˜λ©΄ λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμ–΄μš”.

ν•™μŠ΅λ₯  상황 문제점
λ„ˆλ¬΄ μž‘μŒ ν•™μŠ΅ 속도가 맀우 느리고, 지역 μ΅œμ†Œκ°’μ— κ°‡νž 수 있음
λ„ˆλ¬΄ 큼 였히렀 λ°œμ‚°ν•˜κ±°λ‚˜, 손싀이 λΆˆμ•ˆμ •ν•˜κ²Œ 튐

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν•™μŠ΅λ₯  κ°μ†Œ(Learning Rate Decay), μ μ‘ν˜• ν•™μŠ΅λ₯ (Adaptive Learning Rate) 같은 μ „λž΅μ΄ μ‚¬μš©λ©λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ Adam, RMSProp, Adagrad 같은 μ•Œκ³ λ¦¬μ¦˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • Adam: μžλ™μœΌλ‘œ ν•™μŠ΅λ₯  μ‘°μ • + λͺ¨λ©˜ν…€ 효과 포함
  • RMSProp: 졜근 κ·Έλž˜λ””μ–ΈνŠΈ λ³€ν™”λŸ‰μ„ 반영
  • Adagrad: ν•™μŠ΅μ΄ λΉ λ₯΄μ§€λ§Œ ν›„λ°˜μ—λŠ” 속도가 느렀짐

κ²°λ‘ : ν•™μŠ΅λ₯ μ€ μ„±λŠ₯을 μ’Œμš°ν•˜λŠ” 핡심 μš”μ†Œμ΄λ―€λ‘œ μ‹€ν—˜μ„ 톡해 졜적 값을 μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€.

κ²½μ‚¬ν•˜κ°•λ²•μ€ μ‹ κ²½λ§μ˜ ν•™μŠ΅μ„ κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 핡심 μ—”μ§„μž…λ‹ˆλ‹€. 이 원리λ₯Ό μ΄ν•΄ν•˜λ©΄ λ”₯λŸ¬λ‹μ΄ λ‹¨μˆœνžˆ λ§ˆλ²•μ΄ μ•„λ‹Œ, μˆ˜ν•™μ μœΌλ‘œ μ„€κ³„λœ μ΅œμ ν™” κ³Όμ •μ΄λΌλŠ” κ±Έ μ•Œ 수 μžˆμ–΄μš”. 였늘 배운 λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ, μ—¬λŸ¬λΆ„λ„ λ‹€μ–‘ν•œ μ΅œμ ν™” 기법을 직접 μ‹€ν—˜ν•΄λ³΄κ³  λ‚˜λ§Œμ˜ νŠœλ‹ λ…Έν•˜μš°λ₯Ό μŒ“μ•„λ³΄μ‹œκΈΈ μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€. κΆκΈˆν•œ μ μ΄λ‚˜ μ‹€μŠ΅ ν›„κΈ°, λŒ“κΈ€λ‘œ κ³΅μœ ν•΄μ£Όμ‹œλ©΄ ν•¨κ»˜ 더 깊이 λ‚˜λˆ λ³Ό 수 μžˆμ–΄μš”!