# 마이크로그래드로 풀어 본 신경망 학습과 역전파

> 2022-08-16 · Andrej Karpathy · 큐레이션 김태우
> https://challengekim.com/insights/마이크로그래드로-풀어-본-신경망-학습과-역전파
> 원문: https://www.youtube.com/watch?v=VMj-3S1tku0

## 핵심 요약

- **마이크로그래드(micrograd**)는 수치 하나씩 계산하며 역전파의 작동 원리를 보여 주는 교육용 자동 미분 엔진이다.
- 역전파는 출력에서 입력 방향으로 계산 그래프를 거슬러 올라가며, 각 연산의 국소 미분값을 연쇄법칙으로 연결한다.
- 신경망 학습은 예측과 목표값의 차이로 손실을 만들고, 각 가중치가 손실에 미치는 영향을 계산한 뒤 가중치를 조금씩 바꾸는 과정이다.
- 같은 값이 계산에 여러 번 쓰이면 각 경로에서 온 기울기를 더해야 한다. 학습을 반복할 때는 이전 기울기도 매번 0으로 초기화해야 한다.

## 숫자의 변화가 출력에 미치는 영향

안드레이 카파시는 신경망을 입력 데이터와 가중치를 받아 예측을 내놓는 수학적 표현식으로 설명한다. 마이크로그래드는 그 표현식을 개별 숫자의 덧셈과 곱셈 같은 연산으로 쪼개 기록한다. 각 결과값은 자신을 만든 연산과 앞선 값들을 기억하므로, 최종 출력에서 거꾸로 계산 경로를 따라갈 수 있다.

이때 기울기는 한 값을 아주 조금 바꿨을 때 출력이 어느 방향으로 얼마나 변하는지를 나타낸다. 강의의 간단한 식에서 입력 a와 b를 거쳐 얻은 출력 g는 약 24.7이다. 마이크로그래드로 계산한 g의 기울기는 a에 대해 138, b에 대해 645다. 이는 해당 지점에서 각 입력을 조금 늘릴 때 g가 증가하는 국소적인 비율을 뜻한다. 강의는 이 식 자체에는 특별한 의미가 없으며, 지원하는 연산을 보여 주기 위해 만들었다고 밝힌다.

## 연쇄법칙으로 그래프를 거슬러 올라간다

**역전파**의 핵심은 복잡한 전체 식을 한 번에 미분하는 대신 작은 연산의 미분값을 연결하는 데 있다. 어떤 값 c가 중간 결과 d를 바꾸고 d가 최종 출력 l을 바꾼다면, c가 l에 미치는 영향은 두 변화율을 곱해 구한다. 이것이 연쇄법칙이다.

덧셈에서는 두 입력에 대한 국소 미분값이 각각 1이므로, 출력 쪽에서 들어온 기울기가 두 입력으로 전달된다. 곱셈에서는 한 입력에 대한 국소 미분값이 다른 입력의 값이다. 강의는 l=(a×b+c)×f라는 식의 각 지점에서 이 규칙을 손으로 적용한 뒤, 작은 수치 변화로 결과를 확인한다.

자동화할 때는 각 연산에 역방향 계산 함수를 붙인다. 이어 계산 그래프의 의존 관계에 맞게 노드를 정렬하고, 출력의 기울기를 1로 둔 뒤 역순으로 함수를 실행한다. 한 값이 여러 경로에 쓰인 경우에는 기울기를 덮어쓰지 않고 합산해야 한다. a+a의 a에 대한 기울기가 1이 아니라 2라는 예가 이 차이를 드러낸다.

## 뉴런에서 다층 신경망까지

강의가 만든 뉴런은 각 입력에 가중치를 곱해 더하고 편향을 더한 다음, 활성화 함수 tanh를 적용한다. 편향은 입력과 별개로 뉴런의 출력을 조절하는 값이다. tanh는 큰 양수와 음수 입력을 각각 1과 -1에 가까운 값으로 압축한다. 입력 하나가 0이면 그 입력에 곱해지는 가중치를 조금 바꿔도 해당 계산 결과는 변하지 않으므로, 그 경로의 가중치 기울기도 0이 된다.

카파시는 tanh를 하나의 연산으로 구현한 경우와 지수·덧셈·나눗셈으로 풀어 구현한 경우를 비교한다. 두 방식은 같은 순방향 출력과 입력 쪽 기울기를 낸다. 역전파에 필요한 것은 연산을 어디까지 쪼갰는지가 아니라, 각 연산의 출력과 국소 미분값을 계산할 수 있는지다.

뉴런 여러 개를 층으로 묶고 층을 순서대로 연결하면 다층 퍼셉트론(MLP)이 된다. 강의의 예시는 입력 3개, 뉴런 4개짜리 층 2개, 출력 1개로 구성되며 가중치와 편향을 합쳐 매개변수 41개를 갖는다.

## 손실을 줄이는 반복과 두 가지 함정

학습 예시에는 입력·목표값 쌍 4개가 있다. 목표 출력은 각각 1 또는 -1이며, 강의는 각 예측과 목표값의 차이를 제곱해 합한 값을 **손실**로 사용한다. 예측이 목표에 가까워질수록 손실은 작아진다. 손실에서 역전파를 실행하면 41개 매개변수 각각이 손실에 미치는 국소적인 영향을 얻는다. 경사하강법은 손실을 줄이기 위해 그 기울기의 반대 방향으로 매개변수를 조금씩 갱신한다.

갱신 폭을 정하는 학습률이 너무 작으면 수렴이 느리고, 너무 크면 현재 지점의 국소 기울기가 가리키는 범위를 지나쳐 손실이 불안정해질 수 있다. 강의에서도 큰 갱신으로 손실이 한때 급증했다. 또 처음 작성한 학습 반복문에는 역전파 전에 기울기를 0으로 되돌리지 않는 오류가 있었다. 이전 반복의 기울기가 계속 쌓였지만, 단순한 예제여서 손실은 줄었다. 카파시는 더 복잡한 문제였다면 이 오류가 최적화를 방해했을 수 있다고 설명한다.

## 교육용 엔진과 실제 라이브러리의 관계

마이크로그래드는 원리를 드러내기 위해 숫자 하나씩 처리한다. 카파시는 실제로 큰 신경망을 학습할 때는 숫자들을 다차원 배열인 텐서로 묶어 병렬 계산한다고 설명한다. 강의에서 같은 뉴런 계산을 파이토치의 단일 원소 텐서로 다시 수행하자 순방향 출력과 기울기가 마이크로그래드 결과와 일치했다.

따라서 이 강의가 보여 주는 학습의 기본 흐름은 명확하다. 입력과 매개변수로 예측을 계산하고, 목표와의 차이를 손실로 나타낸 뒤, 역전파로 얻은 기울기에 따라 매개변수를 갱신한다. 강의의 작은 분류 문제는 이 흐름과 구현상의 함정을 확인하는 사례다.

---

원문을 바탕으로 AI 가 한국어로 요약·재구성한 글입니다. 인용·수치는 원문 링크에서 확인해 주세요. [원문 링크](https://www.youtube.com/watch?v=VMj-3S1tku0)
