왜 softmax 함수에서는 'e'를 쓰는가?
글 작성자: 만렙개발자
다들 잘 아시겠지만, softmax를 다시한번 간단히 살펴봅시다.
Softmax
softmax는 입력되는 모든 값을 0과 1 사이의 값으로 normalize하며, 모든 입력값의 합이 1이되게 하는 함수입니다.
그렇다면, 왜 상수 'e'를 사용하는가?
- 아래와같이 미분이 아주 깔끔해서 입니다.
- '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]
- soft'max'의 관점에서, max이려면 차이가 얼마 안나도 가장 큰 값이 확실하게 구별될 정도로 크게 나타나야하기에, e를 사용하면, 지수승으로 표현이 가능해서 값의 비교가 명확해짐. 다른말로 하면, 엔트로피를 최대화하는 손실함수가 softmax입니다.
softmax 함수에서 e 쓰는 이유
'📚 딥딥러닝 > Concepts' 카테고리의 다른 글
가중치 초기화의 모든 것 (All about weight initialization) [설명/요약/정리] (1) | 2019.12.23 |
---|---|
AutoEncoder (self-supervised learning) [설명/요약/정리] (1) | 2019.12.20 |
1x1 convolution의 의미 = 차원 축소, 그리고 bottleneck (컨볼루션과 보틀넥) (0) | 2019.12.20 |
BERT(버트)의 새로운 가족 ALBERT(A Lite BERT For Self-Supervised Learning of Language Representations) 논문 핵심 [설명/요약/정리] (1) | 2019.12.12 |
RNN (Recurrent Neural Network) in Keras (0) | 2019.09.26 |
댓글
이 글 공유하기
다른 글
-
AutoEncoder (self-supervised learning) [설명/요약/정리]
AutoEncoder (self-supervised learning) [설명/요약/정리]
2019.12.20 -
1x1 convolution의 의미 = 차원 축소, 그리고 bottleneck (컨볼루션과 보틀넥)
1x1 convolution의 의미 = 차원 축소, 그리고 bottleneck (컨볼루션과 보틀넥)
2019.12.20 -
BERT(버트)의 새로운 가족 ALBERT(A Lite BERT For Self-Supervised Learning of Language Representations) 논문 핵심 [설명/요약/정리]
BERT(버트)의 새로운 가족 ALBERT(A Lite BERT For Self-Supervised Learning of Language Representations) 논문 핵심 [설명/요약/정리]
2019.12.12 -
RNN (Recurrent Neural Network) in Keras
RNN (Recurrent Neural Network) in Keras
2019.09.26