AI 기초 및 활용 13회: 신경망은 어떻게 배우는가 — 안개 낀 산에서 내려오는 법

AI 기초 및 활용 13회: 신경망은 어떻게 배우는가 — 안개 낀 산에서 내려오는 법

오늘의 질문 — 기계는 자기가 얼마나 틀렸는지 어떻게 알까요

지난 회차에서 퍼셉트론의 학습 규칙을 봤습니다. "틀렸으면 가중치를 정답 쪽으로 조금 민다"였죠. 단순하고 아름다운 규칙이었습니다.

그런데 이 규칙에는 조용히 깔려 있는 전제가 하나 있습니다. "틀렸다"는 것을, 그리고 "어느 쪽이 정답 쪽인지"를 알 수 있어야 한다는 전제입니다.

출력층 뉴런은 문제가 없습니다. 정답이 주어지니까요. 하지만 은닉층에 숨어 있는 뉴런에게는 아무도 정답을 알려 주지 않습니다. 그 뉴런은 자기가 무슨 값을 냈어야 했는지 모릅니다.

오늘의 질문은 이것입니다. 최종 답이 틀렸을 때, 그 책임을 안쪽 뉴런들에게 어떻게 나눠 물릴 것인가. 이 질문에 답하는 순간 20년의 겨울이 끝납니다.

지난 회차 연결 — 잠긴 문 앞에서 멈췄습니다

12회차의 결론은 셋이었습니다. 인공 뉴런은 곱하고 더하고 문턱을 넘는지 보는 세 동작이 전부라는 것. 그 하나로는 곧은 칸막이 하나밖에 못 그어서 XOR을 못 푼다는 것. 그리고 층을 쌓으면 그 한계가 풀린다는 것이었죠.

은닉층이 하는 일도 정리했습니다. 판단이 아니라 재배치였어요. 다음 층이 곧은 칼 하나로 자를 수 있도록 데이터를 새 좌표에 다시 그려 주는 층이었습니다.

그런데 거기서 멈췄습니다. 쌓는 법은 알았는데 가르치는 법을 몰랐기 때문이에요. 오늘 그 문을 엽니다. 순서는 셋입니다. 먼저 틀린 정도를 하나의 숫자로 만들고(손실 함수), 그 숫자를 줄이는 방향을 찾고(경사하강법), 마지막으로 그 방향을 안쪽 층까지 전달합니다(역전파).

어둠 속에 크고 환한 청록빛 막대 하나가 서 있고 그 옆에 훨씬 낮고 어두운 막대들이 놓인 모습, 눈금이나 숫자는 없다 — 틀린 정도를 하나의 크기로 나타낸다는 개념 이미지

먼저 "틀렸다"를 숫자로 만들어야 합니다

"이 모델은 좀 틀렸다"는 말로는 아무것도 고칠 수 없습니다. 조금 밀었을 때 나아졌는지 나빠졌는지를 비교할 수 있어야 하고, 비교하려면 숫자여야 합니다.

그래서 신경망 학습의 첫 단계는 언제나 이것입니다. 지금 모델이 얼마나 틀렸는지를 하나의 숫자로 요약하는 규칙을 정하는 것. 이 규칙을 손실 함수라고 부릅니다. 비용 함수라고도 해요.

이 숫자가 크면 많이 틀린 것이고 작으면 잘 맞춘 것입니다. 그러니까 학습의 목표는 딱 하나로 줄어듭니다. 이 숫자를 최대한 작게 만드는 가중치를 찾아라.

중요한 것은 손실 함수가 사람이 고르는 것이라는 점입니다. 무엇을 잘못이라고 볼지 정하는 일이니까요. 10회차에서 평가 지표를 고르는 일이 곧 가치 판단이라고 했던 이야기가 여기서도 그대로 적용됩니다.

손실 함수 ① 회귀에서는 — 빗나간 거리를 잽니다

집값을 맞히는 것처럼 숫자를 예측하는 문제부터 봅시다. 예측이 3억인데 실제가 3억 5천이면 5천만큼 빗나갔습니다. 이 빗나간 정도를 오차라고 해요.

