소프트맥스 함수(Softmax Functioin)
소프트맥스 함수는 분류해야하는 카테고리(클래스)의 총 개수를 k라고 할 때, k차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정합니다.
k차원의 벡터에서 i번째 원소를 zi, i번째 클래스가 정답일 확률을 pi로 나타낸다고 하였을 때 소프트맥스 함수는 pi를 다음과 같이 정의합니다.
분류하고자 하는 클래스가 k개일 때, k차원의 벡터를 입력받아서 모든 벡터 원소의 값을 0과 1사이의 값으로 값을 변경하여 다시 k차원의 벡터를 리턴합니다
소프트맥스 함수의 특징
- 총 합은 1
- 레이블 카테고리(클래스)의 수만큼 차원을 가지는 벡터
다중 클래스 분류(Multi-class Classification)
세 개 이상의 카테고리(클래스)에서 답을 고르는 문제를 다중 클래스 분류(Multi-class Classification)라고 합니다. 소프트맥스 회귀는 다중 클래스 분류(Multi-Class Classification)에 사용됩니다. 즉, 3개 이상의 카테고리에서 정답을 찾을때 사용합니다(이진 분류(Binary Classification)는 로지스틱 회귀를 이용).
예제) 붓꽃 품종 분류하기 문제
꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이라는 4개의 특성(feature)로부터 setosa, versicolor, virginica라는 3개의 붓꽃 품종 중 어떤 품종인지를 예측하는 다중 클래스 분류 문제입니다.
p1(virginica일 확률),p2(setosa일 확률),p3(versicolor일 확률) 각각은 1번 클래스가 정답일 확률, 2번 클래스가 정답일 확률, 3번 클래스가 정답일 확률을 나타내며 각각 0과 1사이의 값으로 총 합은 1이 됩니다.
소프트맥스 함수 적용 식붓꽃 품종 분류 행렬로 표현하기
크로스 엔트로피(Cross Entropy) 함수
소프트맥스 회귀에서는 비용 함수로 크로스 엔트로피 함수를 사용합니다. 크로스 엔트로피 식은 다음과 같습니다.
- yj: Label, yj는 원-핫 벡터의 j번째 인덱스를 의미함.
- k: 카테고리(클래스) 수
- pj: j번째 카테고리(클래스)의 확률
원-핫 벡터에서 c번째 인덱스가 1이고, 예측값도 1일 경우 식은 다음과 같이 표현됩니다.
-1log(1) = 0
이는 비용이 0이며, 예측값이 레이블을 정확하게 예측했다는 의미입니다.
n개 데이터에서 편균을 구한다면 다음과 같이 정의 됩니다.
감사합니다.
[Reference]
- PyTorch로 시작하는 딥 러닝 입문
댓글
댓글 쓰기