AI VIDEO BRIEFING
역전파와 신경망 학습 원리 완전 정리: 안드레 카파시가 직접 만든 마이크로그래드 강의 해설
안드레 카파시가 빈 주피터 노트북에서 시작해 자동미분 엔진 마이크로그래드를 한 줄씩 직접 만들며 역전파와 경사하강법을 설명한다. 미분의 의미를 잡는 단계부터 파라미터 41개짜리 신경망을 실제로 학습시키기까지의 흐름과, 강의 중 드러난 흔한 버그까지 정리했다.

핵심 메시지
쉽게 이해하기
안드레 카파시는 10년 넘게 심층 신경망을 학습시켜 온 경험을 바탕으로, 빈 주피터 노트북에서 시작해 강의가 끝날 때쯤에는 실제로 동작하는 신경망을 정의하고 학습시키는 과정을 처음부터 끝까지 보여준다. 소재는 그가 2년 전 깃허브에 소스코드만 올려두었던 마이크로그래드라는 작은 라이브러리다. 당시에는 코드를 읽는 사람이 알아서 구조를 파악해야 했는데, 이 강의에서 한 조각씩 직접 만들어 가며 설명을 붙였다.
마이크로그래드는 자동미분(autograd) 엔진이다. 값들을 감싸는 객체를 만들어 덧셈·곱셈 같은 연산으로 수식 그래프를 쌓아 올리고, 마지막 노드에서 backward를 호출하면 그래프를 거꾸로 타고 내려가며 연쇄법칙을 재귀적으로 적용해 모든 중간값과 입력에 대한 기울기를 채운다. 이 기울기는 해당 입력을 조금 키웠을 때 출력이 어느 방향으로 얼마나 움직이는지를 알려주고, 그래서 신경망의 가중치를 어느 쪽으로 조정해야 손실이 줄어드는지 판단하는 근거가 된다.
강의는 미분의 정의를 다시 확인하는 데서 시작한다. 수식을 손으로 미분하는 대신, 입력을 아주 작은 값 h만큼 밀어 보고 출력 변화량을 h로 나누어 기울기를 수치적으로 확인한다. 신경망에서는 아무도 전체 수식을 손으로 미분하지 않고, 항이 수만 개에 이르기 때문에 이런 국소적인 감각이 훨씬 중요하다는 설명이다. 이어서 값 객체에 자식 노드와 연산 종류를 기록하게 만들어, 어떤 값이 어떤 연산으로 어디서 나왔는지를 추적할 수 있는 그래프 구조를 완성한다.
역전파를 자동화할 때 핵심은 순서다. 어떤 노드의 backward를 호출하기 전에 그 노드에 의존하는 모든 뒤쪽 노드가 먼저 처리돼 있어야 하므로, 위상 정렬로 그래프를 한 줄로 눕힌 뒤 역순으로 훑는다. 여기서 강의는 일부러 버그를 드러낸다. a + a처럼 같은 객체를 두 번 쓰면 기울기를 두 번 대입하면서 값이 덮어써져 1이 나오는데, 정답은 2다. 다변수 연쇄법칙에 따라 기울기는 더해져야 하므로 대입 대신 누적(+=)으로 바꿔야 한다는 것이다.
마지막으로 뉴런·레이어·다층 퍼셉트론을 파이토치 API와 같은 모양으로 쌓고, 예제 네 개에 대해 평균제곱오차 손실을 계산한 뒤 순전파·역전파·업데이트를 반복하는 학습 루프를 돌린다. 학습률이 너무 작으면 수렴이 느리고 너무 크면 손실이 발산할 수 있어 적당한 보폭을 찾는 일은 미묘한 기술이라고 덧붙인다. 그리고 학습 루프를 정리하는 과정에서 카파시 본인이 매우 흔한 실수를 저지르는데, 업데이트 전에 기울기를 0으로 비우지 않아 값이 계속 누적된 것이었다.
주요 인사이트
- 마이크로그래드는 텐서가 아니라 스칼라 단위로 동작하는데, 이는 교육 목적의 선택이다. 다차원 배열을 다루지 않아도 되니 연쇄법칙 자체에 집중할 수 있고, 실제 라이브러리가 텐서를 쓰는 이유는 수학이 달라서가 아니라 병렬 연산으로 속도를 얻기 위해서다.
- tanh를 덧셈과 곱셈으로 잘게 쪼개지 않고 하나의 연산으로 구현한 대목은 설계 자유도를 보여준다. 연산이 아무리 복잡해도 순전파를 계산할 수 있고 국소 기울기를 쓸 수 있다면 역전파는 그대로 이어지므로, 어느 수준에서 연산을 끊을지는 만드는 사람이 정하면 된다.
- 기울기를 0으로 비우지 않은 버그에도 학습이 그럭저럭 잘 된 이유가 중요하다. 문제가 너무 쉬워 누적된 기울기가 사실상 큰 보폭 역할을 했을 뿐이며, 더 복잡한 문제였다면 최적화가 무너졌을 것이라는 설명은 신경망 코드의 버그가 조용히 숨는 방식을 잘 보여준다.
- 만든 결과가 파이토치와 같은 값을 내는지 직접 대조해 보는 절차가 강의에 들어 있다. 같은 식을 파이토치 텐서로 계산했을 때 순전파 값과 기울기가 모두 일치했고, 이는 두 구현이 같은 원리 위에 서 있음을 확인하는 방법이기도 하다.
- 파이토치에서 tanh의 역전파 코드를 찾는 데 15분을 쓰고도 헤맸다는 일화는, 실무용 라이브러리가 읽히기 위해서가 아니라 쓰이기 위해 만들어졌다는 현실을 보여준다. 원리를 이해하려면 작고 단순한 구현을 먼저 보는 편이 낫다는 강의의 전제와도 이어진다.
자주 묻는 질문
역전파가 정확히 무엇을 계산하나요?
손실 함수를 신경망의 가중치들로 미분한 값, 즉 기울기를 계산합니다. 이 값은 각 가중치를 조금 키웠을 때 손실이 어느 방향으로 얼마나 움직이는지를 알려주므로, 손실을 줄이는 방향으로 가중치를 반복해 조정할 수 있게 해 줍니다.
왜 기울기를 대입하지 않고 더해야 하나요?
같은 변수가 수식에서 두 번 이상 쓰이면 여러 경로로 기울기가 흘러들어옵니다. 대입하면 나중에 도착한 값이 먼저 도착한 값을 덮어써 버리므로, 다변수 연쇄법칙에 맞춰 각 경로의 기여를 모두 더해야 올바른 값이 나옵니다.
학습률은 어떻게 정하나요?
강의에서는 정해진 공식 대신 감각의 문제라고 설명합니다. 너무 작으면 수렴에 지나치게 오래 걸리고, 너무 크면 손실 지형의 전혀 다른 곳으로 건너뛰어 학습이 불안정해지거나 손실이 발산할 수 있습니다. 실제로 강의 중에도 보폭을 크게 잡았다가 손실이 튀는 장면이 나옵니다.
이렇게 작은 예제가 실제 대형 모델과 무슨 관계가 있나요?
강의에서 만든 신경망은 파라미터가 41개뿐이지만, GPT처럼 수천억 개 파라미터를 가진 모델도 순전파로 예측을 만들고 손실을 계산한 뒤 역전파로 기울기를 구해 경사하강법으로 갱신한다는 뼈대는 같습니다. 다만 손실 함수로 평균제곱오차 대신 교차 엔트로피를 쓰고, 갱신 방식이 조금 더 정교해집니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