여러 집에 대해 오차를 구했으면 이제 합쳐야 합니다. 그런데 그냥 더하면 안 됩니다. 어떤 예측은 위로 빗나가고 어떤 예측은 아래로 빗나가서, 서로 상쇄되어 0이 되어 버릴 수 있어요. 엉망인 모델이 완벽해 보입니다.

그래서 오차를 제곱해서 더합니다. 제곱하면 방향과 무관하게 전부 양수가 되어 상쇄가 사라집니다. 그리고 부수 효과가 하나 더 있어요. 크게 빗나간 예측에 훨씬 무거운 벌이 매겨집니다. 2배 빗나가면 4배의 벌을 받습니다.

이 성질은 좋기도 하고 나쁘기도 합니다. 큰 실수를 피하려는 성향이 생기는 것은 좋지만, 데이터에 이상치가 하나 끼어 있으면 모델 전체가 그 한 점에 끌려갑니다. 실무에서 손실 함수를 바꾸는 흔한 이유가 이것이에요.

사방에서 뻗어 온 여러 청록빛 줄기가 가운데 한 점으로 모여 밝게 응축되는 모습 — 수많은 예측의 오차를 하나의 숫자로 요약하는 손실 함수를 뜻하는 개념 이미지

손실 함수 ② 분류에서는 — 확신까지 벌합니다

스팸이냐 아니냐처럼 부류를 맞히는 문제는 조금 다릅니다. 요즘 분류 모델은 "스팸이다/아니다"로 딱 잘라 답하지 않고 "스팸일 확률 0.9"처럼 확신의 정도를 내놓습니다.

그러면 손실도 확신을 반영해야 합니다. 정답이 스팸인데 모델이 0.9라고 했으면 조금만 벌합니다. 0.6이라고 했으면 좀 더 벌하고요. 0.01이라고 자신 있게 틀렸으면 아주 무겁게 벌합니다.

이 규칙을 교차 엔트로피라고 부릅니다. 이름은 어렵지만 핵심은 한 문장입니다. 확신에 찬 오답이 가장 비싸다.

이 성질이 왜 중요한지는 21회차 「환각과 한계」에서 다시 만납니다. 모델이 그럴듯하게 자신 있게 틀리는 현상은, 바로 이 "자신 있는 오답"을 훈련 중에 얼마나 잘 벌해 왔는가와 직결되어 있어요.

손실은 왜 하나의 숫자여야 하나

여기서 잠깐 멈춰 생각해 볼 것이 있습니다. 왜 굳이 하나의 숫자일까요. 정확도, 속도, 공정성을 따로 보면 안 될까요?

이유는 실용적입니다. 다음 단계에서 우리가 할 일은 "이 숫자를 줄이는 방향"을 찾는 것입니다. 그런데 숫자가 여러 개면 방향이 여러 개가 되고, 서로 반대 방향을 가리킬 수 있습니다. 그러면 어디로 가야 할지 정할 수 없어요.

그래서 목표가 여럿일 때도 실무에서는 가중치를 곱해 하나로 합칩니다. 정확도 손실에 공정성 손실을 얼마쯤 얹는 식이에요.

그리고 이 합치는 비율이 곧 가치 판단입니다. 28회차 「AI 윤리」에서 "공정성을 어떻게 정의할 것인가"를 다룰 때, 그 논쟁이 실제로는 이 계수 하나를 두고 벌어진다는 것을 보게 됩니다.

짙은 안개에 덮인 어두운 비탈 위에 청록빛 구체 하나가 놓여 있고 그 주변만 겨우 보이는 모습 — 전체 지형을 모른 채 발밑만 보고 내려가야 하는 경사하강법의 상황을 뜻하는 개념 이미지

안개 낀 산 — 경사하강법의 그림

이제 손실이라는 숫자가 생겼습니다. 이 숫자를 줄이는 가중치를 찾아야 하는데, 어떻게 찾을까요.

가중치 하나하나를 축으로 삼은 공간을 상상해 봅시다. 그 공간의 각 지점마다 손실값이 정해집니다. 손실이 큰 곳은 높고 작은 곳은 낮다고 하면, 울퉁불퉁한 산악 지형이 하나 그려집니다.

우리가 할 일은 이 지형에서 가장 낮은 골짜기를 찾는 것입니다. 그런데 지형 전체를 볼 수는 없습니다. 가중치가 수십억 개면 축이 수십억 개인 공간이니까요.

