본문 바로가기

study/시행착오

Q. softmax function을 통과시킨 후 one-hot encoding을 하는 이유 ?

여기에 답은 없습니다 ㅠㅅㅠ..

 

Multi-class classification에서는 binary classification을 사용하여 해결할 수 있다.

예를 들어 A, B, C 로 분류할 때 A or not / B or not / C or not 3개의 Linear function 로 분류 가능하다.

 

미흡한 필기 ㅎ..

 

Linear Regression 을 사용하여 Binary Classification을 구할 때

H(x) = Wx+b 에서 함수 값을 0 <= H(x) <= 1 로 정규화시키기 위해서

활성함수인 Sigmoid Function을 사용한다.  

더보기

- 활성함수

어떠한 전기 신호를 일정 기준 이상이면 1, 이하면 0으로 판단하여 보내주는 것, 즉 그 신호를 결정해주는 역할을 한다.

 

- Sigmoid Function

단일 퍼셉트론에서 사용했던 활성함수이다. 입력을 01 사이로 정규화해준다. backpropagation에서 NN layer를 거칠 때마다 작은 미분값이 곱해져서, Gradient Vanishing을 야기한다. 여러 개의 layer를 쌓으면 신경망 학습이 잘 되지 않는 원인이 되기 때문에 Deep layer에서는 활성함수로 사용을 권하지 않는다.

 

Binary Classification과 마찬가지로 Multi-class classification에서도 마찬가지로 sigmoid를 사용할 수 있다.

아래와 같이 예측된 값이 a->2.0, b->1.0, c->0.1이 나온다면 a로 분류해주어야 한다.

하지만 sigmoid를 태우면 a와 b 모두 1이 나오게 되어서 분류가 실패하게 된다.

따라서 sigmoid 대신 Softmax function을 사용하게 된다.

softmax function은 모든 값이 0~1사이이고 전체 합이 1로써 확률 정규화를 시켜준다.

 

그리고 softmax function을 통과한 값이 가장 큰 것만을 1로 만드는 one-hot encoding을 해준다.

이런 과정을 통해 a로 분류하게 된다.

차근차근 순서대로 따라왔을 때는 이 과정이 이해가 되었다.

그런데 문득 이런 생각이 들었다.

softmax function을 통과하지 않아도 a의 예측값인 2가 가장 크다.

softmax function을 통과시키지 않은 이전의 예측값에서 one-hot encoding을 했어도 동일하게 a를 예측할 수 있다.

 

그럼 왜 굳이 softmax function을 통과시킨 다음에 one-hot encoding을 하는 것일까 ?

 

아주 살짝쿵 이해한 바로는 softmax는 아까 말했듯이 전체 합이 1로써 확률 정규화를 시켜준다.

학습을 시킬 때 Loss function을 통해 오차를 구하고 Gradient Descent를 이용해 오차가 Global minima에 도달할 수 있는 방향으로 학습시킨다.

따라서 맞은 값은 오차를 작게 만들고 틀린 값은 오차를 크게 만들어서 학습을 더 잘할 수 있도록 도와준다.

라고 생각했는데 쓰다가 잘 모르겠어서 9월에 임시저장시켜뒀던 글.........아직도 잘 모르겠다...............

다음기회에 좀더 생각해보고 글을 수정해봐야지......................