주뇽's 저장소

[손실함수] 다중 분류 Task에서 자주 사용되는 손실함수 크로스엔트로피(Cross-Entropy) 본문

DeepLearning

[손실함수] 다중 분류 Task에서 자주 사용되는 손실함수 크로스엔트로피(Cross-Entropy)

뎁쭌 2024. 4. 16. 20:30
728x90
반응형

목차

1. 손실함수

2. Cross-Entropy

- 정보

- 기댓값

- 엔트로피(Entropy)

- Cross-Entropy

 

👉 1. 손실함수

인공지능 모델을 학습시킬 때 중요한 개념 중 하나가 손실함수(loss function)이다. 손실함수는 모델의 예측과 실제 데이터 간의 차이를 수치화하여 나타낸다. 이 손실함수의 값을 최소화하는 것이 모델 학습의 목표이다

간단한 예로. 선형회귀 모델을 생각해 보자 이 모델은 입력 데이터 x와 출력 y 사이의 관계를 선형 방정식 y = wx + b로 모델링한다. 여기서 w와 b는 모델이 학습해야 할 파라미터이다.

이때 손실함수로 자주 사용되는 것이 평균제곱오차(Mean Squared Error, MSE)이다. 평균제곱오차는 모델의 예측값과 실제값 간의 차이를 제곱하여 모든 데이터 포인트에 대해 평균을 내는 것이다. 수식으로 표현하면 다음과 같다:

MSE = (1/n) * Σ(y_pred - y_true)^2

여기서 n은 데이터 포인트 수, y_pred는 모델의 예측값, y_true는 실제다.

모델 학습 과정에서는 이 MSE 값을 최소화하는 w와 b 값을 찾는 것이 목표이다. 이를 위해 경사하강법(gradient descent) 등의 최적화 알고리즘을 사용한다.

이 외에도 다양한 손실함수가 있다. 분류 문제에서는 교차엔트로피(cross-entropy) 손실함수를, 시퀀스 데이터에서는 순환신경망에 자주 쓰이는 순환교차엔트로피(recursive cross-entropy) 손실함수 등을 사용한다.

손실함수를 잘 정의하는 것이 모델 학습에 있어서 매우 중요하다. 잘못된 손실함수는 모델이 우리가 원하는 방향으로 학습하지 않게 한다. 따라서 문제 특성에 맞는 적절한 손실함수를 선택하는 것이 인공지능 모델 설계에서 필수적이다.

 

  • 선형회귀 : MSE(평균제곱오차)
  • 분류 : Cross-Entropy(크로스 엔트로피)
  • 시퀀스 데이터 : Recursive Cross-Entropy(순환교차엔트로피)

👉 2. Cross-Entropy

크로스 엔트로피를 이해하기 위해서는 먼저 정보, 기댓값, 엔트로피에 대한 정의에 대해서 알아야 한다. 각각에 대해서 간단하게 알아보자.

- 정보

정보이론에서 정보(information)란 불확실성(uncertainty)의 감소를 의미한다. 일어날 확률이 낮을수록 그 사건이 실제로 일어났을 때 우리가 얻는 정보의 양은 더 많아진다

예를 들어, 동전을 던졌을 때 앞면(H)이 나올 확률과 뒷면(T)이 나올 확률이 각각 0.5라고 가정해자.

이때 어느 쪽이 나올지 모르는 상황이므로 불확실성이 최대이다. 하지만 실제로 동전을 던져 앞면이 나왔다는 사실을 알게 되면, 이 불확실성이 제거되어 정보가 생긴다. 

더 이해하기 쉽게 아래와 투명한 봉지안에 빨간색 공 10개와 파란색 공 1개가 들어있다고 가정해보자.

이 때 빨간색 공이 나올 확률:

  • 빨간색 공의 개수: 10개
  • 전체 공의 개수: 10개 (빨간색 10개 + 파란색 1개)
  • 확률 = (빨간색 공의 개수) / (전체 공의 개수)
  • 확률 = 10 / 11 ≈ 0.9091 (약 90.91%)

파란색 공이 나올 확률:

  • 파란색 공의 개수: 1개
  • 전체 공의 개수: 11개 (빨간색 10개 + 파란색 1개)
  • 확률 = (파란색 공의 개수) / (전체 공의 개수)
  • 확률 = 1 / 11 ≈ 0.0909 (약 9.09%)

