2019-12-11 17:26:56

 

안녕하세요. 비스카이비전의 심교훈입니다.^^ 오늘은 헤시안(Hessian) 행렬을 이용해서 극소점, 극대점, 안장점을 판정하는 것에 대해서 살펴보고자 합니다. 헤시안 행렬은 헤세 행렬로 불리기도 하더군요. 

 

용어 정리: 극점, 극소점, 극대점, 최소점, 최대점, 안장점, 임계점

우선 용어들에 대해 정리 좀 하고 가겠습니다. 먼저 극소점, 극대점과 최소점, 최대점의 차이는 무엇일까요? 극소점(극대점)이라는 것은 국소적으로 최소값(최대값)을 갖는 점을 의미합니다. 극소점, 극대점을 통틀어 극점이라고 부릅니다. 반면, 최소점(최대점)은 전역적으로 최소값(최대값)을 갖는 점을 의미합니다. 따라서 여러 개의 극소점, 극대점은 존재할 수 있지만, 최소점, 최대점은 많아야 하나씩만 존재합니다. 극소점, 극대점, 최소점, 최대점은 영어로 표현해야 그 차이가 분명하게 느껴집니다. 

 

극소점: local minimum point

극대점: local maximum point

최소점: global minimum point

최대점: global maximum point

 

이번에는 그래프로 확인해볼까요? 다음 그래프는 정의역 $0.1 \leq x \leq 2.3$에서 $y = \frac{cos(3\pi x)}{x}$의 그래프입니다. 

보시다시피, 최대점과 최소점은 하나씩만 존재하지만, 극대점과 극소점은 여러 개입니다. 이제 극소점, 극대점, 최소점, 최대점 충분히 이해되셨죠?

 

안장점의 경우 변수가 2개 이상인 함수에서 존재 가능한데, 보는 방향에 따라 극소점으로 보이기도, 극대점으로 보이기도 하는 점입니다. 아래는 $f(x, y) = x^2 - y^2$의 그래프입니다. 

 

참고로 이 그래프를 그리기 위해서 matlab에서 다음과 같이 코딩했습니다. 

clc, clear, close all

x = -10:1:10;
[X, Y] = meshgrid(x);

f = X.^2 - Y.^2;

surf(X, Y, f)
grid on
xlabel('x');
ylabel('y');

 

다음은 동일한 그래프를 y축 방향에서 바라본 모습과, x축 방향에서 바라본 모습입니다. 

 

 

y축 방향에서 보면 극대점을 갖는 것처럼 보이는데 x축 방향에서 보면 극소점을 갖는 것처럼 보이죠? 말 안장 같이 생겼기 때문에 안장점이라는 말이 붙었습니다. 

 

마지막으로 임계점(critical point)이라는 용어를 정리하고 갑시다. 임계점은 극소점, 극대점, 안장점 모두를 포함하는 계념으로 함수의 도함수가 0이 되는 점들을 지칭합니다. 

 

헤시안 행렬

임계점이 함수의 도함수가 0이 되는 점들이라면, 그 임계점이 극대점, 극소점, 안장점인지는 어떻게 판정할 수 있을까요? 변수가 2개 이상인 다변수 함수의 경우에는 헤시안 행렬을 활용하면 됩니다. 변수 $x_1, x_2,..., x_n$을 가지는 다변수 함수의 헤시안 행렬은 다음과 같이 정의됩니다. 

 

 

2차 미분한 것인데 각각 행과 열의 번호를 갖는 변수들로 미분해준 것을 모아놓은 것입니다. 

 

결론적으로 말해서, 임계점이 존재하는 경우, 그 임계점에서 헤시안 행렬의 고유값들이 모두 양수면 그 임계점은 극소점인 것이고, 고유값들이 모두 음수면 그 임계점은 극대점이고, 고유값들에 양수도 있고 음수도 있는 경우면 그 임계점은 안장점입니다. 

 

헤시안 행렬의 고유값이

모두 양수면 => 극소점

모두 음수면 => 극대점

양수와 음수가 동시에 있으면 => 안장점

 

헤시안 행렬로 극소점, 극대점, 안장점 판정하기

그렇다면 이제 몇 개의 다변수 함수에 임계점이 존재하는지, 존재한다면 극소점인지 극대점인지 아니면 안장점인지를 판정해보도록 하겠습니다.

 

예제1>>

 

$f(x, y) = x^2 - y^2$

 

아까 위에서 본 함수죠? 우리는 이 함수가 안장점을 갖는다는 것을 이미 알고 있습니다. 그러면 헤시안 행렬을 이용해서 안장점을 갖는다는 것을 한 번 확인해봅시다. 우선 위 함수를 x에 대해 편미분, y에 대해 편미분하면 다음과 같이 됩니다. 

 

$\frac{\partial f}{\partial x} = 2x$

