💡 AI/DL

SNN을 이용한 Multi-Class Classification

U-chan Seon 2021. 1. 27. 19:50

다중 클래스 분류 (Multi-Class Classification)

이진 분류의 경우 "네", "아니오"로만 답하여 출력이 하나면 된다.

다중 분류의 경우 "이게 뭐냐?" 라고 물었을 때 "개" 라고 답할 수 있어야 한다.

 

그럼 정답을 어떻게 표현해야 할까?


One-Hot Encoding : 정답을 어떻게 표현할 것인가?

전부다 0이고 하나만 1인 경우, 하나만 자극을 받아서 원 핫이라고 한다.

벡터의 각 element가 의미가 있다.

 

인코딩을 위해 테이블을 만들어 주어야 한다.

총 N개의 레이블이 있어야 한다.


One-Hot Encoding의 희소표현 (Sparse Vector)

대부분의 값이 0이고 희소하게 나타나는 벡터를 희소벡터라고 한다.


SNN을 이용한 다중 클래스 분류

Softmax를 이용하면 확률로 변환해준다고 하였다.

정답을 어떻게 넣어주어야 할까?

한가지만 100퍼센트이고 나머지는 0퍼센트이어야 한다.


Softmax Function : 어떻게 출력을 계산할 것인가?

Softmax 함수 : N개의 입력을 N개의 확률로 바꾸어 주는 함수

각각의 입력이 들어오면 전부다 e를 취해주고, 하나하나 출력은 나머지 전체를 e를 취한 것에 더해준 것을 나누어 주면 된다.

 

다 더한 값은 1이 되고 하나하나는 0에서 1사이의 값을 갖기 때문에 한가지에 속할 확률을 표현한다.


Softmax vs Sigmoid

두가지의 변수 x와 0이 있다고 할 때, Softmax를 거치면 Sigmoid와 똑같이 나온다.

Sigmoid가 2가지 클래스를 구분하기 위해 한개의 입력을 받는 이유이다.


어떻게 정답과 출력을 비교할까? : Cross Entropy Error(CEE)

원 핫 인코딩이기 때문에 1 과 0만 존재하고, 따라서 정답인 클래스에 대해서만 오차를 계산한다.

0이 곱해지는 것들은 정답이 아는 애들이고 1이 곱해지는 것은 정답인 애들이다.

 

1이 되게끔 학습한다.

살아남는 하나에 대해서만 오차가 나온다.

 

0.6에 대해서만 오차를 확인한다.

좀더 좋은 추정을 해서 0.8이 나온다면 더 작은 오차가 나타난다.

 

이때 재밌는 점은 다른 값들도 다 같이 감소가 된다.

Sofrmax를 계산하는 도중에, 전체 합이 1이기 때문에, 다른 곳에서 값을 뺏어오기 때문에 다른 값들도 영향을 받는다.