자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 1차 근사의 오차가 거리에 비례한다고 봄 | 1, 10 | 1차 근사가 버린 첫 항은 스텝의 제곱에 비례한다. 스텝을 10배 늘리면 오차는 약 100배 |
| 1차 근사가 변화 0을 예측하면 실제로도 변하지 않는다고 봄 | 2 | 1차 항이 0이면 2차 항이 남는다. 그래디언트와 수직인 스텝에서도 곡률만큼 변한다 |
| 계산기의 「정확한 식」이 근사보다 늘 정확하다고 봄 | 3, 14 | float32에서 1 + x를 만들면 작은 x가 반올림으로 사라진다. x가 아주 작을 때는 1차 근사(log1p)가 더 정확하다 |
| 72의 법칙의 72를 암산하기 편한 숫자로만 봄 | 4 | 1차 근사는 69.3을 주고, 2차 항이 8% 근처에서 72로 고친다 |
| 2차 근사의 꼭짓점이 늘 손실의 바닥이라고 봄 | 5 | 곡률이 음수이면 꼭짓점은 꼭대기다. 뉴턴 스텝은 그래디언트 0인 곳으로 갈 뿐이다 |
| 크기가 작은 가중치가 지워도 덜 아프다고 봄 | 6 | 손실의 바닥에서 지울 때 손실 증가는 ½Hᵢᵢwᵢ². 곡률과 함께 본다 |
| 2차까지 맞았으면 먼 곳도 2차면 된다고 봄 | 7 | 전개점에서 멀면 항이 많이 필요하다. 수렴한다는 것과 몇 항이면 충분하다는 것은 다른 물음 |
| 테일러 급수가 수렴하면 원래 함수와 같다고 봄 | 8 | e^(−1/x²)은 급수가 0으로 수렴하지만 함수는 0이 아니다. 나머지가 0으로 가는지를 본다 |
| 라이브러리의 문턱 값을 근거 없는 숫자로 봄 | 9 | softplus의 문턱 20은 버린 항 e^(−x)가 float32의 간격 아래로 숨는 자리에 여유를 둔 값이다 |
| 근사를 믿는 반경이 방향과 상관없이 같다고 봄 | 11 | 나머지의 상한은 걸어갈 구간에서 가장 휜 곳으로 잡는다. ln(1 + x)는 왼쪽 반경이 더 좁다 |
| 2차 근사가 고른 스텝이 가장 좋은 스텝이라고 봄 | 12 | 2차 근사도 곡률이 스텝 내내 같다고 볼 때만 맞다. 곡률이 바뀌면 비관하거나 낙관한다 |
| 차분의 h는 작을수록 좋다고 봄 | 14 | 테일러 나머지는 h와 함께 줄지만 반올림 오차는 1/h로 커진다. 둘이 비슷한 h가 가장 좋다 |
| 헤시안을 한 줄씩 구하면 2차 방법도 싸다고 봄 | 15 | 한 줄에 그래디언트 계산 몇 번 값이 들고 줄이 d개다. 대각만 담으면 파라미터끼리 얽힌 곡률을 놓친다 |
요약
이 장에서 한 일을 정리해 보자. 옵티마이저가 쥔 것은 한 점에서 잰 숫자들이다. 값만 쓰는 0차 근사는 어디로 가도 같다고 말하고, 그래디언트를 넣은 1차 근사 f(a + h) ≈ f(a) + f′(a)h는 직선으로 떨어진 곳을 내다본다. 1차 근사의 오차는 스텝의 제곱에 비례해서, 스텝을 반으로 줄이면 4분의 1이 된다. 경사하강은 1차 근사가 가장 많이 줄어든다고 말하는 그래디언트 반대쪽으로 걷는 방법이다. 1624년 브리그스의 로그표를 직선으로 메우던 사람들도 같은 어림을 썼다.
1차 근사는 어디서 멈출지 모르고, 손실의 바닥에서는 아무것도 보지 못한다. 곡률(2차 미분)을 넣은 2차 근사는 포물선이라 꼭짓점이 있고, 그 꼭짓점으로 뛰기를 되풀이하는 것이 뉴턴법인데, 꼭짓점이 바닥인 것은 곡률이 양수일 때뿐이다. 파라미터가 여럿이면 곡률은 d × d 헤시안이 된다. 페르마는 1차 항이 사라지는 자리를 찾았고, 매클로린은 그다음 항으로 꼭대기와 바닥을 가렸다.
차수를 끝없이 올린 테일러 전개는 1715년 테일러가 보간 공식에서 표의 칸을 좁혀 얻었다. 그러나 ln(1 + x)의 급수는 전개점에서 1보다 먼 곳에서는 차수를 올릴수록 더 틀리고, 코시의 함수 e^(−1/x²)은 급수가 수렴하는데도 참값과 다르다. 근사를 얼마나 믿을지는 나머지항이 정한다. 라그랑주 꼴 나머지로 걸어갈 구간에서 가장 휜 곳을 알면, 허용 오차를 먼저 정하고 근사를 믿을 반경을 계산할 수 있다. 학습률은 1차 근사를 믿는 반경이고, 실제 감소와 예측 감소의 비 ρ로 스텝을 고치는 것이 신뢰 영역 방법의 생각이다.
옵티마이저는 이 사다리의 어느 계단을 쓰느냐로 나뉜다. 0차 방법은 값만 쓰고 손실 계산 횟수로 값을 치르며, 1차 방법은 역전파로 싸게 얻은 그래디언트를 쓰고, 2차 방법은 파라미터 수의 제곱만큼의 헤시안을 쓴다. 파라미터 1억 개짜리 모델의 헤시안은 40 PB라서, 큰 신경망은 1차 방법을 쓰고 모멘텀이나 Adam처럼 곡률을 흉내 내는 2차의 근사로 한 계단 위를 넘본다.
막힌 곳
나머지항으로 반경을 계산하려면 걸어갈 구간에서 곡률이 가장 큰 값을 알아야 했는데, ln(1 + x)는 곡률의 식을 알아서 곡률의 최댓값을 바로 구했다. 그러나 신경망의 손실은 파라미터가 수백만 개이고, 걸어갈 구간의 곡률을 미리 다 재 볼 수는 없다. 손실 함수 하나를 받았을 때, 어느 두 점을 잡아도 그래디언트가 그 거리의 몇 배 넘게 바뀌지 않는다고 장담할 수 있는 숫자가 있을까? 있다면 그 숫자는 신경망의 무엇이 정할까?
그리고 문제 12에서 2차 근사는 곡률이 줄어드는 손실을 먼 곳에서 비관했다. 곡률이 스텝 내내 크게 바뀌지 않는 손실, 바닥이 하나뿐인 손실이라면 근사를 훨씬 멀리까지 믿을 수 있지 않을까? 어떤 모양의 손실이라야 한 점에서 잰 그래디언트만으로도 바닥까지 안심하고 걸어갈 수 있을까?