Gradient, Jacobian 행렬, Hessian 행렬, Laplacian

수학 이야기 2014. 4. 15. 12:19

Gradient(그레디언트), Jacobian(야코비언) 행렬, Hessian(헤시안) 행렬, Laplacian(라플라시안) ...

 

문득 정리의 필요성을 느껴서 적어봅니다.

이들을 함께 보는 이유는? 그냥 왠지 이들은 세트로 함께 봐야 할 것 같은..

 

참고한 자료는 제가 항상 애용하는 위키피디아입니다.

- Gradient(그레디언트): http://en.wikipedia.org/wiki/Gradient

- Jacobian(야코비언) 행렬: http://en.wikipedia.org/wiki/Jacobian_matrix

- Hessian(헤시안) 행렬: http://en.wikipedia.org/wiki/Hessian_matrix

- Laplacian(라플라시안): http://en.wikipedia.org/wiki/Laplace_operator

 

 

1. Gradient, Jacobian, Hessian, Laplacian 요약

 

- Gradient(그레디언트)

 

 

- Jacobian(야코비언) 행렬

 

 

- Hessian(헤시안) 행렬

 

 

- Laplacian(라플라시안)

 

 

 

2. Gradient(그레디언트)

 

어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 gradient(그레디언트)는

 

 --- (1)

 

와 같이 정의됩니다.

 

즉, gradient(그레디언트)는 위 식과 같이 각 변수로의 일차 편미분 값으로 구성되는 벡터입니다. 그리고 이 벡터는 f의 값이 가장 가파르게 증가하는 방향을 나타냅니다. 또한 벡터의 크기는 그 증가의 가파른 정도(기울기)를 나타냅니다.

 

예를 들어, f(x,y) = x2 + y2의 gradient(그레디언트)를 구해보면

 

--- (2)

 

이므로, (1,1)에서 f값이 최대로 증가하는 방향은 (2,2), 그 기울기는 ∥(2,2)∥= sqrt(8) 입니다.

 

<그림 1> f(x,y) = x2 + y2 그래프

 

또한 반대로 gradient(그레디언트)에 음수를 취하면 즉, -▽f는 f값이 가장 가파르게 감소하는 방향을 나타내게 됩니다.

 

이러한 gradient의 특성은 어떤 함수를 지역적으로 선형근사(linear approximation)하거나 혹은 gradient descent 방법(Gradient Descent 탐색 방법 글 참조)처럼 함수의 극점(최대값, 최소값 지점)을 찾는 용도로 활용될 수 있습니다.

 

Gradient를 이용한 다변수 scalar 함수 f의 점 p 근처에서의 선형 근사식은 다음과 같습니다 (first order Taylor expansion).

 

 --- (3)

 

 

영상처리에서 gradient(그레디언트)는 영상의 edge 및 edge 방향을 찾는 용도로 활용될 수 있습니다. 이미지 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 각 픽셀 위치에서 gradient의 크기와 방향을 구하면 해당 픽셀이 얼마나 edge에 가까운지, 그리고 edge의 방향이 어디인지 쉽게 알 수 있습니다.

 

 --- (4)

 

 

<그림 2> gradient를 이용한 영상 edge 검출

 

 

3. Jacobian(야코비언) 행렬

 

어떤 F:Rn→Rm 함수 F(x1,...,xn) = (f1(x1,...,xn), ..., fm(x1,...,xn))에 대한 Jacobian(야코비언) 행렬은

 

 --- (5)

 

로 정의됩니다.

 

예를 들어, F(x,y) = (2x+y, xy) 인 F:R2→R2 함수라면

 

 --- (6)

 

가 됩니다.

 

즉, Jacobian(야코비언)은 어떤 다변수 벡터함수(vector-valued function of multiple variables)에 대한 일차 미분(first derivative)으로 볼 수 있습니다.

 

