html`<div style="font-family:'Pretendard',sans-serif;font-size:0.82em;"> <div style="padding:0.5em 0.8em;background:#FFF8E1; border-left:3px solid #D4A017;border-radius:4px;margin-bottom:0.6em;line-height:1.8;"> 학습률 η = <strong>${gdEta.toFixed(2)}</strong><br> 초기 θ₀ = <strong>${gdInit.toFixed(1)}</strong><br> 스텝 수 = <strong>${gdSteps}</strong> </div> <div style="padding:0.4em 0.8em;background:#E8F5E9;border-radius:4px;line-height:1.7;margin-bottom:0.6em;"> 최종 θ = <strong>${gdPath[gdPath.length-1].theta.toFixed(4)}</strong><br> 최종 손실 = <strong>${gdPath[gdPath.length-1].loss.toFixed(4)}</strong> </div> <div style="padding:0.4em 0.8em;background:${gdEta >0.5?'#FFEBEE': gdEta >0.3?'#FFF8E1':'#E8F5E9'}; border-radius:4px;color:#333;line-height:1.5;">${gdEta >=1.0?'⚠ η ≥ 1.0: 발산합니다!': gdEta >0.5?'학습률이 높아 진동이 심합니다.': gdEta >0.2?'적당한 학습률입니다.': gdEta >0.05?'안정적이지만 수렴이 느립니다.':'학습률이 매우 낮아 수렴이 매우 느립니다.'} </div></div>`
시도해 보세요: 학습률을 0.9 이상으로 올리면 발산하는 모습을, 0.01로 낮추면 매우 느리게 수렴하는 모습을 확인할 수 있습니다.
5.4.5 2차원 경사하강법 — 등고선 시각화
실제 신경망은 파라미터가 여러 개이므로, 2차원 이상의 손실 표면 위에서 경사하강법이 작동한다. \(\mathcal{L}(\theta_1, \theta_2) = (\theta_1 - 2)^2 + 3(\theta_2 - 1)^2\)에서 최솟값 \((2, 1)\)을 향해 이동하는 과정을 시각화한다.
화살표의 의미: 각 스텝에서 빨간 화살표는 \(-\nabla\mathcal{L}\) 방향, 즉 손실이 가장 빠르게 줄어드는 방향을 나타낸다. \(\theta_2\) 방향 기울기(\(\times 3\))가 더 가파르므로 화살표가 \(\theta_2\) 축으로 더 길게 뻗는 것을 확인할 수 있다.
5.5 신경망의 학습 과정 — 전체 그림
지금까지 손실 함수와 경사하강법을 각각 배웠다. 이제 이들이 실제 신경망에서 어떻게 하나의 학습 루프로 결합되는지 전체 흐름을 정리한다.