자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 평균이 언제나 가장 공평한 대푯값이라고 봄 | 1 | 거리 합을 가장 작게 하는 곳은 중앙값, 제곱 합을 가장 작게 하는 곳은 평균이다. 손실을 무엇으로 정했느냐가 답을 정한다 |
| 「가장 잘 맞는 직선」이 잣대와 상관없이 하나라고 봄 | 2 | 절댓값 합, 제곱 평균, 가장 큰 빗나감은 1등이 서로 다르다. 손실을 먼저 정해야 1등이 정해진다 |
| 데이터 하나의 오타는 결과에 별 영향이 없다고 봄 | 3 | 평균 제곱 오차는 크게 빗나간 점 하나에 직선 전체가 끌려간다. 절댓값이나 후버 손실은 덜 끌려간다 |
| 등고선이 촘촘한 곳과 성긴 곳을 같은 경사로 읽음 | 4 | 등고선 간격이 좁을수록 가파르다. 한 자리의 높이는 하나라서 손실이 다른 등고선은 엇갈리지 않는다 |
| 파라미터 둘을 함께 바꾸면 손실이 더 많이 는다고 봄 | 5 | 무게중심을 지나며 기울기를 바꾸면 손실이 적게 는다. 골짜기는 그 방향으로 비스듬히 눕는다 |
| 지형의 뾰족한 정도가 모델 자체의 성질이라고 봄 | 6 | 같은 함수도 파라미터를 고르는 방식에 따라 뾰족해 보이기도 밋밋해 보이기도 한다. 크기에 맞춰 잘라야 견줄 수 있다 |
| 파라미터를 하나씩 가장 좋은 값으로 맞추면 금방 끝난다고 봄 | 7 | 파라미터가 엮여 비스듬한 골짜기면 하나씩 맞추기는 계단처럼 지그재그로 오래 걸린다 |
| 지도에서 가장 많이 줄어드는 방향은 큰 칸 하나만 줄이는 쪽이라고 봄 | 8 | 공은 등고선을 직각으로 가로지르는 쪽으로 간다. 등고선 방향으로는 1차로 손실이 바뀌지 않는다 |
| 디뎌 보기로 공을 굴리면 큰 모델도 학습할 수 있다고 봄 | 9 | 디뎌 보기는 스텝마다 손실을 파라미터 수의 두 배만큼 계산한다. 계산 과정을 거꾸로 되짚는 방법이 필요하다 |
| 공이 멈춘 곳이 가장 낮은 곳이라고 봄 | 10, 11 | 공은 극소에서도 멈춘다. 어느 웅덩이에서 멈출지는 출발점이 정하고, 깊은 웅덩이로 공이 더 많이 모이는 것도 아니다 |
| 낮은 차원에서 본 극소는 높은 차원에서도 극소라고 봄 | 11, 12 | 차원을 하나 더 열면 그 방향으로 내리막이 있을 수 있다. 장벽은 넘지 않고 돌아갈 수 있다 |
요약
이 장에서 한 일을 정리해 보자. 모델이 데이터를 빗나간 정도를 숫자 하나로 모으는 규칙이 손실 함수다. 1757년 보스코비치는 지구의 편평도를 구하려고 다섯 곳의 자오선 측량에 직선을 맞추며 빗나감 절댓값의 합을 기준으로 세웠고, 1805년 르장드르는 빗나감 제곱의 합을 가장 작게 하자고 했다. 같은 다섯 점에서도 어떤 손실을 고르느냐에 따라 「가장 잘 맞는 직선」이 달라지는데, 제곱은 멀리 빗나간 점에 끌려가고 절댓값은 덜 끌려가기 때문이다.
손실은 파라미터의 함수이고, 파라미터가 놓이는 공간의 자리마다 손실을 높이로 세운 것이 손실 지형이다. 보스코비치의 다섯 점에 직선을 맞추는 지형은 손실의 바닥이 (723.44, 56737.43) 한 곳인 그릇이고, 등고선은 다섯 점의 무게중심을 지나는 직선들의 방향으로 비스듬히 누운 길쭉한 타원이다. 신경망의 지형은 차원이 너무 많아 곧은 선이나 두 방향이 만드는 평면 같은 단면으로만 그리고, 같은 함수가 좌표에 따라 다르게 보이지 않도록 방향의 크기를 맞춰 자른다.
손실이 가장 작은 파라미터를 찾는 일이 최적화다. 지형이 반듯한 그릇이면 정규방정식처럼 식으로 풀 수 있지만, 신경망에서는 그럴 수 없고 지도를 다 그릴 수도 없다. 대신 지형 위에 공을 놓고, 발밑을 디뎌 손실의 변화율을 잰 뒤 그 반대쪽으로 조금씩 굴린다. 보스코비치 지형에서 공은 본문에서 공을 놓은 다섯 출발점 모두 231~252스텝이면 손실의 바닥에서 1투아즈 안에 든다. 손실은 처음 몇 스텝에 거의 다 줄지만 자리는 길쭉한 골짜기를 따라 한참 더 움직이는데, 학습 곡선은 이 공의 높이를 기록한 그래프다.
공은 발밑만 보므로 둘레보다 낮은 극소에서도 멈춘다. 그네 지형에는 극소가 넷 있고, 격자 330곳에서 굴린 공 가운데 최소에 닿은 것은 35.5%였다. 1986년 러멜하트와 동료들은 이 걱정을 적으면서도 연결을 더해 차원이 늘면 장벽을 돌아가는 길이 생긴다고 했다. 고리 지형에서 한 줄로 묶었을 때의 극소가 2차원에서는 말안장 같은 자리였던 것이 그 예다. 리하오와 동료들은 지름길 연결이 깊은 신경망의 지형을 고르게 만든다는 것을 그림으로 보였다.
막힌 곳
이 장의 공은 파라미터마다 양쪽으로 디뎌 보고서야 발밑이 어느 쪽으로 기울었는지 알았다. 파라미터가 1억 개면 스텝 하나에 손실을 2억 번 계산해야 하는데, 디뎌 보지 않고 「기운 쪽」을 바로 알 수는 없을까? 파라미터가 수백만 개일 때 「가장 가파르게 오르는 쪽」은 숫자 수백만 개를 따로따로 구한 것일까, 아니면 그 숫자들을 묶었을 때 비로소 생기는 뜻이 있을까?
그리고 공의 스텝에 곱한 0.2라는 수는 그림을 위해 골랐을 뿐이다. 이 수를 크게 하면 공이 더 빨리 내려갈까, 아니면 어느 크기를 넘으면 바닥을 지나쳐 튕겨 나갈까? 길쭉한 골짜기에서 공은 왜 골짜기 줄기를 따라 한참 기어갔고, 그 느림은 피할 수 있을까?