☞ 앞서 나온 gradient(그레디언트)나 Jacobian(야코비언)이나 모두 함수에 대한 일차 미분(first derivative)을 나타낸다는 점에서는 동일합니다. 다만, 그레디언트는 다변수 스칼라 함수(scalar-valued function of multiple variables)에 대한 일차 미분인 반면 Jacobian(야코비언)은 다변수 벡터 함수(vector-valued function of multiple variables)에 대한 일차미분입니다. 즉, 그레디언트는 통상적인 일변수 함수의 일차미분을 다변수 함수로 확장한 것이고, Jacobian(야코비언)은 이를 다시 다변수 벡터함수로 확장한 것입니다.

 

Jacobian(야코비언)이나 그레디언트나 모두 함수에 대한 일차미분이기 때문에 미분이 가지고 있는 의미나 성질은 모두 동일하게 적용됩니다. 즉, 어떤 함수의 지역적인 변화특성을 파악할 때, 지역적인 함수의 변화를 선형근사할 때 또는 함수의 극대(극소)를 찾을 때 활용될 수 있습니다.

 

예를 들어, 점 p∈Rn 근처에서 F를 선형근사할 때 Jacobian(야코비언)을 다음과 같이 활용할 수 있습니다 (first order Taylor expansion).

 

 --- (7)

 