$\frac{\partial f}{\partial y} = -2y$

 

2x = 0, -2y = 0이 되게 하는 x, y를 구하면, x와 y 모두 0입니다. 따라서 위 함수는 점 (0, 0)에서 임계점을 갖습니다. 그러면 이 점이 안장점인지 확인해보겠습니다. 안장점이므로 헤시안 행렬의 고유값에 양수도 있어야 하고 음수도 있어야 합니다. 헤시안 행렬부터 구해보겠습니다. 

 

$\frac{\partial^2 f}{\partial x^2} = 2$

$\frac{\partial^2 f}{\partial x \partial y } = \frac{\partial^2 f}{\partial y \partial x } = 0$

$\frac{\partial^2 f}{\partial y^2 } = -2$

 

이므로 헤시안 행렬은 다음과 같습니다. 

 

$H(f) = \begin{bmatrix}2 & 0\\ 0 & -2\end{bmatrix}$

 

이 헤시안 행렬의 고유값들을 구하기 위해 $H -\lambda I$의 행렬식이 0이 되게 하는 $\lambda$들을 찾아줍니다. 고유값 구하는 것과 관련해서는 https://bskyvision.com/59를 참고하세요.

 

$|H -\lambda I| = 0$

 

$\begin{vmatrix}2 - \lambda & 0\\ 0 & - 2 - \lambda \end{vmatrix} = 0$

 

$(\lambda-2)(\lambda + 2) = 0$

 

따라서, 고유값은 2와 -2가 됩니다. 하나는 양수고, 하나는 음수죠? 이와 같이 점 (0, 0)은 안장점이라는 것이 확인되었습니다.

 

 

예제2>>

 

$f(x, y) = x^2 + xy + y^2 + 3x - 3y + 4$

 

이번에는 이 함수에 대해서 판정해보겠습니다. 마찬가지로 임계점을 갖는지를 확인하기 위해 x에 대해, y에 대해 각각 편미분하면 다음과 같이 됩니다. 

 

$\frac{\partial f}{\partial x} = 2x + y + 3$

$\frac{\partial f}{\partial y} = x + 2y - 3$

 

이 친구들이 모두 0이 되게 하는 x, y가 임계점이 되므로, 다음과 같은 연립일차방정식을 풀면 임계점을 찾을 수 있습니다. 

 

$2x + y  + 3 =0$

$x + 2y - 3 = 0$

 

이 연립방정식의 해는 x = -3, y =3이므로, 점 (-3, 3)이 임계점입니다. 임계점이 존재하므로 헤시안 행렬을 구해보겠습니다.

 

$\frac{\partial^2 f}{\partial x^2} = 2$

$\frac{\partial^2 f}{\partial x \partial y } = \frac{\partial^2 f}{\partial y \partial x } = 1$

$\frac{\partial^2 f}{\partial y^2 } = 2$

 

이므로 헤시안 행렬은 다음과 같습니다. 

 

$H(f) = \begin{bmatrix}
2 & 1\\ 
1 & 2
\end{bmatrix}$

 

이 행렬의 고유값은 다음과 같이 구할 수 있습니다.

 

$\begin{vmatrix}
2 - \lambda & 1\\ 
1 & 2 - \lambda
\end{vmatrix} = 0$

 

$(2-\lambda)^2 - 1= 0$

 

$\lambda^2 - 4\lambda + 3 = 0$

 

고유값은 1과 3입니다. 헤시안 행렬의 고유값이 모두 양수이므로 점 (-3, 3)은 극소점입니다. 

 

 

예제3>>

 

마지막으로 3변수 함수를 다뤄보도록 하겠습니다. 

 

$f(x, y, z) = x^3 + xyz + y^2 - 3x$

 

먼저 임계점이 존재하는지 확인하기 위해 모든 변수에 대해 편미분합니다. 

 

$\frac{\partial f}{\partial x} = 3x^2 + yz - 3 = 0$

$\frac{\partial f}{\partial y} = xz + 2y = 0$

$\frac{\partial f}{\partial z} = xy = 0$

 

이것을 연립해서 풀어야합니다. 우선 세번째 식에서 x = 0 또는 y = 0이라는 것을 알 수 있습니다. x = 0이라고 가정하면, 위 두 식은 다음과 같이 됩니다. 

 

$yz - 3 = 0$

$2y = 0$

 

y = 0인데, $yz - 3 = 0$에 대입하면 0 - 3 = 0이 되므로 모순이 되어버립니다. x = 0이 될 수 없는 것입니다. 이번에는 y = 0이라고 가정하면, 연립방정식에서 위 두식은 다음과 같이 됩니다. 

 

$3x^2 - 3 = 0$

$xz = 0$

 