그래서 상황은 이렇습니다. 짙은 안개 속 산 어딘가에 서 있고, 발밑의 기울기만 느낄 수 있습니다. 지도도 없고 목적지가 어디인지도 모릅니다. 이때 할 수 있는 최선은 하나예요. 지금 발밑에서 가장 가파른 내리막 쪽으로 한 걸음 딛는 것. 그리고 반복합니다. 이것이 경사하강법입니다.

발끝 감각이란 무엇인가 — 기울기

"발밑의 기울기"를 조금 더 정확히 말해 보겠습니다. 가중치 하나를 골라 아주 조금만 키워 봅니다. 그러면 손실이 어떻게 변할까요.

조금 늘었다면, 그 가중치는 지금 손실을 키우는 쪽으로 기여하고 있는 겁니다. 그러니 줄여야 해요. 조금 줄었다면 반대로 키워야 합니다.

이 "조금 건드렸을 때 손실이 얼마나 변하는가"가 바로 그 가중치에 대한 기울기입니다. 수학에서는 미분이라고 부르지만, 오늘은 민감도라고 이해하면 충분합니다. 이 가중치에 손실이 얼마나 민감한가.

모든 가중치에 대해 이 민감도를 모아 놓은 것이 기울기 벡터입니다. 이것이 가리키는 반대 방향이 가장 가파른 내리막이에요. 그쪽으로 조금 움직입니다. 그게 한 걸음입니다.

기울어진 어두운 면 위에 놓인 청록빛 점 하나에서 가장 낮은 쪽을 향해 짧고 밝은 빛줄기가 면을 따라 뻗어 있는 모습 — 발밑에서 가장 가파른 내리막 방향을 찾는 기울기를 뜻하는 개념 이미지

한 걸음의 크기 — 학습률

방향은 정했습니다. 그러면 얼마나 크게 딛을까요. 이것을 정하는 숫자가 학습률입니다. 12회차 퍼셉트론에서 이미 만난 그 다이얼이에요.

학습률은 신경망 훈련에서 가장 자주 만지는 손잡이입니다. 모델 구조를 바꾸기 전에 먼저 이것부터 조정하는 것이 실무의 상식이에요.

그리고 요즘은 학습률을 훈련 내내 고정하지 않습니다. 처음에는 크게 걷고 갈수록 줄입니다. 멀리 있을 때는 성큼성큼 가고, 골짜기 근처에서는 조심조심 다가가는 것이죠.

너무 크면 튕기고 너무 작으면 늙습니다

학습률이 잘못되면 어떻게 되는지 구체적으로 보겠습니다.

너무 크면 골짜기를 건너뛰어 반대편 비탈에 착지합니다. 거기서 또 크게 딛으면 다시 건너뜁니다. 손실이 줄기는커녕 튕기며 커집니다. 훈련 중 손실이 갑자기 치솟는다면 첫 번째 용의자가 이것이에요.

너무 작으면 방향은 맞는데 하염없이 느립니다. 며칠을 돌려도 손실이 미동도 하지 않아요. 게다가 작은 웅덩이를 넘어갈 힘이 없어서 어중간한 곳에 눌러앉기 쉽습니다.

그래서 실무에서는 손실 곡선을 보고 학습률을 진단합니다. 요동치면 낮추고, 평평하면 높입니다. 21번째 섹션에서 이 곡선 읽는 법을 자세히 다룰게요.

같은 어두운 비탈을 따라 두 개의 청록빛 자취가 내려가는 모습, 하나는 촘촘한 작은 점들로 이어지고 다른 하나는 성긴 긴 조각들로 이어져 골짜기 바닥을 지나 반대편 비탈까지 올라가 있다 — 학습률이 너무 작을 때와 너무 클 때의 차이를 뜻하는 개념 이미지

데이터를 다 보고 한 걸음? — 배치와 확률적 경사하강법

한 걸음을 딛으려면 기울기를 알아야 하고, 기울기를 알려면 손실을 계산해야 합니다. 그런데 손실은 데이터 전체에 대한 것이었죠. 데이터가 1억 건이면 한 걸음마다 1억 건을 다 봐야 합니다.

