수학/선형대수학

[인공지능 수학] Hessian Matrix

austag 2023. 8. 23. 23:19

 

 

학교에서 인공지능 수학 이수제 강의를 들었는데 Hessian Matrix가 눈에 띄었습니다. 오 저게 뭐지

처음에 설명들을 때는 이해하지 못했지만 행렬이라 재밌을 것 같아서 공부하고 싶어서 찾아보게 되었습니다.

공부하면서 되게 신기했습니다.

이번 글은 인공지능과 관련지어 Hessain Matrix를 알아보고 나중에 Jocobian Matrix도 공부해보려 합니다.


1. 인공지능과 극값

 

먼저 평균제곱오차와 경사하강법에 대해서 이야기해보겠습니다.

이전에 글을 올렸었는데 그 글을 참고해도 좋을 것 같습니다.

 

선형회귀를 먼저 꺼내보겠습니다.

선형회귀 (liner regression)는 변수 간 선형관계를 모델링하는 것이고 값을 예측할 수 있습니다.

변수가 1개면 단순회귀, 2개 이상이면 다항회귀라고 하죠.

인공지능의 신경망이 학습하면서 최적의 파라미터값을 찾아가는 과정을 최적화(optimization)이라고 하는데 오차를 줄이기 위한 기준인 손실함수(loss function)가 필요합니다. 회귀에서 가장 많이 쓰이는 손실함수는 평균제곱오차이고 고차원 함수에서 최소값을 찾기 위한 방법 중 하나가 경사하강법입니다.

 

$$ y = a_0 + a_1x + a_2x^2 + ... + a_nx^n $$

예측값과 실제값의 오차를 줄이는 것이 목표인 회귀는 평균제곱오차를 줄이는 것이라고 할 수 있습니다.

예측값과 실제값의 오차는 양의 오차와 음의 오차가 있으므로 그 크기만을 고려하기 위해 제곱을 하여 다 더한 것의 평균을 나타낸 손실함수를 평균 제곱 오차(Mean Squared Error, MSE)라고 합니다. 

$$ MSE = \frac{1}{n}\sum{(y_i - \hat{y_i})^2} $$

( $y_i$: $i$번째 학습 데이터 정답, $\hat{y_i}$: $i$번째 학습데이터 예측값 )

이 MSE를 최소화하기 위해 경사하강법을 사용하는 것이죠.

경사하강법(Gradient descent)는 함수 최적화 방법 중 하나로 함수의 기울기를 구하고 경사의 반대방향으로 계속 이동시켜 극값에 이르도록 하는 방법입니다. 경사하강법의 수식은 다음과 같습니다.

$$ x_{i+1} = x_i -\alpha \frac{df}{dx}(x_i) $$

함수에서 현재 지점의 기울기 값을 구하고  $\frac{df}{dx}(x_i)$, 얼마나 이동할지 step size $\alpha$ 를 정해 반대로 움직여(-), 다음 지점을 찾아갑니다. ($x_{i+1}$)

 

더 자세한 설명 : https://dotiromoook.tistory.com/25

 

그럼 잠깐 극값에 대해 알아보겠습니다.

최댓점(global maximum point) : 정의역의 모든 점의 함숫값 이상의 값을 갖는 점
최솟점(global minimum point) : 정의역의 모든 점의 함숫값 이하의 값을 갖는 점
극대점(local maximum point) : 주위의 모든 점의 함숫값 이상의 값을 갖는 점
극소점(local minimum point) : 주위의 모든 저의 함숫값 이하의 값을 갖는 점
안장점(saddle point) : 다변수 함수에서 보는 방향에 따라 극대점, 극소점으로 보이는 점
임계점(critical point) : 함수의 도함수가 0이 되는 점

경사하강법은 이렇게 오차의 변화에 따라 적절한 학습률을 설정해 미분 값이 0인 지점을 구하는 것입니다.

 

2. Hessian 행렬

헤세 행렬은 함수 $f$의 이계편도함수를 행렬로 표현한 것입니다.

$f$의 3계편도함수가 연속이면 임계점인 점 $p$에서 $f$의 혼합 2계편도함수는 순서에 영향받지 않아 헤세 행렬은 대칭행렬이며 모든 고윳값은 실수입니다.

헤세 행렬로 극값을 판정하는 방법은 다음과 같습니다.

1) 모든 고윳값 > 0 : 극소점
2) 모든 고윳값 < 0 : 극대점
3) 고윳값이 양수, 음수 동시에 존재 : 안장점

 

3. 극값 판정하기

예제를 풀어보며 극값을 판정해보겠습니다.

 

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

 

(1) 임계점 찾기

편미분하여 그 값들이 0이 되는 $x$, $y$ 값을 찾습니다. 

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

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

편미분 값이 0이 되어야 하므로 $x=0, y=0$ 입니다. 따라서 임계점은 (0, 0)입니다.

 

(2) 헤세 행렬 구하기

$$\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{equation} \begin{bmatrix} 2 & 0 \\ 0 & 2 \\ \end{bmatrix}\end{equation} $$

입니다.

 

(3) 고윳값 찾기

$$det(H-\lambda I) = \begin{equation} \begin{vmatrix} 2-\lambda & 0 \\ 0 & -2-\lambda \\ \end{vmatrix} \end{equation} = (2 - \lambda)(-2-\lambda) = 0 $$

$ \lambda_1 = 2 > 0 , \lambda_2 = -2 < 0 $ 이므로 안장점입니다. 

 

 

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

(1)

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

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

$ x=-3, y=3 $

∴ 임계점 : (-3, 3)

 

(2)

$$\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{equation} \begin{bmatrix} 2 & 1 \\ 1 & 2 \\ \end{bmatrix}\end{equation} $$

 

(3)

$$det(H-\lambda I) = \begin{equation} \begin{vmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \\ \end{vmatrix} \end{equation} = (2 - \lambda)^2 -1 = \lambda^2 -4\lambda + 3 = (\lambda - 3)(\lambda - 1) = 0 $$

∴ $\lambda_1 = 3 > 0 , \lambda_2 = 1 > 0$ 이므로 극소점


오늘은 이렇게 Hessian 행렬에 대해서 알아보았습니다. 이것으로 극값을 판정할 수 있다는게 신기했고 공부하면서 재밌었습니다.

 

참고: 프리드버그 선형대수학,  본인 블로그 게시물, https://bskyvision.com/entry/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99-%ED%97%A4%EC%8B%9C%EC%95%88Hessian-%ED%96%89%EB%A0%AC%EA%B3%BC-%EA%B7%B9%EC%86%8C%EC%A0%90-%EA%B7%B9%EB%8C%80%EC%A0%90-%EC%95%88%EC%9E%A5%EC%A0%90