지난 장에서 우리는 경사하강법을 배웠습니다. 모델은 손실이 줄어드는 방향으로 가중치를 조금씩 움직입니다. 이때 방향과 크기를 알려 주는 것이 기울기라고 했습니다.
그런데 아직 중요한 질문이 남아 있습니다.
"기울기는 도대체 어떻게 알 수 있을까?"
산길을 걷는 사람은 발바닥으로 경사를 느낄 수 있습니다. 앞으로 한 발 내디뎠을 때 높아지는지 낮아지는지 몸으로 압니다. 하지만 신경망은 발바닥이 없습니다. 대신 숫자를 봅니다. 가중치를 아주 조금 바꿨을 때 손실이 얼마나 달라지는지 계산합니다.
이때 필요한 도구가 미분입니다.
미분이라고 하면 많은 사람이 복잡한 공식부터 떠올립니다. 하지만 딥러닝을 이해하기 위해 처음 붙잡아야 할 핵심은 공식이 아닙니다. 미분의 출발점은 아주 단순한 질문입니다.
"이 값을 조금 바꾸면 결과가 얼마나 바뀔까?"
이 질문을 이해하면 역전파도 훨씬 덜 낯설어집니다. 역전파는 결국 신경망 안의 수많은 값에 대해 "이 숫자를 조금 바꾸면 손실이 얼마나 바뀌는가?"를 거꾸로 추적하는 과정이기 때문입니다.

