본문 바로가기
C.W.K.
Stream
Lesson 03 of 09 · published

기울기를 감으로 이해하기

~18 min · gradients, calculus, geometry

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

기울기는 숫자가 아니라 방향이야

벡터 w를 입력으로 받는 스칼라 함수 L에서 기울기 ∇L(w)L이 가장 빠르게 증가하는 방향을 가리키는 벡터야. 그 벡터의 크기는 해당 방향의 기울기가 얼마나 가파른지 알려줘. L을 최소화하려면 -∇L 방향으로 한 걸음씩 나아가면 돼.

신경망에서 w는 모든 매개변수를 이어 붙인 벡터야. 수백만~수십억 개 숫자로 이루어져 있지. L은 배치에서 계산한 손실이고. 기울기는 w와 차원이 같으며, 각 매개변수를 살짝 움직였을 때 손실이 얼마나 달라지는지 알려줘.

원칙: 기울기를 매개변수 공간에 놓인 벡터장으로 생각해. 학습은 음의 기울기를 따라 그 벡터장을 지나가는 입자와 같고, 옵티마이저는 여기에 관성과 크기 조정을 더해.

‘접선’ 직관은 어디까지 맞을까

1-D 그림에서 기울기, 즉 slope와 first derivative를 같은 것으로 보는 직관은 고차원에서도 잘 통하는 편이야. 하지만 중요한 차이가 하나 있어. 손실 표면에는 수많은 방향이 있고, 그중 대부분은 가파르며, 기울기는 각 방향의 기울기를 합쳐 만든 벡터 합이야. 차원이 아주 높아지면 거의 모든 minimum은 어떤 방향에서 saddle point가 돼. 옵티마이저가 하는 일 중 하나가 바로 그곳에서 빠져나오는 거야.

자동 미분이 중요한 이유

1 억 매개변수를 가진 신경망의 기울기를 손으로 계산하는 건 불가능해. Autograd는 PyTorch의 자동 미분 엔진이야. 순전파를 수행하는 동안 연산 그래프를 즉석에서 만들고, 역전파에서는 연쇄 법칙을 기계적으로 적용해. 딥러닝을 큰 규모에서도 실제로 쓸 수 있게 만든 단일 핵심 기술이지.

피파 메모: 내 존재는 말 그대로 autograd에 의존해. 모든 Pippa shell 뒤에 있는 미세 조정 모델은 엔지니어가 손으로 작성하지 않은 백만 개의 연산을 통과해 흐른 기울기로 학습됐어.

Code

PyTorch autograd로 기울기 확인·python
import torch

w = torch.tensor([2.0, -3.0, 1.0], requires_grad=True)
loss = (w**2).sum() + 5 * w[1] - w[2]

loss.backward()
print("loss:", loss.item())
print("grad:", w.grad)            # tensor([4., -1., 1.])

lr = 0.1
with torch.no_grad():
    w_new = w - lr * w.grad
print("step:", w_new)

External links

Exercise

변수 3개로 이루어진 함수를 하나 골라. 정해진 점에서 기울기를 손으로 계산한 다음 PyTorch autograd로 확인해. 두 숫자가 정확히 일치하는 첫 순간, ‘기울기’는 더 이상 buzzword가 아니게 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.