boost-devs / peer-session

🚀 부스트캠프 AI Tech 1기 U-Stage 4조 피어 세션 자료/질문 모음 (archived)
8 stars 2 forks source link

[펭귄] 소프트맥스 함수와 원-핫 인코딩의 차이 #31

Closed CoodingPenguin closed 3 years ago

CoodingPenguin commented 3 years ago

🙌 질문자


❓ 질문 내용


📄 참고 자료


Heeseok-Jeong commented 3 years ago

분류 문제 (이번 학기 등급 예측 A, B, C, F) 에서 예측값 X_ @ W 이 [1, 4, 2, 3] (편의를 위해 정수로 했습니다) 이렇게 나왔다면 이를 확률로 바꿔주는 소프트맥스 함수를 사용해야 ([0.1, 0.4, 0.2, 0.3] 으로 변환) 기계가 학습할 수 있는 반면, 예측을 할 때는 저 결과에 대해 원핫인코딩 (가장 큰 값만 1 로 만들고 나머지 0 으로 만든 벡터 반환) 을 통해 B 클래스라는 답을 얻을 수 있기 때문에 소프트맥스 함수는 사용하지 않는다고 이해했습니다.

CoodingPenguin commented 3 years ago

@Heeseok-Jeong 님이 잘 답변해주셔서 추가로 적을 내용이 없는 것 같습니다!

굳이 차이를 두자면 소프트맥스는 활성화함수로 한 층을 나왔을 때의 출력값을 확률로 나타낼 때 사용하고, 원-핫 인코딩은 라벨(=클래스)을 표현하는 한 방식이라고 보면 됩니다. 예를 들면, 분류 문제에서 라벨을 단순히 [1, 2, 3]으로 표현할 수 있는데(=라벨 인코딩) 이렇게 표현하는 것이 아닌 [[1, 0, 0], [0, 1, 0], [0, 0, 1]]로 표현하는 것이 원-핫 인코딩입니다.

참고로 소프트맥스 함수는 분류 문제의 마지막 층, 출력층에서는 사용하지 않는다고 합니다.

소프트맥스 함수의 출력을 보면 입력의 대소관계가 유지되는 것을 알 수 있다. 즉, 소프트맥스 함수의 출력을 확률로 생각할 수 있다. 그래서 신경망을 이용한 분류에서 가장 큰 출력을 가진 노드를 해당 클래스로 인식하는데 대소관계가 그대로 유지되므로 출력층의 소프트맥스 함수를 생략하는 것이 일반적이다. - 밑바닥부터 시작하는 딥러닝