Hello Computer Vision

딥러닝에서의 Hessian 기하하적 의미 본문

선형대수

딥러닝에서의 Hessian 기하하적 의미

지웅쓰 2024. 4. 28. 17:40

이번에 Hessian matrix를 다루고 있는데 머릿속으로만 기억하면 까먹을 거 같아서 기록한다. 개인적인 기록이니 틀릴 수 있습니다.

 

딥러닝에서 학습할 때 gradient descent 방식으로 update를 하며 이를 수행하기 위해 loss값에 대해 미분을 수행하고, 기울기를 활용해 update한다. 그렇다면 hessian 은 무엇인가?

 

hessian 은 함수에 대해 두번 미분, 즉 이계도함수이다. 원래 함수에 대해서 한번 미분을 한다는 것은 해당 지점에서 기울기를 구할 수 있으며 이에 음수를 붙여 update하는 것이 보통이다. 그리고 이 기울기가 양수라는 것은 해당 x값이 증가할 때, y값도 증가하는 것이다. 그렇다면 도함수에 대해 한번 더 미분한 그래프는 어떤 것을 의미할까?

 

이계도함수도 똑같이 기울기가 양수라면 해당 x의 gradient 값이 증가할 때, y값도 증가, 즉 gradient의 기울기도 증가하는 것다. 본 함수를 3차 함수라고 한다면 이계도함수가 0이 되는 점은 본 함수의 아래로 볼록하는 함수의 시작지점이다. 

 

그렇다면 이를 딥러닝으로 한번 확장해서 모델과 이에 해당하는 loss에 대해 hessian matrix를 근사했다고 해보자. 여기서 hessian matrix 의 가장 큰 eigenvector는 무엇을 의미할까? eigenvalue를 양수라고 했을 때, 여기서 vector가 가르키는 방향은 gradient값이 감소할 때 gradient의 기울기도 감소하고, gradient 가 증가할 때 gradient의 기울기도 증가하는, 즉, loss landscape에서의 가파른 방향을 가르킨다고 볼 수 있다. 그렇다면 가장 큰 eigenvector는 해당 지점에서 가장 가파른 부분이라고 할 수 있으며, 우리는 해당 방향을 찾아 gradient에 음수를 붙여 더 빠르게 수렴하는 곳을 찾을 수 있다. 

 

그렇다면 이 hessian eigenvector를 활용해서 추가로 뭘 할 수 있을까?

해당 figure는 "How does Batch normalization help optimization?" 논문에서의 figure이며 batch norm이 조금 더 flat minima를 찾아주는 근거가 되는 그림이다. 결국 가장 낮은 loss는 batch norm을 사용하나, 사용하지 않나 비슷하게 찾을 수 있지만 다른 구간으로 찾는 것인데, 만약 모델이 수렴하는 곳이 sharp minima라면, 해당 부분에서 가파른 부분으로 parameter를 이동시켰을 때 loss가 가파르게 증가할 것이다. 만약 flat minima에 파라미터가 있다면 loss는 별 다르지 않을 것이다. 여기서 hessian 의 top eigenvector를 근사해 찾은 후 파라미터를 이동해 loss를 찍어본다면 현재 모델의 파라미터가 flat한 곳에 있는지 sharp한 곳에 있는지 확인할 수 있을 것이다.