그래서 실제로는 일부만 봅니다. 무작위로 수십에서 수백 건을 뽑아 그것만으로 기울기를 어림하고 한 걸음 딛습니다. 그리고 다음 걸음에서는 또 다른 표본을 뽑아요. 이것을 확률적 경사하강법이라고 하고, 한 번에 보는 묶음을 미니배치라고 부릅니다.

표본으로 잰 방향이니 매번 조금씩 어긋납니다. 걸음걸이가 비틀거려요. 그런데 이 비틀거림이 오히려 도움이 됩니다. 얕은 웅덩이에 빠졌을 때 흔들림이 있으면 빠져나올 수 있거든요.

훈련 데이터 전체를 한 바퀴 도는 것을 에포크라고 합니다. "10에포크 돌렸다"는 말은 데이터를 열 번 훑었다는 뜻이에요.

웅덩이에 갇히는 문제 — 국소 최소

내리막만 따라가면 가장 낮은 곳에 도착할까요. 그렇지 않습니다. 작은 웅덩이에 빠지면 사방이 오르막이라 더 못 내려갑니다. 훨씬 깊은 골짜기가 산 너머에 있어도 알 방법이 없어요.

이것을 국소 최소라고 합니다. 안개 때문에 여기가 진짜 바닥인지 알 수 없는 것이 핵심 문제예요.

그런데 흥미로운 반전이 있습니다. 축이 수십억 개인 공간에서는 완전한 웅덩이가 오히려 드뭅니다. 모든 방향이 동시에 오르막이어야 웅덩이인데, 방향이 수십억 개면 그중 하나쯤은 내리막일 확률이 높거든요.

그래서 깊은 신경망에서 더 흔한 곤란은 웅덩이가 아니라 널따란 평지입니다. 기울기가 거의 0이라 걸음이 멈춰 버리는 지대예요. 여기서 빠져나오기 위한 장치가 관성, 즉 모멘텀입니다. 직전까지 가던 방향을 조금 유지해서 평지를 미끄러져 통과하게 만듭니다.

어두운 지형에 크기가 다른 두 개의 웅덩이가 나란히 파여 있고 얕은 쪽 바닥에만 청록빛 점 하나가 놓인 모습 — 더 깊은 골짜기를 두고 얕은 웅덩이에 갇히는 국소 최소 문제를 뜻하는 개념 이미지

그런데 은닉층은요 — 다시 만난 공로 배분 문제

여기까지는 사실 12회차의 퍼셉트론에서도 크게 다르지 않습니다. 진짜 벽은 지금부터예요.

경사하강법을 쓰려면 모든 가중치에 대한 민감도를 알아야 합니다. 출력층 가중치는 쉽습니다. 정답과 예측을 비교하면 되니까요.

그런데 은닉층 가중치 하나를 조금 건드리면 어떻게 될까요. 그 뉴런의 출력이 바뀌고, 그것이 다음 층 여러 뉴런에 영향을 주고, 그 영향이 다시 퍼져서 최종 손실이 조금 바뀝니다. 그 "조금"을 어떻게 계산하죠?

가중치 하나하나를 실제로 건드려 보고 손실을 다시 계산하는 방법이 있긴 합니다. 하지만 가중치가 백만 개면 한 걸음 딛는 데 백만 번의 전체 계산이 필요해요. 완전히 불가능합니다.

이것이 11회차의 공로 배분 문제와 정확히 같은 모양입니다. 최종 결과의 책임을 앞선 여러 단계에 어떻게 나눌 것인가. 역전파가 이 문제의 답입니다.

역전파 ① 먼저 앞으로 한 번 흘려보냅니다

역전파는 두 번의 통과로 이루어집니다. 앞으로 한 번, 뒤로 한 번이에요.

먼저 순전파입니다. 입력을 넣고 층을 차례로 통과시켜 최종 출력을 얻습니다. 12회차에서 배운 그대로예요. 곱하고, 더하고, 활성화 함수를 통과합니다.

이때 중요한 것이 하나 있습니다. 각 층에서 나온 중간 결과값을 전부 기억해 둡니다. 뒤로 갈 때 이 값들이 전부 필요하거든요.

이것이 신경망 훈련에 메모리가 많이 드는 이유입니다. 추론만 할 때는 중간값을 버려도 되지만, 훈련할 때는 모든 층의 중간값을 붙들고 있어야 합니다. 큰 모델을 학습시킬 때 그래픽카드 메모리가 먼저 터지는 이유가 여기 있어요.

