소프트맥스 함수는 출력층에서 사용되는 함수이다. 이 외에도 항등 함수, 시그모이드 함수가 존재한다. 항등 함수의 경우 입력값이 그대로 출력되는 함수로 회귀 모델을 만들 때 사용한다.
소프트맥스 함수는 다중 클래스 분류 모델을 만들 때 사용한다. 결과를 확률로 해석할 수 있게 변환해주는 함수로 높은 확률을 가지는 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값이 나오게 하여 이용 가능하다.
'Deep Learning' 카테고리의 다른 글
Deep Learning : 에포크시마다 테스트를 하는, 벨리데이션 데이터를 처리하는 방법 중, validation_data 파라미터 사용법 (0) | 2022.06.14 |
---|---|
Deep Learning : 분류의 문제에서 loss 셋팅하는 방법 (0) | 2022.06.13 |
Deep Learning : Flatten 라이브러리 사용하는 이유 (0) | 2022.06.13 |
Deep Learning : EarlyStopping 라이브러리 사용법 (0) | 2022.06.13 |
Deep Learning : validation data란 무엇이고, code에서 사용하는 방법 / 파라미터 validation_split (0) | 2022.06.13 |