기초 이론 편 · 2부 AI는 어떻게 학습하는데? — 2.3
경사하강법 — 눈 가리고 산 내려가기
얼마나 틀렸는지를 높이로 생각하면, 학습은 산에서 제일 낮은 곳을 찾아 내려가는 일입니다.
앞 장의 규칙은 “맞았다 / 틀렸다”만 봤습니다. 실제 학습은 얼마나 틀렸는지를 숫자 하나로 잽니다. 이 숫자를 손실(loss) 이라고 부릅니다. 많이 틀릴수록 크고, 다 맞히면 작습니다.
손실을 높이로 생각하기
가중치가 딱 하나뿐인 모델을 상상해볼까요? 가중치를 이 값으로 바꾸면 손실이 얼마, 저 값으로 바꾸면 얼마… 이걸 쭉 그리면 울퉁불퉁한 산 모양이 나옵니다. 학습의 목표는 이 산에서 가장 낮은 곳을 찾는 것입니다.
문제는 컴퓨터가 산 전체를 볼 수 없다는 것입니다. 가중치가 수천억 개면 산을 다 그려보는 건 불가능합니다. 컴퓨터가 알 수 있는 건 지금 서 있는 자리의 기울기뿐입니다. 눈을 가리고 산에 서 있는데, 발바닥으로 경사만 느낄 수 있는 상황입니다.
그럼 할 수 있는 건 하나입니다. 내리막 쪽으로 한 걸음. 그리고 다시 경사를 느끼고, 또 한 걸음. 이게 경사하강법입니다.
공은 가중치 하나의 값이고, 높이는 그때의 손실(얼마나 틀렸나)이에요. 공은 발밑의 기울기만 알 수 있어요. "한 걸음"을 눌러보세요.
← 가중치가 작음가중치가 큼 →
해보면 보이는 것
보폭이 적당하면 (0.3 정도) 공이 골짜기 바닥으로 내려가서 멈춥니다. 바닥에서는 기울기가 0에 가까워서 더 움직이지 않습니다.
보폭이 너무 작으면 (0.05) 맞는 방향으로 가긴 하는데, 한참 걸립니다.
보폭이 너무 크면 골짜기를 넘어서 반대편으로 튕겨 다닙니다. 1.3 정도로 올리고 오른쪽에서 시작하면 아예 그래프 밖으로 날아갑니다. 학습이 망가지는 것입니다.
어디서 시작하느냐도 중요합니다. 오른쪽에서 시작하면 오른쪽 골짜기에 멈춥니다. 그런데 그래프를 보면 왼쪽 골짜기가 더 깊습니다. 공은 발밑만 느낄 수 있어서, 더 좋은 곳이 옆에 있는 줄 모르고 멈춘 것입니다.
여기서 보폭을 학습률(learning rate) 이라고 부릅니다. 실제로 모델을 학습시킬 때 사람이 가장 많이 고민하는 숫자 중 하나입니다.
더 깊게 · 기울기는 어떻게 구할까: 역전파
가중치 하나의 기울기는 “이 가중치를 아주 조금 바꾸면 손실이 얼마나 바뀌나”입니다. 가중치마다 하나씩 살짝 바꿔보며 재면 가중치 수만큼 계산을 반복해야 해서 너무 느립니다.
그래서 역전파(backpropagation) 라는 방법을 씁니다. 출력에서 생긴 오차를 거꾸로(입력 쪽으로) 전달하면서, 모든 가중치의 기울기를 한 번에 계산하는 방법입니다. 미분의 연쇄 법칙을 쓰는데, 원리를 몰라도 “모든 가중치의 기울기를 효율적으로 한 번에 구하는 계산법”이라고 알면 충분합니다.
수식으로 쓰면 한 걸음은 이렇습니다. (에타)가 학습률입니다.
정리
- 손실은 “얼마나 틀렸나”를 숫자 하나로 잰 것입니다.
- 경사하강법은 지금 자리의 기울기를 보고, 손실이 줄어드는 쪽으로 한 걸음씩 가는 방법입니다.
- 학습률(보폭)이 너무 작으면 느리고, 너무 크면 학습이 망가집니다.
- 앞 장의 “틀리면 고치기”를, 얼마나 틀렸는지까지 반영해서 정교하게 만든 게 이 방법입니다.
이 장을 복사합니다. ChatGPT나 Claude 같은 AI에 붙여넣고 그대로 보내면 AI가 다 읽었다고 답합니다. 그다음 궁금한 걸 물어보세요.