여러 층으로 쌓인 청록빛 마디들 가운데 맨 윗줄이 가장 밝고 아래로 내려갈수록 점점 어두워지는 모습 — 최종 오차가 위층에서 아래층으로 거슬러 전달되는 역전파를 뜻하는 개념 이미지

역전파 ② 오차를 뒤로 나눠 물립니다

이제 반대 방향입니다. 출력층에서 시작해요. 정답과 예측을 비교해 출력층 뉴런들이 각각 얼마나 틀렸는지를 구합니다. 여기는 정답이 있으니 어렵지 않습니다.

그다음이 핵심입니다. 출력층 뉴런의 오차를, 그 뉴런에게 신호를 보낸 바로 아래층 뉴런들에게 나눠 돌려줍니다. 그러면 아래층 뉴런들도 각자 "내가 이만큼 틀렸구나"에 해당하는 값을 갖게 돼요.

그리고 같은 일을 한 층 더 아래에서 반복합니다. 그 아래에서도 반복하고요. 오차가 층을 거슬러 뒤로 흘러갑니다. 이름이 역전파인 이유예요.

한 층씩 넘겨주는 방식이라 전체 비용이 순전파 한 번과 비슷한 수준에 머뭅니다. 가중치를 하나씩 건드려 보는 방식이 백만 번 걸리던 일을, 두 번의 통과로 끝내는 겁니다. 이것이 역전파의 진짜 위력이에요.

역전파 ③ 책임의 크기는 무엇이 정하나

오차를 나눠 준다고 했는데, 공평하게 나누지 않습니다. 무엇이 몫을 정할까요.

답은 가중치입니다. 어떤 아래층 뉴런이 큰 가중치로 위층에 연결되어 있었다면, 그 뉴런의 신호가 최종 답에 크게 기여했다는 뜻이죠. 그러니 책임도 크게 집니다. 가중치가 작았다면 영향이 작았으니 책임도 작습니다.

직관적으로 아주 자연스럽습니다. 결정에 목소리를 크게 낸 쪽이 결과에 대한 책임도 크게 지는 거예요.

여기에 하나가 더 곱해집니다. 그 뉴런의 활성화 함수가 그 지점에서 얼마나 민감한가입니다. 뉴런이 이미 완전히 켜지거나 꺼진 상태라 조금 건드려도 출력이 안 바뀐다면, 그 뉴런에게 책임을 물어도 소용이 없거든요. 그래서 그만큼 몫이 줄어듭니다.

하나의 밝은 청록빛 점이 밝기가 서로 다른 여러 개의 점으로 갈라져 각각 다른 곳으로 흩어지는 모습 — 최종 오차의 책임이 기여한 크기에 따라 불균등하게 나뉘는 것을 뜻하는 개념 이미지

연쇄 법칙 — 사슬로 이어 붙이기

지금까지 말로 설명한 것에는 정확한 이름이 있습니다. 연쇄 법칙입니다.

일상 비유로 풀어 보겠습니다. 톱니바퀴 세 개가 물려 있다고 해봅시다. 첫 번째가 한 바퀴 돌면 두 번째는 세 바퀴 돌고, 두 번째가 한 바퀴 돌면 세 번째는 두 바퀴 돕니다. 그러면 첫 번째가 한 바퀴 돌 때 세 번째는 몇 바퀴 돌까요. 세 곱하기 둘, 여섯 바퀴입니다.

연쇄 법칙이 하는 일이 정확히 이겁니다. 단계별 민감도를 차례로 곱해 나가면 처음과 끝 사이의 민감도가 나옵니다.

역전파는 이 곱셈을 뒤에서부터 해 나가는 방법입니다. 순서만 바꿨을 뿐인데 계산량이 백만 배 줄어드는 것이죠. 좋은 알고리즘이 무엇인지 보여주는 교과서적인 예입니다.

그래서 활성화 함수는 부드러워야 합니다

12회차에서 남겨 둔 질문에 이제 답할 수 있습니다. 왜 계단 함수를 버렸을까요.