Jacobian(야코비언)이 비선형 연립방정식의 해를 구하는 목적으로 활용되는 예에 대해서는 [기계학습] - 뉴턴법/뉴턴-랩슨법의 이해와 활용(Newton's method) 글을 참조하기 바랍니다.

 

 

4. Hessian(헤시안) 행렬

 

어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 Hessian 행렬은

 

 --- (8)

 

와 같이 정의됩니다.

 

앞서 설명한 gradient(그레디언트), Jacobian(야코비언)이 모두 함수에 대한 일차미분(first derivative)를 나타내는 반면 Hessian은 함수의 이차미분(second derivative)를 나타낸다는 점에서 차이가 있습니다.

 

즉, Hessian은 함수의 곡률(curvature) 특성을 나타내는 행렬로서 최적화 문제에 적용할 경우 Hessian을 이용하면 다음 식과 같이 p 근처에서 함수를 2차 항까지 근사시킬 수 있습니다 (second-order Taylor expansion)

 

$f(x)\simeq f(p)+\triangledown f(p)(x-p)+\frac{1}{2}(x-p)^TH(p)(x-p)$ --- (9)

 

또한 Hessian은 critical point의 종류를 판별하는데 활용될 수 있습니다. 어떤 함수의 일차미분이 0이 되는 되는 점을 critical point (또는 stationary point)라 부르는데 함수의 극점(극대, 극소), saddle point 등이 여기에 해당됩니다 (쉽게 생각하면, 고교수학 미분에서 f'(x) = 0이 되는 지점).

 

어떤 (다변수) 함수를 최적화시키기 위해 극점(극대, 극소)을 찾기 위해서는 먼저 그 함수의 일차미분인 gradient(그레디언트)가 0이 되는 지점(critical point)을 찾습니다. 그런데, 이렇게 찾은 critical point가 극대점인지 극소점인지, 아니면 saddle point(말안장처럼 방향에 따라서 극대, 극소가 바뀌는 점)인지 구분하기 위해서는 이차미분값을 조사해야 하는데 이 때 바로 Hessian을 사용할 수 있습니다.

 

그 구체적인 방법은, 어떤 함수의 critical point에서 계산한 Hessian 행렬의 모든 고유값(eigenvalue)이 양수(positive)이면 해당 지점에서 함수는 극소, 모든 고유값이 음수이면 극대, 음의 고유값과 양의 고유값을 모두 가지면 saddle point인 것으로 판단합니다 (고교수학에서 f''(x)의 부호에 따라서 아래로 볼록, 위로 볼록 여부를 구분하는 것과 같은 이치).

 

이러한 구분의 핵심에는 Hessian 행렬의 고유벡터(eigenvector)는 함수의 곡률이 큰 방향벡터를 나타내고 고유값(eigenvalue)은 해당 고유벡터(eigenvector) 방향으로의 함수의 곡률(curvature, 이차미분값)을 나타낸다는 점에 있습니다.

 

☞ Hessian 행렬은 대칭행렬(symmetric matrix)이므로 [선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector) 글에서 설명한 바와 같이 항상 고유값 분해가 가능하며 서로 수직인 n개의 고유벡터를 가집니다 (단, Hessian이 대칭행렬이 되기 위해서는∂x∂y = ∂y∂x와 같이 편미분의 순서가 바뀌어도 그 결과가 동일해야 하는데 그러려면 f가 해당 지점에서 2차 미분이 가능하고 또한 2차 미분한 함수가 연속이어야 한다고 합니다: https://en.wikipedia.org/wiki/Symmetry_of_second_derivatives 참조)

 

참고로 이미지에서의 Hessian은 그레디언트의 경우와 마찬가지로 이미지 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 다음과 같이 계산할 수 있습니다.

 

 --- (10)

 

 

 

5. Laplacian(라플라시안)

 

어떤 다변수 함수 f(x1,x2,...,xn)가 있을 때, f의 Laplacian(라플라시안)은

 

 --- (11)

 

와 같이 각 변수로의 2차 편미분 값의 합으로 정의됩니다.

 

Laplacian은 여러 물리적 의미를 담고 있다고 합니다만 제가 물리에 대해서는 아는 바가 없으니 영상처리 쪽에서의 응용에 대해서만 살펴보겠습니다.

 

이미지에서의 Laplacian은 I(x,y)를 (x,y)에서의 픽셀의 밝기를 나타내는 함수로 보고 다음과 같이 계산할 수 있습니다.

 

 --- (12)

 

<그림 3> Laplacian (가운데)과 |gradient| (오른쪽) 비교

 

☞ Laplacian은 +,- 값을 갖기 때문에 0 ~ 255 사이로 스케일을 맞추어 이미지로 표시하면 <그림 3>의 가운데 그림처럼 보여집니다.

 

Gradient의 크기(그레디언트 벡터의 크기)와 Laplacian이 언뜻 서로 비슷해 보이지만 둘 사이에는 큰 차이가 있습니다.

 

--- (13)

 

|Gradient|는 영상의 밝기 변화가 급격할수록 큰 값을 가집니다. 하지만 Laplacian은 영상의 밝기변화의 변화가 심할수록 큰 값을 가집니다. 즉, 아무리 밝기 변화가 크더라도 그 변화속도가 일정하다면 Laplacian은 0에 가까운 값을 갖습니다.

 

이미지 관점에서 보면 이미지 내의 두 영역의 경계(edge)에서는 급격한 밝기 변화가 일어나기 때문에 |gradient|나 Laplacian 모두 큰 값을 나타냅니다. 하지만 동일한 영역 내부에서 점진적인 밝기 변화가 일어날 때는 그 밝기변화 정도에 따라서 |gradient|는 큰 값을 가질 수 있지만 Laplacian은 작은 값을 나타내는 차이가 있습니다.

 

즉, Laplacian은 영상의 밝기 변화가 평면형(planar)을 이룰 때 최소의 절대값을 가지고 극대, 극소점처럼 모든 방향으로 밝기 변화가 심할 때 최대의 절대값을 가집니다. 따라서, Laplacian은 영상에서 blob을 찾거나 코너점(corner point)를 찾는 용도로 활용될 수 있습니다.

 

☞ 이상으로 gradient, Hessian, Jacobian, Laplacian에 대한 글을 마무리합니다. 원래 영상 특징점 추출 방법을 정리하다 보니 gradient, Hessian, Laplacian 등의 개념이 필요하여 같이 정리하게 되었습니다. 하면 할수록 할게 많아지고.. 꼬리에 꼬리를 무는게 공부인것 같습니다..

 

 

by 다크 프로그래머