위와 같이 우리가 랜덤적으로 공을 꺼냈을 때 높은 확률로 빨간색 공이 나올것이라 예측한다. 그리고 실제 빨간색 공이 나온다고 하더라도 그렇게 놀랍지 않다. 하지만 만약 우리가 공을 꺼냈을 때 파란색 공이 나왔다면 아마도 상당히 놀랄것이다. 그 이유는 파란색 공이 나올 확률이 더 적기 때문이다. 이렇게 확률과 정보는 정반대이다. 즉 정보이론에서 말하는 정보란 확률의 역수가 된다. 

 

확률 : x가 일어날 확률 P(x)

정보 : x가 일어났을 때 정보량 1/P(x)

- Log(1/P(x) -> Log(1) - Log(P(x)) -> 0 - Log(P(x)) 

- 즉 정보 : -Log(P(x)) 

- 기댓값

기댓값은 어떤 확률변수가 가질 수 있는 값들의 평균값으로, 그 확률변수를 무한히 많이 반복했을 때 얻을 수 있는 평균값을 의미한다. 

 

여기서 x는 X가 가질 수 있는 값이고, P(X=x)는 X가 x값을 가질 확률이다. 즉, 각 값에 그 값이 나올 확률을 곱한 후 모두 더하면 기댓값이 된다.

  • E(X) = ∑(x * P(X=x))

예시: 복권
1000장의 복권이 있고, 그 중 1장만 1,000,000달러의 상금을 받을 수 있다고 가정해자. 복권 1장의 가격은 1달러라면, 이 복권을 샀을 때 상금의 기댓값은 얼마일까?

1등 상금을 받을 확률은 1/1000이고, 아무것도 받지 않을 확률은 999/1000이다. 기댓값은 다음과 같이 계산할 수 있다.

  • E(X) = 1,000,000 * (1/1000) + 0 * (999/1000) = 1,000

즉, 이 복권을 1달러에 샀을 때, 평균적으로 1,000달러의 상금을 기대할 수 있다. 하지만 실제로는 대부분의 경우 아무것도 받지 못하고, 극히 드물게 1,000,000달러를 받게 될 것이다.

이처럼 기댓값은 어떤 확률적 상황에서 평균적으로 얻을 수 있는 결과를 나타낸다. 하지만 실제 결과는 매 시행마다 다를 수 있다는 점을 기억해야 한다.

- 엔트로피(Entropy)

확률변수의 불확실성을 측정하는 척도이다. 엔트로피가 높을수록 확률변수의 불확실성이 높고, 엔트로피가 낮을수록 확률변수의 불확실성이 낮다. 수식은 아래와 같다.

  • H(X) = -∑(P(X=x) * log₂(P(X=x)))

정보, 기댓값, 엔트로피가 모두 다른것 같지만 엔트로피 수식을 보면 결국 정보와 기댓값으로 이루어져 있다는 걸 알 수있다.

  • 정보 : - Log(P(x))
    • 어떠한 일 x가 일었났을 때의 정보량
  • 기댓값 : E(X) = ∑(x * P(X=x))
    • 어떠한 일 x가 일어날 확률들의 평균
  • 엔트로피  :  H(X) = -∑(P(X=x) * log₂(P(X=x))
    • 기댓값 수식 중 x 값에 정보를 넣음
    • 즉 어떠한 일 x가 일어났을 때의 정보량에 대한 평균

- 크로스 엔트로피(Cross-Entropy)

크로스 엔트로피(Cross-Entropy)는 정보이론과 머신러닝에서 널리 사용되는 손실 함수 중 하나이다. 크로스 엔트로피는 두 확률분포 사이의 차이를 측정하는데 사용된다. 머신러닝에서는 일반적으로 모델이 예측한 확률분포와 실제 확률분포 사이의 차이를 측정하는데 사용된다.

크로스 엔트로피의 수식은 다음과 같다:

  • H(p,q) = -∑(p(x) \* log₂(q(x)))   

여기서 p(x)는 실제 확률분포이고, q(x)는 모델이 예측한 확률분포이다. 

엔트로피와 크로스 엔트로피의 수식을 비교해보면 다음과 같다:

  • 엔트로피: H(p) = -∑(p(x) \* log₂(p(x)))
  • 크로스 엔트로피: H(p,q) = -∑(p(x) \* log₂(q(x)))

엔트로피는 확률분포 p(x)에 대한 정보량의 기댓값을 의미하는 반면, 크로스 엔트로피는 실제 확률분포 p(x)와 예측 확률분포 q(x) 사이의 차이를 측정한다.

머신러닝에서 크로스 엔트로피를 손실 함수로 사용할 때, 목표는 모델이 예측한 확률분포 q(x)를 실제 확률분포 p(x)에 최대한 가깝게 만드는 것이다. 크로스 엔트로피 값이 작을수록 두 확률분포가 유사하다는 것을 의미한다. 따라서 학습 과정에서는 크로스 엔트로피 값을 최소화하는 방향으로 모델의 파라미터를 업데이트한다.

예를 들어, 이진 분류 문제에서 크로스 엔트로피 손실 함수는 다음과 같이 정의될 수 있다:

  • H(p,q) = -\[p \* log₂(q) + (1-p) \* log₂(1-q)\]

여기서 p는 실제 레이블(0 또는 1)이고, q는 모델이 예측한 확률이다.

크로스 엔트로피는 분류 문제에서 특히 유용하다. 다중 클래스 분류 문제의 경우, 크로스 엔트로피 손실 함수는 다음과 같이 일반화될 수 있다:

*   H(p,q) = -∑\[p(x) \* log₂(q(x))\]

여기서 p(x)는 실제 확률분포(원-핫 인코딩된 레이블)이고, q(x)는 모델이 예측한 각 클래스에 대한 확률이다.

크로스 엔트로피는 모델이 실제 확률분포를 잘 근사하도록 유도하므로, 분류 문제에서 좋은 성능을 얻을 수 있다. 또한, 크로스 엔트로피는 확률 값 자체를 직접 최적화하므로, 모델의 출력을 확률로 해석할 수 있다는 장점이 있다.

 

 

📝 정리

1. 손실 함수
   - 인공지능 모델 학습 시 중요한 개념
   - 모델의 예측과 실제 데이터 간의 차이를 수치화하여 나타냄
   - 손실 함수 값을 최소화하는 것이 모델 학습의 목표
   - 대표적인 손실 함수: 평균제곱오차(MSE), 교차엔트로피(Cross-Entropy), 순환교차엔트로피(Recursive Cross-Entropy)

2. 정보
   - 불확실성의 감소를 의미
   - 사건이 일어날 확률이 낮을수록 그 사건이 실제로 일어났을 때 얻는 정보량이 많음
   - 정보량 = -Log(사건이 일어날 확률)

3. 기댓값
   - 확률변수가 가질 수 있는 값들의 평균값
   - 각 값에 그 값이 나올 확률을 곱한 후 모두 더한 값
   - 수식: E(X) = ∑(x * P(X=x))

4. 엔트로피
   - 확률변수의 불확실성을 측정하는 척도
   - 엔트로피가 높을수록 확률변수의 불확실성이 높음
   - 수식: H(X) = -∑(P(X=x) * log₂(P(X=x)))
   - 정보량의 기댓값으로 해석 가능

5. 크로스 엔트로피
   - 두 확률분포 사이의 차이를 측정하는 손실 함수
   - 머신러닝에서는 모델이 예측한 확률분포와 실제 확률분포 사이의 차이를 측정
   - 수식: H(p,q) = -∑(p(x) * log₂(q(x)))
   - p(x): 실제 확률분포, q(x): 모델이 예측한 확률분포
   - 크로스 엔트로피 값이 작을수록 두 확률분포가 유사함
   - 학습 과정에서 크로스 엔트로피 값을 최소화하는 방향으로 모델의 파라미터를 업데이트
   - 분류 문제에서 특히 유용하며, 모델의 출력을 확률로 해석 가능

정보이론과 기댓값 개념을 바탕으로 엔트로피와 크로스 엔트로피를 이해하면, 머신러닝에서 손실 함수로 크로스 엔트로피를 사용하는 이유와 그 의미를 명확히 알 수 있다. 크로스 엔트로피를 최소화하는 과정은 모델이 실제 확률분포를 잘 근사하도록 학습하는 과정이며, 이를 통해 높은 성능의 분류 모델을 얻을 수 있다.