연쇄 법칙은 단계별 민감도를 곱해 나가는 것이었습니다. 그런데 계단 함수의 민감도는 어떻게 될까요. 문턱을 넘지 않은 곳에서는 조금 건드려도 출력이 그대로라 민감도가 0입니다. 문턱 위에서도 0이고요.

0을 곱하면 전부 0이 됩니다. 오차가 뒤로 전달되지 않습니다. 계단 함수를 쓰면 역전파가 아예 작동하지 않아요.

그래서 계단을 부드럽게 다듬은 S자 곡선, 시그모이드가 필요했습니다. 어디서나 기울기가 있으니 곱해 나갈 수 있었죠. 1980년대에 시그모이드가 표준이 된 이유가 이것입니다. 성능이 좋아서가 아니라, 그래야 역전파가 돌아가서였어요.

맞물린 청록빛 고리들이 사슬처럼 길게 이어지며 빛이 하나씩 옮겨 갈수록 점점 밝아지는 모습 — 단계별 민감도를 차례로 곱해 나가는 연쇄 법칙을 뜻하는 개념 이미지

1986년, 문이 열립니다

역전파의 아이디어 자체는 여러 사람이 여러 번 발견했습니다. 1960년대의 제어 이론에도, 1974년 폴 워보스의 박사 논문에도 실질적으로 같은 내용이 들어 있었어요.

그런데 널리 알려진 계기는 1986년입니다. 데이비드 루멜하트, 제프리 힌턴, 로널드 윌리엄스가 네이처에 논문을 발표하면서였죠. 이 논문이 특별했던 것은 방법을 설명하는 데 그치지 않고, 은닉층이 실제로 쓸모 있는 표현을 스스로 학습한다는 것을 보여줬기 때문입니다.

12회차에서 말한 "은닉층은 재배치를 한다"가 증명된 순간이에요. 그리고 6회차의 두 번째 병목, 특징을 사람이 설계해야 한다는 병목이 원리적으로 뚫린 순간이기도 합니다.

첫 번째 겨울이 끝났습니다. 3회차에서 다룬 신경망 부활의 1차 물결이 여기서 시작돼요.

그래도 20년이 더 걸린 이유 — 사라지는 기울기

그런데 이상합니다. 1986년에 문이 열렸는데, 왜 딥러닝의 시대는 2012년에야 왔을까요.

범인 중 하나가 사라지는 기울기 문제입니다. 연쇄 법칙은 민감도를 곱해 나가는 것이었죠. 그런데 시그모이드의 민감도는 아무리 커도 1보다 훨씬 작습니다.

1보다 작은 수를 계속 곱하면 어떻게 될까요. 0.2를 열 번 곱하면 천만 분의 일 수준으로 줄어듭니다. 층이 깊어질수록 앞쪽 층에 도착하는 오차가 사실상 0이 됩니다. 앞쪽 층은 아무것도 배우지 못해요.

그래서 1990년대에는 층을 서너 개 넘게 쌓는 것이 실질적으로 불가능했습니다. 이 벽을 넘는 데 세 가지가 필요했어요. 렐루(민감도가 1이라 곱해도 줄지 않습니다), 훨씬 많은 데이터, 그리고 그래픽카드라는 계산 자원입니다. 이 셋이 갖춰진 해가 2012년이었습니다.

어둠 속에서 청록빛 선이 계단처럼 여러 번 꺾이며 위로 올라가는 모습 — 값이 매끄럽게 변하지 않고 뚝뚝 끊겨 기울기를 잴 수 없는 계단 함수를 뜻하는 개념 이미지

실전 ① 학습 곡선을 읽는 법

이제 실제로 모델을 훈련시킬 때 무엇을 보는지 이야기해 봅시다. 답은 손실 곡선입니다. 훈련이 진행되면서 손실이 어떻게 변하는지를 그린 것이죠.

건강한 곡선은 처음에 가파르게 떨어지다가 점점 완만해지며 낮은 값에 머뭅니다. 여기서 벗어나는 세 가지 패턴이 각각 다른 병을 뜻해요.

손실이 요동치거나 치솟으면 학습률이 너무 큽니다. 골짜기를 건너뛰고 있어요. 낮추면 대개 잡힙니다.

손실이 거의 안 움직이면 학습률이 너무 작거나, 앞쪽 층에 기울기가 도달하지 못하고 있습니다. 학습률을 먼저 올려 보고, 그래도 안 되면 구조를 의심합니다.