미분은 작은 변화에 대한 관찰이다
간단한 자판기를 떠올려 봅시다. 동전을 넣으면 음료가 나오는 자판기 말고, 숫자를 넣으면 다른 숫자를 내보내는 자판기입니다.
입력으로 x를 넣으면 출력으로 y가 나옵니다.
예를 들어 이런 규칙이 있다고 해 봅시다.
y = 3x + 2
x가 1이면 y는 5입니다. x가 2이면 y는 8입니다. x를 1만큼 키웠더니 y는 3만큼 커졌습니다. 여기서는 변화가 아주 예측하기 쉽습니다. x를 조금 키우면 y는 그 3배만큼 커집니다.
이때 우리는 이렇게 말할 수 있습니다.
"이 함수에서 x에 대한 y의 변화율은 3이다."
변화율은 말 그대로 입력이 변할 때 출력이 얼마나 변하는지를 나타냅니다. 미분은 이 변화율을 더 정교하게 보는 방법입니다. 특히 입력을 크게 바꾸는 것이 아니라 아주 조금 바꿨을 때 출력이 어떻게 반응하는지 봅니다.
딥러닝에서 이 감각은 매우 중요합니다. 우리는 가중치를 한 번에 크게 바꾸지 않습니다. 아주 조금 바꿉니다. 그리고 그 작은 변화가 손실에 어떤 영향을 주는지 알고 싶어 합니다.
"이 가중치를 조금 키우면 손실이 커질까, 작아질까?"
"커진다면 얼마나 빠르게 커질까?"
"거의 변하지 않는다면 굳이 이 가중치를 크게 고칠 필요가 있을까?"
미분은 이런 질문에 답하는 언어입니다.
평균 변화율과 순간 변화율
변화율을 조금 더 천천히 살펴보겠습니다. 자동차가 2시간 동안 100km를 달렸다면 평균 속도는 시속 50km입니다. 이것은 전체 구간을 놓고 본 평균 변화율입니다.
하지만 실제 자동차는 2시간 내내 정확히 시속 50km로 달리지 않았을 수 있습니다. 어느 순간에는 30km로 천천히 갔고, 어느 순간에는 80km로 빨리 갔을 수도 있습니다. 우리가 정말 궁금한 것이 "바로 지금 속도"라면 평균 속도만으로는 부족합니다.
함수도 마찬가지입니다. 어떤 구간에서 입력이 얼마나 변했고 출력이 얼마나 변했는지를 보면 평균 변화율을 알 수 있습니다.
평균 변화율 = 출력의 변화량 / 입력의 변화량
그런데 딥러닝에서 필요한 것은 대개 "현재 위치에서"의 변화율입니다. 현재 가중치가 w = 2.0일 때, 이 가중치를 아주 조금 바꾸면 손실이 어떻게 달라지는지가 궁금합니다. 멀리 떨어진 w = 10.0까지 갔을 때의 평균 변화가 아니라, 바로 지금 이 자리에서의 반응이 필요합니다.
그래서 입력의 변화량을 점점 작게 줄여 봅니다. 1만큼 바꿔 보고, 0.1만큼 바꿔 보고, 0.001만큼 바꿔 보고, 더 작게 바꿔 봅니다. 이렇게 아주 작은 변화에 대한 비율을 바라보면 현재 위치에서의 순간적인 변화율에 가까워집니다.
이 순간 변화율이 바로 미분의 핵심입니다.
수학적으로는 이를 극한이라는 개념으로 다루지만, 지금은 이렇게 이해해도 충분합니다.
미분은 입력을 아주 조금 흔들었을 때 출력이 얼마나 민감하게 흔들리는지 보는 방법입니다.
기울기는 현재 위치의 방향 감각이다
함수를 그래프로 그리면 미분값은 현재 위치에서의 기울기로 나타납니다. 기울기는 그래프가 어느 방향으로 얼마나 기울어져 있는지를 알려 줍니다.
산길 비유로 다시 돌아가 봅시다. 지금 서 있는 곳에서 오른쪽으로 조금 움직였더니 높이가 올라간다면, 오른쪽 방향의 기울기는 양수입니다. 반대로 오른쪽으로 움직였더니 높이가 내려간다면, 기울기는 음수입니다. 오른쪽으로 조금 움직여도 높이가 거의 변하지 않는다면 기울기는 0에 가깝습니다.
딥러닝에서는 높이가 손실이고, 위치가 가중치입니다. 따라서 기울기는 현재 가중치를 조금 바꿨을 때 손실이 어떻게 바뀌는지를 말해 줍니다.
기울기의 부호는 방향을 알려 줍니다.
기울기가 양수이면 값을 키울수록 출력이 커지는 방향입니다. 손실에 대한 기울기가 양수라면, 그 가중치를 키울 때 손실이 커지는 쪽이라는 뜻입니다.
기울기가 음수이면 값을 키울수록 출력이 작아지는 방향입니다. 손실에 대한 기울기가 음수라면, 그 가중치를 키울 때 손실이 줄어드는 쪽이라는 뜻입니다.
기울기가 0이면 아주 작은 변화에 대해 출력이 거의 변하지 않는 위치입니다. 평평한 곳이거나, 꼭대기나 골짜기처럼 방향이 바뀌는 지점일 수 있습니다.
여기서 중요한 점이 있습니다. 기울기는 "어디가 최종 목적지인지"를 알려 주지 않습니다. 기울기는 현재 위치 주변의 정보만 알려 줍니다. 지금 한 걸음 오른쪽으로 가면 올라가는지 내려가는지, 얼마나 가파른지 말해 줄 뿐입니다.
경사하강법은 바로 이 지역 정보를 믿고 조금씩 움직입니다. 전체 지도를 한 번에 보는 대신, 현재 위치의 기울기를 보고 한 걸음 내려갑니다.
양수, 음수, 0이 업데이트를 바꾼다
지난 장에서 본 업데이트 식을 다시 떠올려 봅시다.
새 가중치 = 현재 가중치 - 학습률 × 기울기
이 식이 왜 그렇게 생겼는지 이제 더 잘 이해할 수 있습니다. 기울기는 손실이 증가하는 방향을 가리킵니다. 우리는 손실을 줄이고 싶습니다. 그래서 기울기의 반대 방향으로 움직입니다.
어떤 가중치 w가 있고, 현재 손실에 대한 기울기가 +4라고 해 봅시다. 이는 w를 조금 키우면 손실이 꽤 빠르게 커진다는 뜻입니다. 그러면 손실을 줄이려면 w를 줄이는 쪽으로 가야 합니다. 업데이트 식에서도 양수 기울기를 빼므로 w는 작아집니다.
반대로 기울기가 -4라면 어떨까요? 이는 w를 키우는 방향으로 갈 때 손실이 줄어드는 쪽이라는 뜻입니다. 업데이트 식에서는 음수를 빼게 됩니다. 음수를 빼면 더하는 것과 같으므로 w는 커집니다.
기울기가 0이면 업데이트는 거의 일어나지 않습니다. 현재 위치에서 그 가중치를 조금 바꿔도 손실이 거의 변하지 않는다고 보기 때문입니다. 다만 여기서 조심해야 합니다. 기울기가 0이라고 해서 항상 완벽한 정답이라는 뜻은 아닙니다. 꼭대기처럼 잠시 평평한 지점일 수도 있고, 넓고 완만한 구간일 수도 있습니다. 실제 딥러닝에서는 여러 가중치가 함께 움직이므로 한 값의 기울기만 보고 모든 것을 판단할 수는 없습니다.
그래도 큰 원리는 분명합니다. 기울기의 부호는 어느 쪽으로 움직일지 알려 주고, 기울기의 크기는 현재 위치에서 손실이 얼마나 민감하게 변하는지 알려 줍니다.
손실 함수에서 직접 느껴 보는 미분
아주 작은 예를 하나 보겠습니다. 모델의 예측값을 ŷ라고 하고, 정답을 y라고 하겠습니다. 손실을 단순하게 제곱 오차로 계산한다고 해 봅시다.
손실 = (예측값 - 정답)^2
정답이 3인데 모델이 5라고 예측했다면 오차는 2입니다. 손실은 2^2 = 4입니다. 이번에는 모델이 4라고 예측했다면 오차는 1이고 손실은 1입니다. 예측값이 정답에 가까워질수록 손실이 작아집니다.
그렇다면 예측값이 정답보다 큰 상황에서는 어떻게 해야 할까요? 예측값을 줄여야 합니다. 반대로 예측값이 정답보다 작은 상황에서는 예측값을 키워야 합니다.
미분은 이 방향을 숫자로 말해 줍니다.
제곱 오차에서 예측값이 정답보다 크면, 예측값에 대한 손실의 기울기는 양수가 됩니다. 예측값을 키우면 손실이 더 커지기 때문입니다. 그래서 손실을 줄이려면 예측값을 낮춰야 합니다.
예측값이 정답보다 작으면, 기울기는 음수가 됩니다. 예측값을 키우는 방향이 손실을 줄이는 쪽이기 때문입니다.
예측값이 정답과 같으면 오차가 0이고 손실도 0입니다. 이 지점에서는 예측값을 아주 조금 움직이면 오히려 손실이 생깁니다. 손실이 가장 낮은 지점이므로 기울기는 0입니다.
이 예는 단순하지만 중요한 감각을 줍니다. 미분은 모델에게 이렇게 말해 주는 안내판과 같습니다.
"지금 예측은 너무 높아. 낮춰."
"지금 예측은 너무 낮아. 올려."
"지금은 이 값만 보면 거의 맞아."
물론 실제 신경망에서는 예측값 하나만 직접 조정하지 않습니다. 예측값을 만든 수많은 가중치와 편향을 조정합니다. 그래서 다음 단계가 필요합니다.
변수가 많아지면 편미분이 필요하다
지금까지는 입력 변수가 하나인 경우를 상상했습니다. x 하나를 바꾸면 y가 어떻게 변하는지 보았습니다. 하지만 신경망은 그렇게 단순하지 않습니다.
한 뉴런만 보아도 입력이 여러 개일 수 있습니다.
z = w1x1 + w2x2 + w3x3 + b
여기에는 w1, w2, w3, b라는 여러 숫자가 등장합니다. 더 큰 신경망으로 가면 이런 숫자가 수천 개, 수백만 개, 훨씬 더 많이 생깁니다. 손실은 이 모든 숫자의 영향을 받아 결정됩니다.
이제 질문이 바뀝니다.
"전체 가중치 중에서 w1만 조금 바꾸면 손실이 얼마나 달라질까?"
"w2만 조금 바꾸면?"
"편향 b만 조금 바꾸면?"
이처럼 여러 변수 중 하나만 살짝 바꾸고, 나머지는 잠시 고정한 채 변화율을 보는 것을 편미분이라고 합니다. '편'이라는 말은 전체 중 한쪽, 한 부분을 본다는 뜻으로 이해하면 됩니다.
편미분은 복잡한 기계의 손잡이를 하나씩 돌려 보는 일과 비슷합니다. 어떤 기계에 손잡이가 100개 있다고 해 봅시다. 결과가 마음에 들지 않습니다. 그러면 우리는 한 번에 모든 손잡이를 마구 돌리기보다, 각 손잡이가 결과에 어떤 영향을 주는지 알고 싶어 합니다. 첫 번째 손잡이를 조금 돌려 보고, 두 번째 손잡이를 조금 돌려 보고, 세 번째 손잡이를 조금 돌려 봅니다.
신경망의 가중치도 마찬가지입니다. 손실이라는 결과가 마음에 들지 않을 때, 각 가중치가 손실에 얼마나 영향을 주는지 알고 싶습니다. 이때 각 가중치에 대한 편미분값을 구합니다.
예를 들어 손실을 L이라고 하면, 우리는 이런 값들을 알고 싶어 합니다.
∂L/∂w1, ∂L/∂w2, ∂L/∂w3, ∂L/∂b
기호가 조금 낯설어 보이지만 뜻은 단순합니다. ∂L/∂w1은 "w1을 아주 조금 바꿨을 때 손실 L이 얼마나 바뀌는가"라는 뜻입니다. ∂L/∂b는 "편향 b를 아주 조금 바꿨을 때 손실이 얼마나 바뀌는가"라는 뜻입니다.
이 편미분값들을 모두 모아 놓은 것이 그래디언트, 즉 기울기 벡터입니다. 가중치가 하나일 때는 기울기가 숫자 하나였지만, 가중치가 여러 개일 때는 각 가중치마다 기울기가 하나씩 필요합니다.
딥러닝 학습에서 "기울기를 계산한다"는 말은 결국 모델 안의 수많은 파라미터에 대해 이런 편미분값을 구한다는 뜻입니다.
기울기 벡터는 여러 방향을 동시에 알려 준다
가중치가 두 개뿐인 아주 작은 모델을 상상해 봅시다. 손실은 w1과 w2에 따라 달라집니다. 이때 우리는 평면 위를 걷는 사람처럼 생각할 수 있습니다. 동서 방향으로는 w1이 바뀌고, 남북 방향으로는 w2가 바뀝니다. 높이는 손실입니다.
현재 위치에서 w1 방향으로 조금 움직이면 손실이 올라갈 수 있습니다. 동시에 w2 방향으로 조금 움직이면 손실이 내려갈 수도 있습니다. 그러면 우리는 w1은 줄이고, w2는 키우는 식으로 움직여야 합니다.
기울기 벡터는 이런 정보를 한꺼번에 담습니다. 각 방향으로 얼마나 올라가는지 알려 주는 화살표 묶음입니다. 경사하강법은 이 기울기 벡터의 반대 방향으로 이동합니다. 그래서 여러 가중치를 동시에 조금씩 수정할 수 있습니다.
실제 신경망에서는 이 과정이 엄청난 규모로 일어납니다. 어떤 가중치는 조금 줄어들고, 어떤 가중치는 조금 커지고, 어떤 가중치는 거의 변하지 않습니다. 그 작은 변화들이 모여 다음 예측을 조금 다르게 만듭니다. 그리고 그 예측이 다시 손실을 만들고, 손실은 다시 기울기를 만듭니다.
이 반복 속에서 모델의 내부 표현이 서서히 바뀝니다. 처음에는 아무 의미 없어 보이던 가중치들이 데이터의 패턴을 담는 방향으로 정렬됩니다.
층이 여러 개이면 영향도 이어진다
이제 신경망의 진짜 모습을 떠올려 봅시다. 신경망은 하나의 계산으로 끝나지 않습니다. 입력이 첫 번째 층을 지나고, 활성화 함수를 지나고, 다음 층을 지나고, 또 다음 층을 지나 최종 예측에 도착합니다.
즉 한 가중치가 손실에 영향을 주는 길은 매우 깁니다.
예를 들어 어떤 가중치 w가 첫 번째 층에 있다고 해 봅시다. 이 가중치는 먼저 어떤 뉴런의 값 z를 바꿉니다. z는 활성화 함수에 들어가 a가 됩니다. a는 다음 층의 입력이 되고, 다음 층의 계산 결과를 바꿉니다. 이런 식으로 영향이 계속 이어져 최종 예측을 바꾸고, 최종 예측은 손실을 바꿉니다.
흐름을 단순화하면 이렇습니다.
w → z → a → 다음 층 → 예측값 → 손실
우리가 알고 싶은 것은 w를 조금 바꿨을 때 손실이 얼마나 바뀌는가입니다. 그런데 w가 손실을 직접 바꾸는 것이 아닙니다. 중간 값들을 차례로 바꾸고, 그 영향이 끝까지 전달되어 손실을 바꿉니다.
이때 필요한 것이 체인 룰, 우리말로는 연쇄 법칙입니다.
체인 룰은 변화의 릴레이를 연결한다
체인 룰은 이름 그대로 연결된 변화들을 이어 주는 규칙입니다. 어떤 값이 다른 값을 바꾸고, 그 값이 또 다른 값을 바꾸고, 그 결과가 최종 출력에 영향을 줄 때 전체 영향을 계산하는 방법입니다.
비유해 봅시다. 첫 번째 도미노를 살짝 밀면 두 번째 도미노가 넘어지고, 두 번째 도미노가 세 번째 도미노를 밀고, 결국 마지막 도미노가 넘어집니다. 마지막 도미노가 얼마나 세게 넘어졌는지를 알려면 첫 번째 도미노의 힘만 보면 부족합니다. 중간 도미노들이 힘을 어떻게 전달했는지도 봐야 합니다.
신경망도 비슷합니다. 첫 번째 층의 가중치 변화는 중간 계산들을 거쳐 손실에 도착합니다. 그래서 전체 영향은 각 단계의 영향을 연결해 계산합니다.
단순한 흐름을 생각해 봅시다.
x → z → y
x가 z를 바꾸고, z가 y를 바꿉니다. 그러면 x가 y에 미치는 영향은 두 질문을 이어 붙여 생각할 수 있습니다.
"x를 조금 바꾸면 z가 얼마나 바뀌는가?"
"z를 조금 바꾸면 y가 얼마나 바뀌는가?"
이 두 변화율을 곱하면 x가 y에 미치는 전체 변화율을 알 수 있습니다.
x가 y에 미치는 영향 = x가 z에 미치는 영향 × z가 y에 미치는 영향
신경망에서는 이 생각이 계속 반복됩니다.
w가 손실에 미치는 영향 = w가 z에 미치는 영향 × z가 a에 미치는 영향 × a가 다음 값에 미치는 영향 × ... × 예측값이 손실에 미치는 영향
처음 보면 길어 보이지만 핵심은 단순합니다. 멀리 떨어진 결과에 대한 영향은 중간 단계의 영향들을 차례로 연결해서 구합니다.
역전파는 체인 룰을 신경망에 적용한 것이다
이제 다음 장에서 배울 역전파의 모습이 조금 보이기 시작합니다.
신경망의 계산은 입력에서 시작해 예측으로 나아갑니다. 이것을 순전파라고 부릅니다. 입력 데이터가 들어오고, 각 층의 계산을 지나고, 마지막에 예측값이 나옵니다. 그런 다음 예측값과 정답을 비교해 손실을 계산합니다.
그런데 가중치를 고치려면 반대 방향의 질문을 해야 합니다.
"이 손실은 마지막 층의 어떤 값 때문에 얼마나 변했을까?"
"그 마지막 층의 값은 그 앞 층의 어떤 값 때문에 얼마나 변했을까?"
"그 앞 층의 값은 더 앞의 가중치 때문에 얼마나 변했을까?"
이 질문은 손실에서 출발해 앞쪽 층으로 거슬러 올라갑니다. 그래서 이름이 역전파입니다. 손실의 영향 정보를 뒤쪽에서 앞쪽으로 전달하면서, 각 가중치가 손실에 얼마나 책임이 있는지 계산합니다.
여기서 '책임'이라는 말은 도덕적인 의미가 아닙니다. 어떤 가중치를 조금 바꾸면 손실이 얼마나 바뀌는지를 나타내는 수학적 책임입니다. 손실에 큰 영향을 주는 가중치는 더 분명한 수정 신호를 받습니다. 영향이 거의 없는 가중치는 작은 신호를 받습니다.
역전파는 마법 같은 절차가 아닙니다. 체인 룰을 신경망의 계산 그래프에 아주 효율적으로 적용하는 방법입니다. 계산 그래프란 어떤 값이 어떤 계산을 거쳐 다음 값이 되는지 연결해 놓은 흐름도라고 생각하면 됩니다.
작은 변화가 학습을 만든다
딥러닝의 학습은 거대한 변화에서 시작되지 않습니다. 오히려 매우 작은 변화에서 시작됩니다. 가중치를 조금 바꿉니다. 손실이 어떻게 바뀌는지 봅니다. 그 변화율을 이용해 다음 이동 방향을 정합니다.
이 과정이 수없이 반복되면 놀라운 일이 일어납니다. 처음에는 무작위에 가까웠던 가중치들이 점점 역할을 나눠 갖습니다. 어떤 가중치는 이미지의 선을 감지하는 데 중요해지고, 어떤 가중치는 단어의 쓰임새를 구분하는 데 관여합니다. 더 깊은 층에서는 단순한 숫자 변화가 더 추상적인 표현으로 이어집니다.
하지만 그 모든 출발점에는 같은 질문이 있습니다.
"조금 바꾸면 얼마나 달라지는가?"
미분은 이 질문에 답합니다. 기울기는 그 답을 방향과 크기로 보여 줍니다. 편미분은 많은 변수 중 하나씩 영향을 살펴보게 해 줍니다. 체인 룰은 여러 층을 지나 이어지는 영향을 연결해 줍니다.
이 네 가지 감각이 잡히면 역전파는 훨씬 자연스럽게 다가옵니다.
모델이 예측합니다. 손실을 계산합니다. 손실이 각 가중치에 얼마나 영향을 받는지 미분으로 확인합니다. 체인 룰로 층을 거슬러 올라가며 그 영향을 나눠 전달합니다. 그리고 경사하강법으로 가중치를 조금 수정합니다.
다음 장에서는 이 흐름을 본격적으로 묶어 보겠습니다. 신경망은 어떻게 손실에서 출발해 각 가중치의 수정 방향을 찾아낼까요? 이제 우리는 역전파의 핵심 아이디어로 들어갈 준비가 되었습니다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.