머신러닝을 사용한 음식분류 프로젝트를 진행하던 중,

CNN의 구조에 대해서 공부하고 있었다.

 

CNN의 구조나 각 layer를 지나며 특징이 추출된다는 점은 알겠는데, 

CNN의 마지막 layer에서 flat하게 펴서 fully connected layer를 구성하고

fc의 마지막에 softmax 함수를 적용해 분류한다는 점을 보고

softmax 함수가 어떻게 동작하는지에 대해서 알아야겠다고 생각했다.


Softmax 함수란

간단하게 말하면 확률적 분류를 할 떄 사용하는 함수라고 할 수 있다.

마지막 단계에서 출력값에 대한 정규화를 진행하는데 음식 사진을 예로 들면

김치찌개 (80%) 부대찌개 (20%) 처럼 결과가 나오는 것이고, 이 결과의 합은 항상 1이다.

 

출처 : Google Developers

 

Softmax 함수의 옵션

소프트맥스는 클래스 수가 적으면 그만큼 적은 비용이 들지만 클래스 수가 증가하면 엄청나게 많은 계산이 요구된다.

그래서 전체 소프트맥스와 후보 샘플링이라는 방법이 존재하는데,

  • 전체 소프트맥스는 모든 가능한 클래스의 확률을 계산하는 것이고
  • 후보 샘플링은 소프트맥스가 양성 라벨의 확률은 모두 계산하고, 음성 라벨의 확률은 무작위 샘플의 확률만 계산하는 것이다.

+ Recent posts