본문 바로가기

Deep Learning

Deep Learning : 여러 클래스로 분류할때, 아웃풋노드에서 사용하는액티베이션함수 소프트맥스

소프트맥스 함수는 출력층에서 사용되는 함수이다. 이 외에도 항등 함수, 시그모이드 함수가 존재한다. 항등 함수의 경우 입력값이 그대로 출력되는 함수로 회귀 모델을 만들 때 사용한다.

소프트맥스 함수 다중 클래스 분류 모델을 만들 때 사용한다. 결과를 확률로 해석할 수 있게 변환해주는 함수로 높은 확률을 가지는 class로 분류한다. 이는 결과값을 정규화시키는 것으로도 생각할 수 있다. 

데이터의 실제값이 setosa라면, setosa의 원-핫 벡터는 [0 1 0]이다. 이 경우, 예측값과 실제값의 오차가 0이 되는 경우는 소프트맥스 함수의 결과가 [0 1 0]이 되는 것이다. 이 두 벡터 [0.26 0.70 0.04] [0 1 0] 의 오차를 계산하기 위해서 소프트맥스 회귀는 손실함수로 cross-entropy 함수를 사용한다. 

 

Softmax(소프트맥스)는 입력받은 값을 출력으로 0~1사이의 값으로 모두 정규화하며 출력 값들의 총합은 항상 1이 되는 특성을 가진 함수이다.

 

분류하고 싶은 클래수의 수 만큼 출력으로 구성한다.

가장 큰 출력 값을 부여받은 클래스가 확률이 가장 높은 것으로 이용된다.

 

그러나,소프트맥스 결과값이 [0.4, 0.3, 0.2, 0.1]으로 나와 1등한 0.4와

[0.7, 0.1, 0.1, 0.1]으로 나와 1등한 0.7은 다를 것이므로 그 정도에 따라 추가 판단하기도 한다.

 

그럼 소프트맥스를 구하는 식을 살펴보자.

 

 

자세히 살펴보면 입력값의 대소 순서가 출력값의 대소 순서와 같다는 것을 알 수 있다.

결국 가장 큰 값은 이미 소프트맥스 이전에 가장 큰 값이였다.

따라서 추론(운영)단계에서 연산속도를 빠르기하기 위해 생략하기도 한다.

 

소프트맥스 결과값을 One hot encoder의 입력으로 연결하면

가장 큰 값만 True값, 나머지는 False값이 나오게 하여 이용 가능하다.