이번 포스팅에서는 크로스 엔트로피(Cross Entropy)에 대해 알아보도록 하겠습니다. 크로스 엔트로피는 머신러닝 분야, 특히 딥러닝에서 신경망 훈련에서 사용되는데요. 어떤 역할을 하기 때문에 사용하는 걸까요? 결론부터 말하면 예측된 확률 분포와 실제 분포 간의 차이를 측정하는 손실함수 역할입니다.
여기서 손실함수라는 개념이 나오는데요. 만약 손실함수를 사용하는 이유가 궁금하다면 링크를 참고하시기 바랍니다. 입력 데이터를 여러 클래스로 분류하는 작업에서 특히 많이 사용됩니다. 이 말은 이진 분류(Binary Classification) 뿐만아니라 다중 분류(Multiclass Classification)까지 사용 가능하다는 의미입니다.
Cross entropy란
어원부터 살펴보면, 엔트로피는 불확성의 척도 입니다. 물리학에서 분자들의 무질서도 혹은 에너지 분산 정도를 나타내는 용어인데요. 여기에서 착안하여 정보학에서 엔트로피는 정보의 양으로서 신호를 생각하면 됩니다.
결국, 어떤 확률분포로 일어나는 사건을 표현하는 데 필요한 정보량을 의미합니다. 크로스 엔트로피는 두 가지 확률 분포가 얼마나 비슷한지를 수리적으로 나타내는 개념인데요. 두 확률 분포 간의 차이를 정량화하여 수리적 척도로 나타냅니다. 딥러닝의 맥락에서 두 분포라고 하면 모델에 의해 생성된 예측 확률 분포와 Target 레이블의 실제 확률 분포입니다.
앞서 이야기한 것처럼 크로스 엔트로피는 손실 함수의 일종인데요. 예측과 실제 목푯 값 간의 차이 측면에서 모델이 얼마나 잘 수행되는지를 측정할 수 있는거죠.
Cross entropy 학습
신경망 학습의 목표는 교차 엔트로피 손실을 최소화하는 것입니다. 이는 경사하강법과 같은 최적화 알고리즘을 통해 모델의 가중치와 편향을 조정함으로써 달성하게 되는데요. 크로스 엔트로피 수식에서 q는 딥러닝 모델의 추정 확률분포를, p는 딥러닝 모델이 추구해야 할 미지의 확률분포를 의미합니다.
- 이 q와 p를 활용하여 교차 엔트로피를 계산
- 이 교차 엔트로피가 낮아지는 쪽으로 모델의 추정 확률분포 q를 꾸준히 개선
- 확률분포 q를 확률분포 p에 가깝게 접근시키는 것이 학습 원리
실제값과 예측값이 맞는 경우에는 0으로 수렴하고 값이 틀릴 경우에는 값이 커지기 때문에 두 확률분포가 서로 얼마나 다른지를 나타내주는 정량적인 지표가 됩니다. 교차 엔트로피가 낮을수록 더 나은 일치를 나타내며 결과적으로 더 나은 모델 성능을 나타낸다고 해석할 수 있습니다.
Cross entropy 종류
1. Binary Crossentropy(이진 교차 엔트로피)
- 두가지 클래스를 분류(예, 양수/음수, True/False 또는 0/1)할 수 있는 분류기를 의미
- Sigmoild와 함께 사용
2. Categorical Crossentropy(범주형 교차 엔트로피)
- 분류해야 할 클래스가 3개 이상의 다중 클래스인 경우에 사용
- 각 클래스는 독립적으로 처리되며 모든 클래스의 교차 엔트로피 값의 합계가 계산됨
- Softmax와 함께 사용
3. Sparse Categorical Crossentropy
- 분류해야 할 클래스가 3개 이상이며 라벨이 0, 1, 2처럼 정수의 형태로 제공될 때 주로 사용
Cross entropy 특징
1. 불균형 클래스 처리
교차 엔트로피는 불균형한 클래스 분포를 처리할 때에도 효과적입니다. 소수 클래스에 대해 부정확한 예측을 한 경우 모델에 더 많은 불이익을 주어 클래스 불균형을 해결하는 데 도움이 됩니다.
2. 정규화
교차 엔트로피는 과적합을 방지하기 위해 정규화 기술에 통합되어 모델이 보이지 않는 데이터에 대해 잘 일반화되도록 보장할 수 있습니다.
마무리
교차 엔트로피는 딥러닝 모델의 훈련 및 평가에 중요한 구성 요소입니다. 이는 모델이 분류 작업에서 얼마나 잘 수행되는지에 대한 정량적 측정값을 제공하고 훈련 중 정확도와 수렴을 향상하기 위한 최적화 프로세스입니다.
'딥러닝' 카테고리의 다른 글
딥러닝의 수치미분과 편미분: 꼭 알아야 할 미분 공식 (1) | 2024.01.22 |
---|---|
딥러닝 학습 방법: batch size, Iteration, epoch(에포크) (0) | 2024.01.19 |
딥러닝에서 손실함수를 사용하는 이유 (0) | 2024.01.17 |
소프트맥스 함수를 사용하는 이유? (0) | 2024.01.16 |
활성화 함수 종류: 왜 활성화 함수가 필요할까? (1) | 2024.01.15 |