Gradient
정의 및 표현
- 그래디언트(Gradient)는 다변수 함수와 편미분에서 스칼라 함수의 모든 1차 편미분을 하나의 벡터로 모은 것으로, 각 축 방향의 기울기를 하나의 벡터로 표현한 것이다.
- Nabla (∇) 기호를 사용하여 표현하며, 함수 f:Rn→R의 그래디언트는 다음과 같다.
∇f=∂x1∂f∂x2∂f⋮∂xn∂f
- 예를 들어, 다음 이변수 함수 f 에 대한 그래디언트는 다음과 같다.
f(x,y)=x2+y2
∇f=[2x2y]
Gradient의 기하학적 의미
- (Gradient 벡터의 방향) Gradient ∇f의 방향은 함수 f가 가장 빠르게 증가하는 방향을 가리키며, 반대로 −∇f는 가장 빨리 감소하는 방향을 가리킨다.
- (Gradient 벡터의 크기) Gradient ∇f의 크기 ∣∇f∣ 는 함수 f의 증가율(Magnitude)을 나타낸다.
- 예를 들어, f(x,y)=x2+4y2 함수일 때, Gradient는 다음과 같다.
∇f=[2x8y]
- 여기서, 현재 위치에서 (2x,8y) 방향으로 이동할수록 함수값 z가 가장 빠르게 증가한다.
- 또한 Gradient 벡터의 크기는 그 방향으로의 증가율을 의미한다.
- 만약 현재 위치가 (2,1) 이라면 ∇f=(4,8) 이고, 현재 위치를 기준으로 (4,8) 방향으로, 즉 (6,9)를 가리키는 방향으로 증가할 수록 z값이 가장 크게 증가한다.
- 다음은 함수 f(x,y)=−(cos2x+cos2y)2 의 각 위치에서의 Gradient 벡터의 방향 및 증가율을 표현한 것이다.