첫번째 식에서 x = 1 또는 x =-1이고, 이를 두번째 식에 대입하면 두 경우 모두 z = 0이 나옵니다. 따라서 이 함수는 두 개의 임계점을 갖는 것입니다. 점 (1, 0, 0)과 점 (-1, 0, 0).

 

임계점을 가지니 이 임계점들이 극소점인지, 극대점인지, 안장점인지 판정해보도록 하겠습니다. 역시 헤시안 행렬을 먼저 구해야겠죠? 

 

$\frac{\partial^2 f}{\partial x^2} = 6x$

$\frac{\partial^2 f}{\partial y^2} = 2$

$\frac{\partial^2 f}{\partial z^2} = 0$

$\frac{\partial^2 f}{\partial x \partial y} = \frac{\partial^2 f}{\partial y \partial x} = z$

$\frac{\partial^2 f}{\partial x \partial z} = \frac{\partial^2 f}{\partial z \partial x} = y$

$\frac{\partial^2 f}{\partial y \partial z} = \frac{\partial^2 f}{\partial z \partial y} = x$ 

 

이므로, 헤시안 행렬은 다음과 같습니다. 

 

$H(f) = \begin{bmatrix}
6x & z & y \\ 
z & 2 & x \\ 
y & x & 0
\end{bmatrix}$

 

먼저 점(1, 0, 0)부터 판정해보겠습니다. 점(1, 0, 0)일 때 헤시안 행렬은 다음과 같은 값을 갖습니다. 

 

$\begin{bmatrix}
6 & 0 & 0 \\ 
0 & 2 & 1 \\ 
0 & 1 & 0
\end{bmatrix}$

 

이것의 고유값을 구해줘야겠죠?

 

$\begin{vmatrix}
6 - \lambda & 0 & 0 \\ 
0 & 2 - \lambda& 1 \\ 
0 & 1 & - \lambda
\end{vmatrix} = 0$

 

3x3 행렬의 행렬식은 다음과 같은 방식으로 구합니다. 

 

 

0인 항들을 지워주면 아래와 같이 됩니다.

 

$(6 - \lambda)(2 - \lambda)(-\lambda) - (6-\lambda)(1)(1) = 0$

 

이 방정식을 풀면, 고유값은 6, $1+\sqrt{2}$, $1-\sqrt{2}$가 나옵니다. 양수 고유값과 음수 고유값이 모두 존재하므로, 점(1, 0, 0)은 안장점입니다. 

 

이번에는 점(-1, 0, 0)을 판정해보겠습니다. 이때 헤시안 행렬은 다음과 같은 값을 갖습니다. 

 

$\begin{bmatrix} 
-6 & 0 & 0 \\  
0 & 2 & -1 \\  
0 & -1 & 0 
\end{bmatrix}$

 

이 헤시안 행렬의 고유값은 다음과 같이 구합니다. 

 

$\begin{vmatrix} 
-6 - \lambda & 0 & 0 \\  
0 & 2 - \lambda & -1 \\  
0 & -1 & - \lambda 
\end{vmatrix} = 0$

 

$(-6-\lambda)(2-\lambda)(-\lambda) - (-6-\lambda)(-1)(-1) = 0$

 

이 방정식의 해, 즉 고유값은 -6, $1 + \sqrt{2}$, $1 - \sqrt{2}$입니다. 이번에도 역시 양수 고유값과 음수 고유값이 공존하죠. 따라서 점(-1, 0, 0)도 안장점입니다. 예제3의 함수는 2개의 임계점을 갖는데, 모두 안장점임이 확인되었습니다. 

 

 

이 글과 관련해서는 양의 정부호 행렬에 대해 포스팅한 https://bskyvision.com/205를 함께 읽으시길 추천드립니다. 끝까지 읽으시느라 수고 많으셨습니다! 조금이라도 도움이 되셨다면, 공감과 댓글을 아낌없이 남겨주세요.^^ 2019년 올해도 얼마 남지 않았습니다. 각자의 삶에서 끝까지 화이팅하시길 바라며 글을 마무리하겠습니다. 

 

 

<참고자료>

[1] https://ko.wikipedia.org/wiki/%EA%B7%B9%EA%B0%92, 위키백과, "극값"

[2] https://ko.wikipedia.org/wiki/%EC%9E%84%EA%B3%84%EC%A0%90_(%EC%88%98%ED%95%99), 위키백과, "임계점(수학)"

[3] https://ko.wikipedia.org/wiki/%ED%97%A4%EC%84%B8_%ED%96%89%EB%A0%AC, 위키백과, "헤세 행렬"

[4] https://ko.wikipedia.org/wiki/%EC%95%88%EC%9E%A5%EC%A0%90, 위키백과, "안장점"

[5] http://matrix.skku.ac.kr/2014-Album/Quadratic-form/4.Hessian%20matrix.htm, Hessian matrix