1. Gradient & Hessian Matrix

김재희·2021년 8월 4일
0

개념

목록 보기
2/4

최적화 이론에서 그래디언트와 헤시안 행렬은 모두 함수에 대한 미분값을 표현하고자 한다는 점에서 비슷하다. 또한 두 값 모두 최적화 과정에서 사용된다는 점 역시 동일하다. 두가지에 대해 좀 더 자세히 살펴보도록 하자.

1. Gradient

그래디언트는 함수를 편미분한 값을 원소로 하는 벡터를 의미한다. 즉, 함수 g(x, y)에 대해 변수 x와 y를 이용해서 그래디언트를 표현하면 다음과 같다.

여기서 한가지 짚고 넘어갈 것은 그래디언트는 값이 아닌 함수꼴이라는 점이다. 즉, g(x,y)\nabla g(x, y)는 g(x, y)를 해당 함수의 변수로 편미분한 벡터가 되는 것이다. 그래디언트가 의미하는 것은 함수 g(x, y)의 종속변수에 대한 독립 변수의 변화율이 된다. 즉, x와 y로 이루어진 함수에서 함수값 z가 두 값의 변화에 따라 어떻게 변화하는지 보여주는 게 된다. 최적화 문제에서 우리는 이 z 값을 최소화하는 지점 P(x, y)를 찾고자 하는 것이다. 이때 Fist Order Condition을 이용하면 P(x, y)를 찾을 수 있는데, FOC는 목적함수의 1차 미분값이 0이 되는 지점을 찾는 것이므로 g(x,y)=0\nabla g(x, y) = 0을 이용하게 된다.
gradient descent 알고리즘은 그래디언트의 방향이 해당 지점에서 함수값이 가장 크게 증가하는 방향이고, 그래디언트의 반대 방향이 해당 지점에서 함수값이 가장 크게 감소하는 방향이라고 간주하고 그래디언트를 이용하게 된다. 하지만 이때, 해당 함수를 구성하는 변수를 이용해서 그래디언트를 계산하게 되는데, 정말 변수 축의 방향만 고려해서 그래디언트가 옳바른 방향을 가리키게 될까?

1-1. Directional Derivative

방향도함수란 미분을 하되, 해당 지점에서 특정 방향으로 미분할 때의 도함수를 의미한다.

f:XRnRaXvRnDvf(a)=limt0f(a+tv)f(a)tf : X \subseteq R^n \to R\\ a \in X\\ v \in R^n\\ D_vf(a) = lim_{t \to 0}{f(a + tv) - f(a) \over t}

만약 이 방향도함수를 이용해서 그래디언트보다 더 가파른 벡터를 찾을 수 있다면 그래디언트 디센트는 그래디언트를 이용할 것이 아니라 해당 벡터를 이용하면 될 것이다! (반대로 여기선 방향도 함수를 이용해도 가장 경사가 급한 벡터는 그래디언트임을 증명할 것이다.)

증명
단위 방향 벡터 v를 이용해 a점에서 v 방향의 기울기는 다음과 같이 구할 수 있다.

F(t)=f(a+tv)Dvf(a)=limt0f(a+tv)f(a)t=limt0F(t)F(0)t0F(t) = f(a + tv)\\ D_vf(a) = lim_{t \to 0}{f(a + tv) - f(a) \over t} = lim_{t \to 0} {F(t) - F(0) \over t - 0}

그런데 마지막 식은 결국 다음과 같이 x = 0에서의 F(x)의 도함수와 같다.

Dvf(a)=limt0F(t)F(0)t0=F(0)D_vf(a) = lim_{t \to 0}{F(t) - F(0) \over t - 0} = F'(0)

즉, f(t)의 점 a에서의 방향도함수는 f(a + tv)의 x = 0에서의 도함수와 같다.

다시한번 정리하고, 연쇄법칙을 이용하면 다음과 같다.

Dvf(a)=ddtf(a+tv)t=0consider  x(t)=a+tvddtf(a+tv)t=0=Df(x(t))Dx(t)t=0=Df(x(t))vt=0=Df(a)v=f(a)vD_vf(a) = {d \over dt}f(a+tv)\mid_{t = 0}\\ consider \; x(t) = a + tv\\ {d \over dt}f(a + tv)\mid_{t = 0} = Df(x(t))Dx(t) \mid_{t = 0} = Df(x(t))v\mid_{t = 0} = Df(a)v = \nabla f(a) \cdot v

즉, 점 a에서 v 방향으로의 방향도함수는 점 a에서의 그래디언트와 v의 내적과 동일하다.

여기서 v는 단위벡터이고, 벡터 간 내적은 두 벡터의 크기와 두 벡터가 이루는 각을 이용해 구할 수 있기 때문에 다음과 같다.

Dvf(a)=f(a)vcosθ=f(a)cosθ1cosθ1f(a)Dvf(a)f(a)D_vf(a) = \mid\mid \nabla f(a)\mid\mid \ast \mid\mid v\mid\mid \ast cos\theta = \mid\mid \nabla f(a) \mid\mid cos\theta \\ -1 \leq cos\theta \leq 1\\ \therefore - \mid\mid \nabla f(a) \mid\mid \leq D_vf(a) \leq \mid\mid \nabla f(a) \mid\mid

즉, 점 a에서의 방향도함수는 그래디언트를 최대값으로, -그래디언트를 최소값으로 가지게 된다. 그러면 그래디언트 디센트는 해당 지점에서 가장 함수값이 크게 변하는 방향으로 이동하는 것이기 때문에 다른 방향을 고려하기 위해 방향도함수를 생각할 필요없이 축의 방향만 고려한 그래디언트를 이용하면 되는 것이다.

2. Hessian Matrix

헤세 행렬은 함수의 2차 미분 함수(이계도함수)를 행렬로 표현한 것으로서 다음과 같이 주어진다.

Hij=2fwiwjH_{ij} = {\partial ^2 f \over \partial w_i \partial w_j}

즉, i와 j 변수로 함수 f를 편미분한 이계도 함수를 (i, j)의 원소로 가지고 있는 행렬이다. 만약 해당 함수가 연속함수라면 Hij=HjiH_{ij} = H_{ji}이므로 대칭행렬이 된다. 이때, H가 대칭행렬이라는 점과 벡터 h 방향으로의 이계도함수 Q(h)를 이용해 다음과 같은 증명이 가능하다.

Q(h)=htH(f)h=hTQΛQTh=(QT)hTΛQTh이때  u=QTh  두면Q(u)=λ1u12+λ2u22+...+λnun2Q(h) = h^tH(f)h = h^TQ\Lambda Q^Th = (Q^T)h^T\Lambda Q^Th\\ 이때 \; u = Q^Th 로 \;두면\\ Q(u) = \lambda_1u^2_1 + \lambda_2u_2^2+...+\lambda_nu^2_n

위의 수식을 통해 헤세 행렬의 고유값을 이용하면 임계점이 극대, 극소, 혹은 안장점인지 판별할 수 있게 된다. 고유값이 모두 양수면 벡터 u 방향의 이계도함수 값 Q(u) 역시 양수가 되고, 모두 음수면 Q(u)가 음수가 되어 Second Order Condition을 계산할 수 있기 때문이다.


참고

Hessian Matrix 위키피디아
다크 프로그래머님의 그래디언트, 야코비안, 헤세 행렬에 대한 설명

0개의 댓글