Gradient의 역할
- Gradient는 어떤 함수를 최적화하기 위한 가장 기본적인 도구로써, 현재 위치에서 함수가 어떻게 변하는지 알려주는 벡터라 할 수 있다.
- (딥러닝) Gradient Descent 방법은 손실함수 Loss를 최소화하기 위해 현재 위치에서 손실함수가 가장 빨리 감소하는 방향 −∇L으로 값을 조정한다.
- 딥러닝에서는 모든 가중치(Weight)에 대해 Gradient를 계산하고, Gradient Descent를 이용해 가중치를 업데이트 한다.
- (컴퓨터 비전) 영상 I(x,y)에서 Gradient를 표현하면 ∇I=(∂x∂I,∂y∂I)가 되고, 이 Gradient가 크면 밝기가 급격히 변하며 edge 성분을 검출할 수 있다.
- 엣지 검출 및 밝기 분석 등 다양한 영상처리 분야에서 Gradient가 사용된다.
- (최적화) 로보틱스, SLAM, 다변수 함수 테일러 근사, Newton Method 등 매우 다양한 최적화 문제에서 오류 및 비용을 최소화하는 도구로써 널리 사용된다.
Jacobian
정의 및 표현
- Jacobian(야코비안)은 모든 벡터들의 1차 편미분값으로 구성된 행렬이다.
- Gradient는 다변수 스칼라 함수에 대한 1차 편미분값인 반면, Jacobian은 다변수 벡터 함수 (vector-valued multivariable function) 일 때의 미분값으로 정의된다.
- 즉, 다변수 함수에 대해 Gradient는 출력이 하나인 스칼라 함수를 다루는 반면, Jacobian은 출력이 n개인 함수를 다룬다.
- 함수 f:Rn→Rm 에 대한 Jacobian 행렬 J는 다음과 같다.
f(x1,x2,…,xn)=f1(x1,x2,…,xn)f2(x1,x2,…,xn)⋮fm(x1,x2,…,xn)
Jf=∂x1∂f1∂x1∂f2⋮∂x1∂fm∂x2∂f1∂x2∂f2⋮∂x2∂fm⋯⋯⋱⋯∂xn∂f1⋮⋮∂xn∂fm
- 예를 들어, 다음 다변수 벡터 함수 f에 대한 Jacobian 행렬은 다음과 같다.
f(x,y)=[x+yx2−y]
Jf=∂x∂f1∂x∂f2∂y∂f1∂y∂f2=[12x1−1]
Jacobian의 기하학적 의미
- Jacobian은 다변수 벡터 함수가 국소적으로 어떻게 동작하는지, 즉 입력 공간의 변화가 출력 공간의 변화로 어떻게 매핑되는지를 선형적으로 설명하는 도구이다.
- (선형 근사) Jacobian 행렬은 다변수 벡터 함수 f:Rn→Rm의 한 지점에서의 최적 선형 근사를 나타낸다. 즉, 주어진 점에서 함수가 어떻게 변화하는지를 선형 변환으로 설명한다.
- 함수 f(x)가 점 a 근처에서 어떻게 변하는지 다음과 같이 근사할 수 있다.
f(x)≈f(a)+Jf(a)(x−a)
- 이는 입력 공간의 작은 변화량 $\Delta x$가 출력 공간에서 $J_{f}(a)\Delta x$로 변환됨을 의미한다.
- (공간 변환) Jacobian은 입력 공간의 작은 벡터나 미소 영역이 함수에 의해 출력 공간에서 어떻게 확대, 축소, 회전 또는 변형되는지를 설명한다.
Δf≈JfΔx
- (야코비안 행렬식 - Jacobian Determinant) 입력과 출력의 차원이 같은 n=m 경우, Jacobian 행렬식 (det(Jf))은 함수가 해당 지점에서 넓이 또는 부피를 얼마나 스케일링하는지를 나타내는 국소적인 스케일링 인자이다.
- 이는 다중 적분에서 변수 변환을 할 때 중요한 역할을 한다.
- 또한, Gradient 역시 Jacobian의 하나의 종류라 볼 수 있으며, 스칼라 함수에 대해 Jacobian의 성질을 포함한다. (∇f=JfT)
- 예를 들어, 다음 다변수 벡터 함수 f에 대한 Jacobian은 아래와 같다.
f(x,y)=[x2+yxy]
Jf=∂x∂f1∂x∂f2∂y∂f1∂y∂f2=[2xy1x]
- 여기서 입력값 (1,2)와 (1.5,3)에서의 함수값과 Jacobian 값을 각각 구하면 다음과 같다.
f(1,2)=[32]. f(1.5,3)=[5.254.5]
Jf(1,2)=[2211]
- 즉 입력이 (1,2)과 (1.5,3)의 차이 Δx=(0.5,1) 만큼 변화할 때, 실제 출력은 (2.25,2.5) 만큼 변화 했다.
- Jacobian은 입력의 변화에 대한 출력 변화를 선형으로 근사하기 때문에 다음 식을 계산하면,
Δf=[2.252.5]
JΔx=[22]=[2211][0.51]
Δf≈JΔx
- 비선형 함수 x2에서 오차가 크게 발생하였으며, 입력 변화 Δx가 작아질 수록 오차가 Jacobian 근사는 정확해진다.
Jacobian의 역할
- Jacobian은 다변수 벡터 함수의 미분 정보를 담고 있어 다양한 분야에서 중요한 역할을 한다.
- (다변수 연쇄 법칙) 딥러닝의 역전파와 같이 여러 함수가 합성된 경우, 최종 함수의 미분을 각 함수의 Jacobian 행렬의 곱으로 표현하여 연쇄 법칙을 일반화한다.
- (변수 변환) 다중 적분에서 변수 변환을 할 때, 새로운 좌표계에서 미소 부피(또는 넓이) 요소가 어떻게 스케일링되는지를 나타내는 Jacobian 행렬식이 사용된다. 극좌표계나 구면 좌표계로 변환하여 적분할 때 필수적.
- (최적화) 뉴턴-랩슨(Newton-Raphson) 방법과 같은 비선형 방정식 시스템을 풀거나 다변수 함수의 최적화 문제에서 해를 반복적으로 근사하는 데 활용된다.
Hessian
정의 및 표현
- Hessian(헤시안) 행렬은 다변수 스칼라 함수의 모든 2차 편미분값으로 구성된 정방 행렬이다.
- 함수 f:Rn→R의 Hessian 행렬 Hf는 다음과 같이 정의된다.
Hf=∂x12∂2f∂x2∂x1∂2f⋮∂xn∂x1∂2f∂x1∂x2∂2f∂x22∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f⋮⋮∂xn2∂2f
- 만약 함수 f가 연속적인 2차 편미분을 가진다면, 클레로의 정리(Clairaut’s Theorem)에 의해 교차 편미분 항은 같아진다. 즉 ∂xi∂xj∂2f=∂xj∂xi∂2f 이므로 , Hessian 행렬은 대칭 행렬이 된다.
- 예를 들어, 다음 이변수 함수 f에 대한 Hessian 행렬은 다음과 같다.
f(x,y)=x3+3xy2−y3
∇f=[∂x∂f∂y∂f]=[3x2+3y26xy−3y2]
Hf=[∂x2∂2f∂y∂x∂2f∂x∂y∂2f∂y2∂2f]=[6x6y6y6x−6y]
Hessian의 기하학적 의미
- (함수의 곡률) 헤시안 행렬은 다변수 함수의 곡률(Curvature) 에 대한 정보를 제공한다. 즉, 함수 그래프가 특정 지점에서 얼마나 휘어져 있는지, 그리고 어떤 방향으로 휘어져 있는지를 나타낸다.
- Gradient가 함수가 가장 빠르게 증가하는 방향이었다면, Hessian은 기울기의 변화량(Gradient가 얼마나 빨리 변하는지)을 알려준다.
- 비선형 함수 f(x)=x2의 기울기 f′(x)=2x 이며, f′′(x)=2 이므로 기울기가 2만큼 계속 커진다 (가속도) = 곡선이 위로 휘어있다.
- 직선 함수 f(x)=3x+1의 기울기 f′(x)=3 이며, f′′(x)=0 이므로 곡률이 없다.
- (최적화 지점 분류) Hessian 행렬의 고유값(eigenvalues)을 활용하여 다변수 함수의 임계점(기울기가 0인 지점)이 극소점(local minimum), 극대점(local maximum), 또는 안장점(saddle point) 인지 판별하는 데 사용된다 (2차 도함수 판정법의 다변수 함수 버전).
- 양의 정부호(Positive Definite): 헤시안 행렬이 양의 정부호이면, 해당 임계점은 극소점이다. (모든 방향으로 오목하게 위로 볼록한 형태)
- 음의 정부호(Negative Definite): 헤시안 행렬이 음의 정부호이면, 해당 임계점은 극대점이다. (모든 방향으로 볼록하게 아래로 오목한 형태)
- 부정부호(Indefinite): 헤시안 행렬이 부정부호이면, 해당 임계점은 안장점이다. (어떤 방향으로는 오목하고 다른 방향으로는 볼록한 형태)
- 준정부호(Semi-definite): 헤시안 행렬이 준정부호이면, 추가적인 분석이 필요하다.
- 예를 들어, f(x,y)=x2−y2 함수에서 Gradient는 아래와 같다.
∇f=[2x−2y]
- 여기서, 모든 1차 편미분 값이 동시에 0이 되는 지점. 즉, 기울기가 0인 임계점은 (0,0)이 된다.
2x=0⟹x=0−2y=0⟹y=0
- Hessian 행렬 Hf는 상수 행렬이므로, 임계점 (0,0)에서의 Hessian 행렬도 동일하다.
Hf=[200−2] λ1=2, λ2=−2
- 행렬 Hf의 교유값은 2와 -2가 되며, 교유값 중 양수와 음수가 모두 존재하므로 부정부호(Indefinite)이며, 따라서 임계점 (0,0)은 안장점(Saddle Point)이 된다.
Hessian의 역할
- (최적화) 다변수 함수의 최적화 문제에서 극소점, 극대점, 안장점을 찾는 데 핵심적인 역할을 한다.
- Newton Method와 같은 2차 최적화 알고리즘은 헤시안 행렬(또는 그 역행렬)을 사용하여 최적해로 수렴하는 방향과 스텝 크기를 결정한다. 이는 Gradient Descent보다 더 빠르게 수렴할 수 있다.
- (딥러닝): 딥러닝에서 2차 최적화 기법(예: Quasi-Newton methods)은 헤시안 행렬의 근사치를 사용하여 가중치 업데이트 방향을 결정한다.
- (테일러 급수 근사) 다변수 함수의 2차 테일러 급수 전개에서 헤시안 행렬은 함수의 2차 항을 구성하는 데 사용된다. 이를 통해 함수를 특정 지점 근처에서 2차 다항식으로 근사할 수 있다.
Gradient, Jacobian, Hessian 비교
| 항목 | Gradient | Jacobian | Hessian |
|---|
| 대상 함수 | 스칼라 함수 | 벡터 함수 | 스칼라 함수 |
| 구성 | 1차 편미분 | 1차 편미분 | 2차 편미분 |
| 형태 | 벡터 | 행렬 | 행렬 |
| 의미 | 함수가 가장 빠르게 증가하는 방향 | 입력 변화에 따른 출력 변화의 선형 근사 | 함수의 곡률(기울기의 변화율) |