자동 미분(Automatic Differentiation, Autodiff)은 컴퓨터 프로그램 내에서 정의된 함수의 도함수를, 프로그램을 구성하는 기본 연산들에 미분 규칙을 차례로 적용하여 정확하게 계산하는 방법이다. 이는 딥러닝 모델 학습의 핵심인 역전파(Backpropagation) 알고리즘에서 미분 계산을 효율적이고 정확하게 처리하는 데 필수적인 역할을 한다. 자동 미분은 함수를 표현하는 계산 그래프(Computational Graph)를 기반으로 작동하며, 각 연산에 대한 미분 규칙을 적용하여 전체 함수의 미분을 계산한다. 유한 차분에 의존하는 수치 미분(Numerical Differentiation)과 달리 근사 오차가 발생하지 않으며, 수식 자체를 변형하는 기호 미분(Symbolic Differentiation)과 달리 수식이 비대해지는 문제 없이 반복문과 조건문을 포함한 복잡한 함수도 효율적으로 처리할 수 있다.자동 미분은 크게 순방향 모드(Forward Mode)와 역방향 모드(Reverse Mode)로 나뉜다. 순방향 모드는 하나의 입력 변수에 대한 미분값을 함수값과 함께 계산 그래프의 순서대로 전파하므로, 입력이 적고 출력이 많은 함수에 유리하다. 반면, 역방향 모드는 먼저 순방향으로 함수값을 계산한 뒤 하나의 출력 변수에 대한 민감도를 계산 그래프의 역순으로 전파하므로, 입력이 많고 출력이 적은 함수에 유리하다. 딥러닝 모델 학습에서는 일반적으로 역방향 모드를 사용하는데, 이는 모델의 매개변수 개수가 입력 데이터 차원보다 훨씬 많은 경우가 대부분이기 때문이다. 역방향 모드는 한 번의 계산 그래프 순회를 통해 모든 파라미터에 대한 미분을 효율적으로 계산할 수 있다.자동 미분의 핵심 원리는 연쇄 법칙(Chain Rule)이다. 연쇄 법칙은 합성 함수(Composite Function)의 미분을 계산하는 방법으로, 합성 함수의 각 부분의 미분을 곱하여 전체 함수의 미분을 구하는 방식이다. 계산 그래프에서 각 노드는 특정 연산을 나타내며, 노드 사이의 에지(Edge)는 데이터의 흐름을 나타낸다. 자동 미분은 이러한 그래프 구조를 활용하여 각 연산의 미분을 연쇄적으로 계산한다. 예를 들어 $z = f(g(x))$와 같은 합성 함수에서 $z$를 $x$로 미분하려면, 먼저 $g(x)$를 $x$로 미분하고, $f(g(x))$를 $g(x)$로 미분한 다음, 두 미분 값을 곱하면 된다. 이러한 과정은 자동 미분 프레임워크 내부에서 자동으로 수행되므로 사용자는 미분 과정을 직접 구현할 필요가 없다.파이토치(PyTorch)와 텐서플로(TensorFlow)와 같은 주요 딥러닝 프레임워크는 자동 미분 기능을 내장하고 있다. 파이토치에서는 torch.autograd 패키지가 자동 미분을 제공하며, requires_grad 속성을 사용하여 텐서의 미분 계산 여부를 제어할 수 있다. 텐서플로에서는 tf.GradientTape를 사용하여 자동 미분 연산을 기록하고, tape.gradient 메서드를 사용하여 미분을 계산한다. 이러한 자동 미분 기능은 딥러닝 모델 학습 과정을 자동화하고, 사용자가 복잡한 미분 계산에 집중하지 않고 모델 설계 및 학습에 더욱 집중할 수 있도록 돕는다.