Machine Learning/Probability and Statistics
[펌] Softmax 함수
바나나인간
2019. 1. 8. 10:36
출처: https://tensorflow.blog/%ED%95%B4%EC%BB%A4%EC%97%90%EA%B2%8C-%EC%A0%84%ED%95%B4%EB%93%A4%EC%9D%80-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-3/
소프트맥스는 뉴런의 출력 값에 지수함수를 적용하되 모든 뉴런에서 나온 값으로 정규화하는 형태를 가집니다. 예를 들어 강아지에 대한 소프트맥스 출력은 아래와 같습니다.
시그모이드 함수를 적용한 (강아지, 고양이, 토끼) 의 확률이 (0.9, 0.8, 0.7) 인 경우 이를 이용해 를 구하면
이므로
입니다. 여기서 구한 값으로 소프트맥스를 적용해 보겠습니다.
이 됩니다. 같은 방식으로 (0.5, 0.2, 0.1) 인 경우도 구해 보겠습니다.
이므로 소프트맥스 함수 값은
우리가 예상했던 대로 시그모이드 함수로 구한 확률이 (0.9, 0.8, 0.7) 인 것은 소프트맥스로 바꾸었을 때 (59%, 26%, 15%) 정도로 강아지일 가능성을 높게 나타내고 있습니다. 하지만 (0.5, 0.2, 0.1) 인 데이터는 전체적으로 시그모이드 값이 낮음에도 불구하고 소프트맥스로 바꾸었을 때 (74%, 18%, 8%) 로 매우 강하게 이 데이터는 강아지임을 나타내고 있습니다. 이런 이유로 멀티 클래스(multi-class) 분류인 경우 소프트맥스 함수를 자주 사용하고 있습니다.