변수가 여러 개인 함수(function)의 미분(differentiation). 출력이 수 하나면 각 변수로 편미분(partial derivative)한 값을 모은 기울기 벡터(gradient vector)가 가장 가파르게 오르는 방향과 빠르기를 가리키고, 출력도 여러 개면 그 기울기(slope)들을 쌓은 야코비 행렬(Jacobian matrix)이 한 점 근처에서 함수를 흉내 내는 선형변환(linear transformation)이 된다.
높이가 f(x,y)=x2+3y2인 그릇 모양 땅에서 점 (1, 1)에 서 있다고 합시다. y는 그대로 두고 x 방향(동쪽)으로만 조금 가면 높이는 걸음의 2배 빠르기로 오르고, x는 그대로 두고 y 방향(북쪽)으로만 가면 6배 빠르기로 오릅니다. 다른 변수를 고정하고 한 변수로만 미분한 이 값을 편미분이라 하고 ∂f/∂x=2x=2, ∂f/∂y=6y=6처럼 씁니다. 둘을 모은 벡터(vector)∇f=(2,6)이 기울기 벡터(그래디언트, gradient)입니다.
비스듬히 가면 어떨까요? 방향 u=(cosθ,sinθ)로 갈 때의 변화율(방향 미분, directional derivative)은 두 편미분을 방향 성분으로 섞은 Duf=∇f⋅u=2cosθ+6sinθ입니다. 작게 움직일 때의 변화가 x 방향 몫과 y 방향 몫의 합이 되는 까닭은 국소 선형성(local linearity)입니다. 매끄러운 곡면을 충분히 확대하면 평면(접평면, tangent plane)과 구별되지 않고, 평면 위에서는 높이의 변화가 방향 성분별로 그냥 더해집니다. 점 P를 끌고, 노란 손잡이로 방향을 돌려 보세요. 땅:
지금 ∇f=, 그 길이 ∣∇f∣=, 고른 방향의 변화율 Duf=입니다. 손잡이를 한 바퀴 돌리면 변화율은 ∇f 방향에서 ∣∇f∣로 가장 크고, 반대 방향에서 −∣∇f∣로 가장 작으며, 그 사이의 수직인 두 방향에서 0입니다. 내적(dot product)으로 쓰면 Duf=∣∇f∣cosφ(φ는 ∇f와 u 사이의 각)이기 때문입니다. 변화율이 0인 방향은 높이가 변하지 않는 방향, 곧 등고선의 방향입니다. 그래서 기울기 벡터는 (0이 아닌 한) 언제나 등고선에 수직이고, 가장 가파르게 오르는 방향을 가리킵니다. 왼쪽 그림의 보라 곡선이 P를 지나는 등고선, 보라 점선이 P에서 그은 그 접선(tangent line)인데, P를 어디로 옮겨도 청록 ∇f 화살표가 이 점선과 수직을 이룹니다. 경사 하강법(gradient descent)이 −∇f 쪽으로 걸음을 내딛고, 그 걸음이 등고선에 수직으로 출발하는 까닭입니다. 오른쪽 그래프는 P에서 u 방향으로 자른 단면 g(s)=f(P+su)이고, 청록 접선의 기울기가 Duf입니다. 여러 변수의 방향 미분도 결국 한 변수 함수의 미분입니다.
조심할 점이 있습니다. 편미분 두 개가 있다고 해서 이 모든 것이 성립하지는 않습니다. f(x,y)=xy/(x2+y2)(원점에서는 0으로 정함)는 원점에서 두 편미분이 모두 0이지만, 직선 y = x를 따라 원점에 다가가면 값이 늘 1/2이어서 원점에서 연속조차 아닙니다. 위의 식들이 성립하려면 f가 그 점에서 미분 가능해야 합니다. 곧 어떤 일차식 a⋅h가 f(P+h)−f(P)를, ∣h∣보다 빨리 0으로 가는 오차만 남기고 흉내 내야 합니다. 그때 그 a가 ∇f입니다. 편미분들이 그 점 근처에서 있고 연속이면 미분 가능하다는 것이 알려져 있어서, 흔히 쓰는 매끄러운 함수는 이 조건을 만족합니다.
출력도 여러 개일 때.F(x,y)=(u,v)처럼 점을 점으로 보내는 함수를 생각합시다. 출력마다 기울기 벡터가 하나씩 있고, 그것들을 가로줄로 쌓은 행렬(matrix)이 야코비 행렬입니다.
J=[∂u/∂x∂v/∂x∂u/∂y∂v/∂y],F(P+h)≈F(P)+Jh
국소 선형성은 이제 이런 뜻이 됩니다. P 근처에서 F는 행렬 J로 나타나는 선형변환에 평행이동을 더한 것처럼 보입니다. 사상: , 작은 정사각형의 한 변 h =
왼쪽의 점 P(정사각형의 가운데)를 끌어 보세요. 오른쪽의 청록 영역은 정사각형이 F로 옮겨 간 실제 모양이고, 흰검은 점선 평행사변형은 J로 옮긴 모양입니다. 분홍과 주황 화살표는 P에서 가로, 세로로 h/2만큼 간 변위(displacement)이고, 오른쪽에서는 그 변위에 J를 곱한 것, 곧 J의 두 열에 h/2를 곱한 것입니다. 지금 이고 detJ=, 실제 넓이(area)의 비율은 입니다. h를 줄이면 휘어진 모양이 평행사변형에 달라붙고 넓이의 비율이 ∣detJ∣에 다가갑니다. 곧 야코비 행렬식(Jacobian determinant)은 그 점 근처에서 넓이가 몇 배가 되는지를 말합니다(행렬식(determinant)). '극좌표(polar coordinates)'를 고르면 (r,θ)↦(rcosθ,rsinθ)이고 detJ=r입니다. 원점에서 멀수록 같은 크기의 drdθ 칸이 더 넓은 부채꼴 조각이 되기 때문이고, 가우스 적분(Gaussian integral)을 극좌표로 계산할 때 dxdy 자리에 rdrdθ가 들어가는 까닭입니다(치환 적분(integral)의 다변수판). 'z²'은 복소수(complex number)의 곱셈z↦z2입니다. J가 늘 [ab−ba], 곧 회전(rotation)과 확대를 합친 꼴이라서 작은 정사각형이 거의 정사각형인 모양으로 갑니다(각이 보존됩니다). detJ=0인 원점에서는 이 그림이 깨집니다. F가 연속적으로 미분 가능하고 detJ=0인 점에서는 F를 그 근처에서 거꾸로 되돌릴 수 있다는 것이 역함수 정리입니다.
합성과 두 번째 미분. 함수를 이으면 야코비 행렬이 곱해집니다. JG∘F(P)=JG(F(P))JF(P)이고, 1변수 연쇄법칙(chain rule)은 이것의 1×1 경우입니다(행렬의 곱, matrix multiplication). 출력이 수 하나인 f의 야코비 행렬은 1×n 가로줄이고, 이것을 세로로 세운 것이 ∇f입니다. 한 번 더 미분한 값 ∂2f/∂xi∂xj를 모은 헤세 행렬(Hessian matrix) H(독일 수학자 오토 헤세의 이름)는, 두 번 연속적으로 미분 가능하면 대칭이고 f(P+h)≈f(P)+∇f⋅h+21hTHh를 줍니다. H의 고유값(eigenvalue)은 그 고유벡터(eigenvector) 방향으로 자른 단면의 이계도함수, 흔히 말하는 '그 방향의 휘는 정도'입니다. ∇f = 0인 점에서 고유값이 모두 양수면 극소, 모두 음수면 극대, 양수와 음수가 섞이면 '안장' 땅의 원점 같은 안장점입니다. 고유값에 0이 끼어 있으면 이것만으로는 가릴 수 없습니다. 두 번 미분할 수 있는 함수라면 H의 고유값이 어디서나 0 이상인 것이 곧 볼록 함수(convex function)라는 것입니다. 이차 근사의 바닥으로 한 번에 건너뛰는 걸음 −H−1∇f를 되풀이하는 것이 뉴턴 방법(Newton's method)입니다.
신경망(neural network) 속의 야코비 행렬. 층 하나 y=σ(Wx+b)의 입력에 대한 야코비 행렬은 diag(σ′(z))W, 곧 가중치(weight) 행렬의 각 행에 활성화 함수(activation function)의 기울기를 곱한 것입니다(z=Wx+b). 층을 쌓으면 이 행렬들이 곱해집니다. 손실 L은 수 하나라서, 손실 쪽 끝부터 '가로줄 벡터 × 행렬'을 차례로 곱해 나가면 모든 기울기를 싸게 얻습니다. 이것이 역전파(backpropagation)이고, 아무 프로그램에나 쓸 수 있게 일반화한 것이 자동 미분(automatic differentiation)입니다. 가중치 행렬에 대한 기울기는 ∂L/∂W=δxT(δ=∂L/∂z) 꼴, 곧 세로 벡터와 가로 벡터의 곱인 계수 1 행렬입니다. 미니배치(minibatch)의 예 하나마다 이런 조각이 하나씩 더해집니다(특잇값 분해(singular value decomposition)).