훈련 손실은 계속 떨어지는데 검증 손실이 오르기 시작하면 10회차에서 다룬 과적합입니다. 훈련 데이터를 외우기 시작한 것이니, 그 시점에서 훈련을 멈추는 것이 정답이에요. 이것을 조기 종료라고 합니다.

실전 ② 오늘의 훈련은 실제로 어떻게 돌아가나

2026년 현재, 거대 모델의 훈련도 오늘 배운 것과 구조적으로 똑같습니다. 규모만 다를 뿐이에요.

순전파로 답을 내고, 손실을 재고, 역전파로 오차를 거슬러 보내고, 기울기 방향으로 조금 움직인다. 이 네 단계가 수십만 번 반복됩니다. 파라미터가 수천억 개일 뿐, 하는 일은 같아요.

실무에서 달라진 것은 두 가지입니다. 첫째, 학습률을 상황에 따라 자동으로 조절하는 최적화 도구가 표준이 되었습니다. 아담이라는 이름을 뉴스에서 보신 적 있을 텐데, 가중치마다 다른 보폭을 자동으로 정해 주는 장치입니다.

둘째, 중간값을 전부 기억해야 하는 부담이 커서 메모리를 아끼는 기법들이 발달했습니다. 일부 중간값을 버렸다가 필요할 때 다시 계산하는 방식이 대표적이에요. 계산을 더 하는 대신 메모리를 아끼는 맞바꿈입니다. 개인이 집에서 모델을 미세조정할 때 가장 먼저 만나는 벽이기도 합니다.

어둠 속에 같은 높이와 밝기의 청록빛 기둥 세 개가 나란히 솟아오른 모습 — 이번 회차의 핵심 정리 세 가지를 뜻하는 개념 이미지

핵심 정리 — 세 줄

첫째, 학습은 손실이라는 하나의 숫자를 줄이는 일입니다. 무엇을 잘못으로 볼지 정하는 손실 함수는 사람이 고르며, 회귀에서는 빗나간 거리를 제곱해 더하고 분류에서는 확신에 찬 오답을 가장 무겁게 벌합니다. 목표가 여럿일 때 그것을 하나로 합치는 비율이 곧 가치 판단입니다.

둘째, 경사하강법은 안개 낀 산에서 발밑 기울기만으로 내려오는 방법입니다. 가중치를 조금 건드렸을 때 손실이 얼마나 변하는지를 재어 가장 가파른 내리막으로 한 걸음씩 딛습니다. 보폭이 크면 튕기고 작으면 늙으며, 표본으로 어림한 비틀거림은 오히려 얕은 웅덩이를 벗어나는 데 도움이 됩니다.

셋째, 역전파는 최종 오차의 책임을 층을 거슬러 나눠 물리는 방법입니다. 책임의 몫은 그 뉴런이 얼마나 큰 가중치로 기여했는가가 정하며, 단계별 민감도를 곱해 나가는 연쇄 법칙을 뒤에서부터 적용해 계산량을 백만 배 줄입니다. 이 곱셈 때문에 활성화 함수는 반드시 부드러워야 하고, 1보다 작은 값이 계속 곱해지면 앞쪽 층이 배우지 못하는 사라지는 기울기 문제가 생깁니다.

용어 정리

손실 함수 — 지금 모델이 얼마나 틀렸는지를 하나의 숫자로 요약하는 규칙. 비용 함수라고도 합니다. 무엇을 잘못으로 볼지 정하는 일이라 사람이 고릅니다.

오차 — 예측과 실제의 차이.

제곱 오차 — 오차를 제곱해 더하는 손실. 방향에 따른 상쇄를 없애고 큰 실수에 무거운 벌을 매기지만, 이상치에 끌려가기 쉽습니다.

교차 엔트로피 — 분류 문제의 표준 손실. 확신에 찬 오답을 가장 무겁게 벌합니다.

경사하강법 — 손실이 가장 가파르게 줄어드는 방향으로 조금씩 움직여 낮은 곳을 찾아가는 방법.

기울기 — 가중치를 아주 조금 건드렸을 때 손실이 얼마나 변하는가. 그 가중치에 대한 손실의 민감도입니다.

