자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 축 방향의 휨만 재고 가장 휜 방향과 조건수를 판단함 | 1, 2 | 헤시안의 엇갈린 칸이 0이 아니면 고유 방향은 축과 다르다. 조건수는 가장 큰 고윳값 ÷ 가장 작은 고윳값 |
| 대각 칸이 같으면 둥근 그릇이라고 봄 | 2 | 둥글려면 모든 방향의 휨이 같아야 한다. 엇갈린 칸까지 0이어야 한다 |
| 신경망의 헤시안도 선형 회귀처럼 어디서나 같다고 봄 | 3 | 2차 함수가 아니면 헤시안은 자리마다 다르다. 로지스틱 회귀만 해도 확신이 커지면 휨이 줄고 길쭉해진다 |
| 뉴턴법은 어디서 출발해도 몇 스텝에 닿는다고 봄 | 4, 5 | 거리가 스텝마다 제곱이 되는 것은 2차 근사가 맞을 만큼 가까울 때뿐이다. 멀리서는 크게 빗나가므로 스텝을 줄여 보는 장치를 함께 둔다 |
| 입력의 단위를 바꾸면 뉴턴법도 전처리가 필요하다고 봄 | 6 | 뉴턴 스텝은 눈금을 바꾸거나 축을 돌려도 같은 자리로 간다. 헤시안이 그 일을 대신한다 |
| 그래디언트가 0인 곳이면 극소점이라고 봄 | 7, 8 | 극소점, 극대점, 안장점을 가르려면 헤시안의 고윳값 부호를 봐야 한다 |
| 뉴턴 스텝은 늘 내리막이라고 봄 | 8 | 휨이 음수인 방향에서 뉴턴 스텝은 오르막으로 간다. 안장점은 뉴턴을 끌어당긴다 |
| 고윳값의 절댓값으로 나누면 다 해결된다고 봄 | 9 | 방향은 내리막이 되지만, 휨이 0 근처인 곳에서는 스텝이 터무니없이 커진다. 나누는 수의 아래를 받치거나 스텝 길이를 묶는다 |
| 방향마다 반반이면 극소일 확률이 (1/2)d 라고 봄 | 10, 11 | 고윳값들은 서로 밀어내서, 모두 양수일 확률은 그보다 훨씬 빨리, 차원의 제곱을 따라 기하급수적으로 준다 |
| 학습이 오래 머무는 곳은 손실이 높은 극소라고 봄 | 12 | 손실이 높은 임계점은 대부분 지수가 큰 안장점이다. 그 둘레의 평평한 고원이 1차 방법을 붙잡는다 |
| 켤레 그래디언트법은 파라미터 수만큼 곱해야 쓸 만하다고 봄 | 14 | 스텝 수는 고윳값이 몇 가지이고 얼마나 퍼졌는지가 정한다 |
| 헤시안–벡터 곱을 그래디언트 차분으로 구하면서 ε는 작을수록 좋다고 봄 | 15 | 너무 작으면 반올림 오차가 커진다. 두 번 미분으로 구하면 ε를 고를 일이 없다 |
요약
이 장에서 한 일을 정리해 보자. 그래디언트는 손실이 어느 쪽으로 얼마나 빨리 바뀌는지를, 헤시안은 손실이 방향마다 얼마나 휘었는지를 알려 준다. 헤시안은 2차 편미분을 모은 대칭인 표이고 방향 u의 휨은 uᵀHu로 계산되므로, 방향은 끝없이 많아도 표 하나면 모든 방향의 휨을 안다. 가장 크게 휜 방향과 가장 작게 휜 방향은 헤시안의 고유 방향이고, 그 휨은 고윳값이며, 조건수는 두 고윳값의 비다. 축 방향의 휨만 재면 이것을 놓친다.
뉴턴 스텝은 지금 자리의 그래디언트와 헤시안으로 2차 근사를 세우고 그 최솟점으로 옮기는 스텝 −H⁻¹∇f다. 고유 방향마다 학습률을 1/λ로 따로 준 경사하강과 같아서, 2차 함수라면 조건수가 얼마든 한 스텝에 최솟점에 닿고, 입력의 단위를 바꾸거나 축을 돌려도 같은 자리로 간다. 2차가 아닌 함수에서도 극소점 가까이에서는 거리가 스텝마다 제곱이 되어 맞는 자릿수가 두 배씩 는다. 1669년 뉴턴의 손 계산에서 랩슨을 거쳐 1740년 심프슨이 도함수로 적은 방법이고, 심프슨은 최적화에도 쓸 수 있다고 적었다고 한다. 다만 멀리서 출발하면 2차 근사의 최솟점이 엉뚱한 곳에 있어 크게 빗나갈 수 있다.
뉴턴 스텝이 찾는 것은 2차 근사의 그래디언트가 0인 곳이라, 휨이 음수인 방향에서는 오르막으로 가서 안장점에 끌려간다. 파라미터가 많은 지형에서는 그 안장점이 흔하다. 그래디언트가 0인 점이 극소이려면 모든 방향이 위로 휘어야 하는데, 그 확률은 차원의 제곱을 따라 기하급수적으로 줄고, 손실이 높은 임계점일수록 음수 고윳값의 비율(지수)이 크다. 도팽과 동료들은 안장점에 끌리는 성질 때문에 뉴턴법을 안장점을 찾는 도구로 쓰고, 고윳값의 절댓값으로 나누는 안장 없는 뉴턴을 냈다.
마지막 걸림돌은 크기다. 파라미터가 1억 개면 헤시안은 40 PB이고 뉴턴 스텝 한 번에 곱셈이 10²³번을 넘는다. 헤시안–벡터 곱 Hv는 그래디언트와 v의 내적을 한 번 더 미분해서, 표 없이 그래디언트 계산의 몇 배 비용으로 얻는다. 켤레 그래디언트법은 이 곱만으로 뉴턴 스텝을 어림하고, 스텝 수는 고윳값이 몇 가지이고 얼마나 퍼졌는지로 정해진다.
막힌 곳
헤시안–벡터 곱으로 휨을 재 보니 출발점 근처의 작은 신경망에서도 고윳값의 절반가량이 음수였다. 그렇다면 학습이 진행되면서 가장 크게 휜 방향의 휨은 어떻게 바뀔까? 경사하강의 학습률은 가장 큰 곡률 L로 2/L보다 작아야 한다고 했는데, L이 학습 도중에 바뀐다면 처음에 고른 학습률은 언제까지 안전할까? 그리고 손실이 같은 두 극소점 가운데 하나는 넓고 평평하고 다른 하나는 좁고 가파르다면, 둘은 똑같이 좋은 극소점일까?
헤시안 표를 쓰지 않는다면, 그래디언트만 보면서 휨의 효과를 얼마나 흉내 낼 수 있을까? 지난 스텝들의 그래디언트에는 휨에 관한 정보가 얼마나 남아 있을까?