손실함수
본문반 학생 다섯 명의 하루 운동 시간이 3, 4, 5, 6시간이고 한 명은 실수로 60시간이라고 입력되었다. 이 자료로 '대표값'을 하나 예측한다면 얼마로 해야 할까? 평균을 쓰면 15.6시간이 되어 아무도 대표하지 못한다. 예측이 얼마나 틀렸는지를 재는 기준, 곧 손실함수를 어떻게 정하느냐에 따라 답이 달라진다.
4.3.1손실함수
인공지능의 예측이 실제 값과 얼마나 다른지를 하나의 수로 나타내는 함수를 손실함수라 한다. 학습은 손실함수의 값을 가장 작게 하는 매개변수를 찾는 일이다. 어떤 손실함수를 고르느냐가 곧 무엇을 잘 맞히려는지를 정한다. 가장 흔히 쓰는 두 가지는 오차를 제곱해 더하는 제곱 손실과, 오차의 절댓값을 더하는 절댓값 손실이다.
자료 \(x_1, \ldots, x_n\)을 값 하나 \(c\)로 예측할 때, 제곱 손실 \(\sum (x_i - c)^2\)은 \(c\)가 평균일 때 최소이고, 절댓값 손실 \(\sum |x_i - c|\)는 \(c\)가 중앙값일 때 최소이다.
제곱 손실은 \(c\)의 이차함수 \(nc^2 - 2c\sum x_i + \sum x_i^2\)이므로 꼭짓점 \(c = \dfrac{\sum x_i}{n}\), 곧 평균에서 최소이다. 절댓값 손실은 꺾은선 모양인데, \(c\)를 중앙값보다 조금 오른쪽으로 옮기면 왼쪽의 자료가 더 많아 손실이 늘어난다. 그래서 왼쪽과 오른쪽의 자료 수가 같아지는 중앙값에서 최소가 된다.1
4.3.2이상치에 대한 민감도
그림 1에서 다섯 번째 값을 7에서 20으로 늘려 보자. 제곱 손실의 최소점(평균)은 5에서 7.6으로 크게 움직이지만, 절댓값 손실의 최소점(중앙값)은 5 그대로이다. 제곱 손실은 큰 오차를 제곱으로 부풀리므로, 멀리 떨어진 자료 하나가 예측을 자기 쪽으로 강하게 끌어당긴다. 그래서 잘못 입력된 자료가 섞여 있을 수 있을 때는 절댓값 손실이 더 안정적이다. 반면 큰 오차를 특히 피해야 하는 문제에서는 제곱 손실이 알맞다.
예측값이 하나가 아니라 추세선 \(y = ax + b\)처럼 기울기와 절편 두 수로 정해지면, 제곱 손실은 \(a\)와 \(b\) 두 수의 함수가 된다. \(a\)를 가로, \(b\)를 세로로 놓고 손실을 높이로 세우면 바닥이 하나뿐인 그릇 모양의 곡면이 생기고, 가장 좋은 추세선은 그 그릇의 바닥에 있다. 매개변수가 많아지면 이런 곡면을 그릴 수는 없지만 바닥을 찾는다는 생각은 같으며, 다음 절의 경사하강법이 그 바닥을 찾아 내려가는 방법이다.
4.3.3예제 풀이
자료 3, 4, 5, 6, 60에 대하여 제곱 손실과 절댓값 손실을 최소로 하는 예측값을 각각 구하고, 그때의 손실을 계산하여라.
평균은 \(\dfrac{3 + 4 + 5 + 6 + 60}{5} = 15.6\)이다. 제곱 손실은 \(12.6^2 + 11.6^2 + 10.6^2 + 9.6^2 + 44.4^2 \approx 158.8 + 134.6 + 112.4 + 92.2 + 1971.4 = 2469.2\)이다.
중앙값은 5이다. 절댓값 손실은 \(2 + 1 + 0 + 1 + 55 = 59\)이다. 평균 15.6은 다섯 명 가운데 누구와도 가깝지 않지만, 중앙값 5는 잘못 입력된 60을 빼면 나머지 넷의 한가운데이다. 다만 60이 실수가 아니라 정말 중요한 자료라면 그것을 무시하는 중앙값이 오히려 위험할 수 있다. 손실함수는 문제의 성격을 보고 골라야 한다.
아래 탐구 카드에서 틀린 정도를 함수로 나타내 보고, 잘못된 자료 하나가 두 손실함수를 얼마나 흔드는지 비교해 보자.
- 분류 문제에서는 정답일 확률의 로그를 쓰는 교차 엔트로피 손실을 많이 쓴다. 정답에 낮은 확률을 줄수록 손실이 매우 커지도록 만든 함수이다.
손실함수는 예측이 틀린 정도를 수로 나타내며, 학습은 손실을 최소로 하는 매개변수를 찾는 일이다. 값 하나로 예측할 때 제곱 손실은 평균에서, 절댓값 손실은 중앙값에서 최소이고, 제곱 손실이 이상치에 훨씬 민감하다. 그래서 처음 질문처럼 잘못된 자료가 섞여 있으면 절댓값 손실로 고른 중앙값이 대표값으로 더 안정적이다.