학습률 — 한 걸음의 크기를 정하는 다이얼. 크면 골짜기를 건너뛰고 작으면 느립니다. 훈련에서 가장 자주 조정하는 값입니다.

미니배치 — 한 걸음의 기울기를 어림하기 위해 무작위로 뽑는 데이터 묶음.

확률적 경사하강법 — 전체 데이터 대신 미니배치로 기울기를 어림해 걸음을 딛는 방식. 비틀거리지만 빠르고, 그 흔들림이 얕은 웅덩이 탈출에 도움이 됩니다.

에포크 — 훈련 데이터 전체를 한 바퀴 훑는 것.

국소 최소 — 사방이 오르막이라 더 내려갈 수 없지만 전체에서 가장 낮은 곳은 아닌 지점.

안장점과 평지 — 기울기가 거의 0이라 걸음이 멈추는 지대. 축이 아주 많은 공간에서는 웅덩이보다 이쪽이 더 흔한 곤란입니다.

모멘텀 — 직전까지 가던 방향을 조금 유지해 평지를 미끄러져 통과하게 만드는 장치.

순전파 — 입력을 층을 따라 통과시켜 출력을 얻는 과정. 이때 각 층의 중간값을 기억해 둡니다.

역전파 — 출력층의 오차를 층을 거슬러 뒤로 나눠 물려, 모든 가중치의 기울기를 두 번의 통과만으로 구하는 방법.

연쇄 법칙 — 단계별 민감도를 차례로 곱하면 처음과 끝 사이의 민감도가 나온다는 규칙. 역전파의 수학적 뼈대입니다.

사라지는 기울기 — 1보다 작은 민감도가 층마다 곱해지며 앞쪽 층에 도달하는 오차가 사실상 0이 되는 현상. 깊은 망 학습을 20년간 막았습니다.

조기 종료 — 검증 손실이 오르기 시작하는 시점에 훈련을 멈춰 과적합을 막는 방법.

아담 — 가중치마다 보폭을 자동으로 조절하는 최적화 도구. 현재 사실상의 표준입니다.

다음 회차 예고 — 그리고 생각해볼 질문

14회차는 「CNN: 보는 기계」입니다. 오늘까지 우리는 층을 쌓고 가르치는 일반적인 방법을 손에 넣었어요. 이제부터는 층을 어떻게 배열하느냐에 따라 무엇이 달라지는지를 봅니다.

다음 회차의 배열은 입니다. 사진 한 장에 픽셀이 백만 개인데 모든 픽셀을 모든 뉴런에 연결하면 가중치가 순식간에 폭발합니다. 이 문제를 "작은 창문으로 훑는다"는 아이디어 하나로 어떻게 푸는지, 그리고 그렇게 만든 층이 왜 스스로 선을 찾고, 그다음 층이 모양을 찾고, 그다음 층이 물체를 찾게 되는지를 다룹니다. 3회차에서 예고한 2012년 이미지넷의 그 순간도 여기서 완결됩니다.

생각해볼 질문. 오늘 역전파에서 책임의 몫은 "얼마나 큰 가중치로 기여했는가"가 정한다고 했습니다. 목소리를 크게 낸 쪽이 결과에 대한 책임도 크게 지는 구조죠.

그런데 사람의 조직은 어떤가요. 어떤 결정이 잘못됐을 때, 실제로 그 결정에 가장 크게 기여한 사람이 그만큼의 책임을 지던가요? 아니면 책임은 다른 기준으로 배분되던가요? 신경망이 20년 걸려 겨우 풀어낸 이 문제를, 우리 조직은 어떻게 풀고 있는지 댓글로 들려주세요.


이 포스트는 SVIL 연구소 「AI 기초 및 활용」 30회 시리즈의 13회차이며, 제3부 「딥러닝과 신경망」의 두 번째 회입니다. 하버드 CS50 AI, MIT 6.S191 등 공개 교육과정의 구조를 참고했으며, 모든 내용은 이미지 없이 본문만으로 이해할 수 있도록 구성되어 있습니다. 모든 이미지에는 내용을 설명하는 대체텍스트가 포함되어 있습니다.


협업문의 : kuroicode@gmail.com
블로그 : https://blog.svil.dev/
홈페이지 : https://kuroicode-beep.github.io/svil-homepage/