일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dann paper
- Meta Pseudo Labels
- 백준 알고리즘
- 최린컴퓨터구조
- ConMatch
- BYOL
- WGAN
- UnderstandingDeepLearning
- simclrv2
- 딥러닝손실함수
- tent paper
- Pix2Pix
- dcgan
- Pseudo Label
- shrinkmatch paper
- CycleGAN
- mocov3
- Entropy Minimization
- 컴퓨터구조
- CoMatch
- mme paper
- shrinkmatch
- conjugate pseudo label paper
- adamatch paper
- SSL
- cifar100-c
- remixmatch paper
- CGAN
- GAN
- semi supervised learnin 가정
- Today
- Total
Hello Computer Vision
딥러닝에서의 Hessian 기하하적 의미 본문
이번에 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한 곳에 있는지 확인할 수 있을 것이다.
'선형대수' 카테고리의 다른 글
행렬(Matrix)에서 Rank의미 (1) | 2023.04.17 |
---|---|
특이값 분해(Singular Vector Decomposition) 공부해보기 (1) | 2023.04.16 |
평면의 방정식, 법선 벡터 그리고 외적 (0) | 2023.04.06 |
고유값, 고유벡터(eigen value, eigen vector)에 대한 이해 (0) | 2023.01.05 |
벡터의 평행 정리하기 (1) | 2023.01.04 |