karpathy/micrograd
요약
Andrej Karpathy가 공개한 micrograd는 역전파를 구현한 매우 작은 규모의 자동 미분(Autograd) 엔진입니다. 약 100줄의 코드로 구성된 DAG 기반의 라이브러리로, 교육용으로 설계되어 신경망의 동작 원리를 이해하는 데 최적화되어 있습니다.
핵심 포인트
- 역전파를 구현한 초소형 Autograd 엔진
- PyTorch와 유사한 사용자 친화적 API 제공
- 스칼라 기반 DAG를 통한 신경망 구축 가능
- 교육적 목적으로 설계된 가벼운 라이브러리
아주 작은 Autograd (자동 미분) 엔진 (한 입 크기! :)). 동적으로 구축된 DAG (유향 비순환 그래프) 상에서 역전파 (backpropagation, reverse-mode autodiff)를 구현하며, 그 위에 PyTorch와 유사한 API를 가진 작은 신경망 라이브러리를 구축했습니다. 두 가지 모두 매우 작아서 각각 약 100줄과 50줄의 코드로 이루어져 있습니다. DAG는 스칼라 (scalar) 값에 대해서만 작동하므로, 예를 들어 각 뉴런을 개별적인 작은 덧셈과 곱셈으로 잘게 나눕니다. 하지만 데모 노트북에서 보여주듯이, 이 정도만으로도 이진 분류 (binary classification)를 수행하는 전체 심층 신경망 (deep neural nets)을 구축하기에 충분합니다. 교육적인 목적으로 유용할 수 있습니다.
pip install micrograd
아래는 지원 가능한 여러 연산을 보여주는 약간 의도된 예시입니다:
from micrograd.engine import Value
a = Value(-4.0)
b = Value(2.0)
...
노트북 demo.ipynb는
2층 신경망 (MLP, Multi-Layer Perceptron) 이진 분류기를 훈련하는 전체 데모를 제공합니다. 이는 micrograd.nn 모듈로부터 신경망을 초기화하고, 간단한 SVM "최대 마진 (max-margin)" 이진 분류 손실 함수를 구현하며, 최적화를 위해 SGD (확률적 경사 하강법)를 사용하여 달성됩니다. 노트북에 표시된 것처럼, 두 개의 16개 노드 은닉층 (hidden layers)을 가진 2층 신경망을 사용하여 moon 데이터셋에서 다음과 같은 결정 경계 (decision boundary)를 얻을 수 있습니다:
편의를 위해, trace_graph.ipynb 노트북은
graphviz 시각화를 생성합니다. 예를 들어 아래의 것은 아래 코드에서 draw_dot을 호출하여 얻은 단순한 2D 뉴런의 모습이며, 데이터 (각 노드의 왼쪽 숫자)와 그래디언트 (gradient, 각 노드의 오른쪽 숫자)를 모두 보여줍니다.
from micrograd import nn
n = nn.Neuron(2)
x = [Value(1.0), Value(-2.0)]
...
단위 테스트 (unit tests)를 실행하려면 PyTorch를 설치해야 합니다. 테스트는 계산된 그래디언트의 정확성을 검증하기 위한 참조용으로 PyTorch를 사용합니다. 그 다음 간단히 다음을 실행하세요:
python -m pytest
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Jupyter Notebook (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기