🖇 손실 함수란?
🖇 Keras의 손실 함수
🖇 평균절대오차 (MAE)
🖇 평균제곱오차 (MSE)
🖇 MAE vs MSE
🖇 교차 엔트로피 오차 (CEE)
🖇 손실 함수 값 계산
"손실 함수(Loss Function)"는 딥러닝에서 매우 중요한 개념이다. 문맥에 따라 목적 함수(Objective Function) 등으로 혼용되는 경우도 많다. 어떤 경우에는 손실 함수가 목적 함수 그 자체로 사용되고, 어떤 경우에는 손실 함수에 정규화 항까지 포함된 전체를 목적 함수로 간주하기도 한다. 이 글에서는 이해를 위해 손실 함수로 통일하여 사용하겠다.
이 글에서는 손실 함수의 이론적 개념과 실제 코드에서 자주 사용되는 함수명과 적용 맥락의 순서로 정리해 보았다.
모델이 학습을 잘하고 있는지를 판단하려면 그 과정에 대한 지표가 필요하다. 그 역할을 해주는 것이 손실 함수(Loss Function)다.
손실 함수는 모델이 예측한 값과 실제 정답 사이의 오차를 수치로 나타내고, 이 값이 작을수록 예측이 정확하다는 뜻이다. 학습은 이 손실 함수를 최소화하는 방향으로 진행된다. 딥러닝에서 손실 함수는 최적화 이론에 따라 미분 가능한 함수여야 하며 그 결과값을 기반으로 파라미터를 업데이트한다.
이처럼 손실함수는 학습이 진행되면서 해당 과정이 얼마나 잘 되고 있는지 나타내는 지표로서 모델이 훈련되는 동안 최소화될 값이다. 주어진 문제에 대한 성공 지표가 되는 것이다.
Keras에서 자주 사용하는 손실 함수 세 가지와 그 특징이다.
sparse_categorical_crossentropy[2]인 경우categorical_crossentropy[0, 0, 1, 0]) 형태로 제공될 때 사용binary_crossentropy[1] 혹은 [0])MAE(Mean Absolute Error)는 예측값과 실제값의 차이의 절댓값을 평균내는 방식으로 계산된다.
좋은 예측을 했을 때 손실은 작고, 틀린 정도에 비례해서 손실이 선형적으로 커진다. 데이터에 노이즈가 있을 가능성이 높을 때 유용하다.
시각적으로 보면 MAE는 예측값이 정답에서 멀어질수록 기울기 1의 직선 형태로 손실이 증가한다. 즉, 예측이 잘못되었을수록 일정하게 페널티를 준다.
MSE(Mean Squared Error)는 오차를 제곱한 뒤 평균을 구하는 방식이다.
시각적으로 보면 MSE는 예측값이 정답에서 멀어질수록 곡선 형태로 손실이 급격히 증가한다. 이는 오차가 작을 때는 비교적 완만하지만 큰 오차에 대해서는 매우 민감하게 반응하도록 한다.

공통점
- 둘 다 회귀 모델에서 예측값과 실제값 사이의 오차를 측정하는 데 사용되는 손실 함수
- 손실 값이 작을수록 예측이 정답과 가까운 것을 의미
차이점
항목 MAE MSE 오차 처리 방식 절댓값 제곱 이상치에 대한 민감도 낮음 (강건함) 높음 (민감함) 페널티 증가 속도 선형 제곱에 비례 (비선형)
MAE는 오차가 매우 크더라도(outlier) 제곱항으로 영향을 미치는 것이 아니라 차이의 절대값만큼만 영향을 미치기 때문에 MSE에 비해 상대적으로 이상치에 더 강건한 것이다.
즉, 둘 다 오차를 기준으로 총합을 해 평균을 구한다는 것은 동일하지만 각각의 오차를 절대 값으로 다룰지 혹은 제곱 값으로 처리하는지가 다르다.
교차 엔트로피는 분류 문제에서 가장 널리 쓰이는 손실 함수다. 이진 분류(binary classification) 또는 다중 클래스 분류(multi-class classification)에 사용된다.
결과적으로 소프트맥스(softmax) 함수의 출력과 실제 정답(원-핫 인코딩) 사이의 차이를 측정한다.
정답을 맞추면 손실이 0에 가까워지고 틀릴수록 로그값 특성에 의해 손실이 급격하게 커진다. 이 함수는 예측 확률이 정답일수록 낮은 손실을, 틀릴수록 매우 큰 손실을 부여한다.

이진 분류에서는 보통 binary_crossentropy를 사용한다. 확률적으로 예측한 값이 실제 정답과 얼마나 가까운지를 평가한다.
이번에는 교차 엔트로피 손실 함수가 실제로 어떻게 계산되는지, 예측이 얼마나 정답에 가까웠는지를 수치로 어떻게 표현하는지 계산해 보자.
정답 레이블은 원-핫 인코딩 방식으로 표현된다. 정답인 클래스 인덱스에만 1이 있고 나머지는 모두 0인 벡터다.
이때 교차 엔트로피 손실 함수는 아래와 같이 계산된다.
예측 확률이 0.6인 첫 번째 클래스를 정답으로 예측했을 때 손실 값은 약 0.511이다. 이 값은 모델이 정답을 비교적 잘 예측했다는 뜻이다. 예측이 더 정확해질수록 softmax 확률이 1에 가까워지고, 이 손실 값은 0에 가까워진다.
이진 분류에서는 출력값이 1일 확률로 해석된다. 따라서 상황에 따라 손실 함수의 값이 달라진다.
실제 정답이 1일 경우
예측값이 0.8이면 정답인 1에 가까운 확률을 준 셈이므로, 손실이 작게 나온다. 예측이 맞을수록 손실이 작아진다는 원리를 잘 보여주는 수치다.
실제 정답이 0일 경우
이 경우는 정답이 0인데 모델은 0.8이라는 높은 확률로 1이라고 예측했다. 틀린 예측을 매우 자신 있게 한 상황이기 때문에 손실 값이 크게 나온다. 이처럼 교차 엔트로피 손실 함수는 틀린 예측을 더 강하게 페널티 주는 구조라는 것을 알 수 있다.
요약하자면,
교차 엔트로피 손실 함수는 "정답 클래스에 얼마나 높은 확률을 줬는지"를 기준으로 손실을 계산한다. 높은 확률로 정답을 예측하면 손실이 작아지고, 틀린 예측을 자신 있게 할수록 손실이 커진다.
손실 함수는 딥러닝 모델이 학습하는 데 있어 중요하다는 것을 알 수 있었다. 어떤 손실 함수를 선택하느냐에 따라 모델의 학습 방향과 특성이 결정된다. 회귀 문제에서는 MAE와 MSE 중 데이터 특성에 맞는 것을 고르고, 분류 문제에서는 출력 형식(정수인지, 원-핫 인코딩인지)에 따라 적절한 교차 엔트로피 함수를 선택해야 한다.