손실 함수 (Loss Function)
✔ 지도학습(Supervised Learning) 시 알고리즘이 예측한 값과 실제 정답의 차이를 비교하기 위한 함수
✔ 최적화를 위해 최소화하는 것이 목적인 함수
- 목적 함수 (Objective Function)
- 비용 함수 (Cost Function)
- 에너지 함수 (Energy Function)
✔ 학습 중에 학습이 얼마나 잘 되고 있는지 평가하기 위한 지표
손실함수는 샘플 하나에 대한 손실을 정의하고, 비용함수는 훈련 세트에 있는 모든 샘플에 대한 손실함수의 합을 의미하기도 하는듯
수학적 의미
- : 손실함수
- : 목적 함수를 최소화하는 입력값을 찾음 ( 목적함수: , 입력값: )
- : 학습데이터 입력값, 로 얻어낸 예측값()은 정답()과 비교
- : 학습데이터의 정답
- : 학습 시 사용되는 모든 파라미터 벡터 ()
- : 업데이트된 최적의 파라미터 벡터
손실함수의 종류
평균 절대 오차 (Mean Absolute Error, MAE, L1 Loss)
- : 학습데이터 정답
- : 학습데이터 예측값
- 예측 값과 실제 값 사이의 차이의 절대값을 평균낸 값
- 오차와 비례하여 일정하게 증가하는 특징 = Outlier에 강건함
- 이동거리가 일정하므로 최적값에 수렴하기 비교적 어려움
- 회귀(Regression) 문제에 자주 활용
평균 제곱 오차 (Mean Squared Error, MSE, , L2 Loss)
- 예측 값과 실제 값 사이의 차이을 제곱하여 평균낸 값
- 오차가 커질수록 손실 함수 값이 빠르게 증가하는 특징 = 오차가 커질수록 미분값 역시 커짐 = Outlier에 민감함
- 최적값에 가까워질수록 이동거리가 짧아지므로 수렴하기 용이
- 회귀(Regression) 문제에 자주 활용
평균 제곱근 오차 (Root Mean Squared Error, RMSE)
- MSE에 루트를 씌운 지표
- 값을 제곱해서 생기는 왜곡이 줄어듬
- 오류 값이 실제 값과 유사한 단위로 변환되므로 오차가 보다 직관적임
- 회귀(Regression) 문제에 자주 활용
교차 엔트로피 오차 (Cross-entropy Error, CEE)
- = 데이터 x에 대한 추정된 확률 분포
- = 데이터 x에 대한 정답 확률 분포
P(x) = [1, 0, 0]
Q값: 0, 1, 1
CE = -(log0 * 1 + log1 * 0 + log1 * 0)= Infinity
Q값: 0.8, 0.1, 0.1
CE = -(log0.8 * 1 + log0.1 * 0 + log0.1 * 0) = 0.22
Q값: 1, 0, 0
CE = -(log1 * 1 + log0 * 0 + log0 * 0) = 0
- 분류(classification)문제에서 주로 사용 (Softmax 함수와 함께)
- 분류 문제에서는 MSE보다 더 빨리 수렴
정리
- 손실함수는 머신러닝에서 모델이 나타내는 확률 분포와 데이터가 따르는 실제 확률 분포 사이의 차이를 나타내는 함수
- 0에 가까울수록 모델의 정확도가 높고, 반대로 0에서 멀어질수록 모델의 정확도가 낮다
- 데이터가 연속된 값을 가지는 회귀(regression) 문제에서는 주로 MSE, MAE 등 사용
- 데이터가 이산적인 값을 가지는 분류(classification) 문제에서는 주로 CE 등 사용
loss function 과 cost function
loss function
- loss function 은 하나의 데이터에 대한 실제값과 예측값에 대한 오차
cost function
- 모든 데이터셋에 대한 loss function 오차 평균
참고
Prev: 3. 활성화 함수(Activaion Function)
Next: 6. 최적화와 경사하강법(Optimization)
의문점
Question
- 입력의 sample 데이터가 100개라 하고, loss function이 MSE 라면
1-1. MSE 수식에서 n은 총 데이터 수(100개)인가?
1-2. 혹은 sample 데이터의 정답이 [50, 30] 예측값이 [40, 10] 일 때,
MSE는 로 계산한다면 n=2, 즉 아웃풋 레이어의 노드 수가 될 것인가?
Answer
- 1-1의 해석이 맞는 듯 하다. 기본적으로 딥러닝 학습과정에서 sample 데이터들은 한꺼번에 병렬처리 된다(Batch 연산)
행렬곱으로 보는 순전파
원본 링크
- 결국 Y(예측) 행렬에 대한 오류를 대상으로 오차를 구한다.
- 보통 이럴 때, 굳이 손실함수(loss)와 비용함수(cost)를 나누자면, 손실함수로 SE(제곱 오차), AE(절대 오차) 비용함수로 MSE, MAE 를 사용함
- 따라서 전체 데이터(Full-batch) 또는 **부분 데이터(mini-batch)**를 한 번의 학습(1 epoch)에 사용한다.
참고