글 작성자: 만렙개발자

다들 잘 아시겠지만, softmax를 다시한번 간단히 살펴봅시다.

Softmax

softmax는 입력되는 모든 값을 0과 1 사이의 값으로 normalize하며, 모든 입력값의 합이 1이되게 하는 함수입니다.

그렇다면, 왜 상수 'e'를 사용하는가?

  1. 아래와같이 미분이 아주 깔끔해서 입니다.
  2. 'soft'max의 관점에서, 입력값에 대한 결과값을 보면 'hard'하게 잘려있기 보다는, 'soft'하게 나눠지는 것을 볼 수 있습니다. 그래서 max값만 출력되는, one-hot vector의 형태로 출력되는 argmax와 달리, softmax는 max에 근접한 값들도 출력이되며, 이를 이용해 손실을 계산하는것이 유익합니다. (참고로 hardmax는 미분이 불가능하며, soft는 어디에서든지 미분이 가능합니다.)
    • argmax ([1, 3, 0, 2]) = [0, 1, 0, 0]
    • soft arg max([1, 3, 0, 2]) ≈ [0.087 0.644 0.032 0.24]
  3. soft'max'의 관점에서, max이려면 차이가 얼마 안나도 가장 큰 값이 확실하게 구별될 정도로 크게 나타나야하기에, e를 사용하면, 지수승으로 표현이 가능해서 값의 비교가 명확해짐. 다른말로 하면, 엔트로피를 최대화하는 손실함수가 softmax입니다.

softmax 함수에서 e 쓰는 이유