본문 바로가기
  • Staying curious, growing through questions
Study Log

Softmax 함수 출력의 의미 그리고 NLL loss

by Evergreen Mind 2024. 7. 22.

1. Softmax 함수

2. NLL Loss

  2.1. 개념

  2.2. 수학적 정의

  2.3. 예시

 

 


 

softmax함수는 다음과 같다.

K: 클래스 개수

k: 해당 클래스 

 

 

 

softmax 함수의 사용 목적

  • 다중 클래스 분류와 같은 문제에서 최종 출력을 할 때에 출력값을 0과 1 사이의 확률값으로 나타내기 위해 사용한다.
  • 로짓을 exp()값을 통해서 양수화하고 normalize 작업을 거친다. 그러면 다음과 같은 효과가 있다
    • 모든 값이 0과 1 사이에 있다
    • 모든 class에 대한 softmax값을 더하면 1이 된다. 따라서 확률처럼 사용할 수 있다. 
    • softmax의 출력이 뉴럴 네트워크의 confidence와 같은 역할을 할 수 있다

softmax 함수의 출력이 뉴럴 네트워크의 confidence(신뢰도)와 같은 역할을 할 수 있다는 것은, softmax 함수가 각 클래스에 대해 예측한 확률을 제공하는데, 이 확률은 모델이 해당 클래스를 얼마나 확신하는지를 나타낸다는 의미이다. 

즉 모델이 각 클래스에 대해 얼마나 확신하는지를 확률분포로 제공한다는 의미이다. 

이는 모델의 성능을 이해하는데 중요한 역할을 한다.

 

 

예를들어 뉴럴 네트워크가 개와 고양이를 분류하는 문제에서 다음과 같은 Softmax 출력을 가진다고 하자.

  • 개: 0.8
  • 고양이: 0.2

이 경우, 모델은 입력 이미지가 개일 확률이 80%, 고양이일 확률이 20%라고 예측한다. 따라서 모델은 입력 이미지가 일 가능성이 높다고 확신하고, 이를 최종 예측으로 선택한다.

 

 


 

 

 

NLL Loss(Negative Log-Likehood Loss)

  • 주어진 데이터에 대해 모델이 예측한 확률 분포와 실제 분포 간의 차이를 측정한다. 

       *여기에서 실제 분포는 원핫인코딩된 값을 의미한다. 

  • 자세히 말하자면, 주어진 데이터 포인트에대해 모델이 예측한 확률이 실제 라벨에 할당된 확률과 얼마나 일치하는지를 측정
  • 라벨이 정답 클래스일때, 모델이 해당 클래스에 높은 확률을 할당하도록 학습시키는 역할을 한다. 
  • 주로 분류 문제에서 사용되며 특히 다중 클래스 분포에서 softmax와 함께 사용된다. 

 

  • 정답 클래스의 softmax 출력이 높은 값을 가진다면 출력이 정확한 것이므로 −log⁡(𝑦)가 매우 작아지게 된다. 마치 Loss가 작아지는 것과 같다
  • 정답 클래스의 softmax 출력이 낮다면 −log⁡(𝑦)는 큰 값을 가진다. 즉, 출력이 정확하지 못한 부분에 대해서는 높은 Loss를 가진다.

 

NLL은 어떻게 위와 같이 정의되었을까? 

NLL loss는 모델이 예측한 확률 분포 p(y|x) 와 실제레이블 y간의 교차 엔트로피(cross entropy)를 최소화한다.

수학적인 유도는 다음과 같다

 

 

NLL 식의 직관적인 이해

모델이 올바른 클래스에 높은 확률을 할당할수록 NLL Loss는 낮아진다

모델은 NLL loss를 최소화하기 올바른 클래스에 할당된 확률을 높이도록 학습되고 따라서 잘못된 클래스에 할당된 확률이 낮아진다.

 

 


예시

가령, 3개의 클래스가 있는 분류 문제에서 데이터 포인트 x의 실제 레이블이 클래스 2라고 가정한다.

모델의 예측 확률이 [0.2,0.7,0.1]이라면, NLL Loss는 다음과 같이 계산된다

NLL=

모델이 클래스 2에 할당한 확률(0.7)이 로그 연산을 통해 계산되며, 이 값이 NLL Loss로 사용된다.

이 예에서 모델은 비교적 높은 확률을 올바른 클래스에 할당했기 때문에 NLL Loss는 상대적으로 낮게 나온다

 

 

 

 


참고링크

https://gaussian37.github.io/dl-concept-nll_loss/