본 포스팅은 " https://vidyasheela.com/post/softmax-activation-function-in-neural-network-formula-included " 위 내용을 바탕으로 학습을 진행하였음
Activation function - Softmax function
소프트맥스 활성화 함수는 다차원에 대한 시그모이드 함수의 일반적인 형태로, 숫자 벡터를 확률 벡터로 변환해주는 활성화 함수
소프트맥스 함수(Softmax function)
- 소프트맥스(softmax) 함수는 3개 이상으로 분류하는 다중 클래스 분류에서 사용하는 활성화 함수
- 분류될 클래스가 n개일 때, n차원의 벡터를 입력받아 각 클래스에 속할 확률을 추정
정의(Definition)
![](https://blog.kakaocdn.net/dn/dZYgxp/btseBeqJRE5/578QikBO5RQKkzezf3YE0k/img.png)
위 정의를 더 깔끔하게 나타내면 아래와 같다.
![](https://blog.kakaocdn.net/dn/8s2RM/btseAT8q1ca/kBCxpwevSqwoAsK6oeqjh1/img.webp)
지금부터 예를 통해서 소프트맥스 함수의 작동에 대해 알아보고자 한다.
어떠한 주어진 이미지가 고양이, 강아지, 호랑이 또는 아무것도 아닌 이미지를 뉴럴 네트워크를 통해 분류해야 한다고 가정하자.
이때 X는 특징 벡터(feature vector)이다.(X = [x1, x2, x3, x4])
* 특징 벡터: 각각의 데이터 샘플을 수치형 벡터로 표현한 것을 말하며 일반적으로는 데이터의 특징을 나타내는 값들로 구성된다.
![](https://blog.kakaocdn.net/dn/bRdfGF/btseBfDdjVb/R1nKq5Uph87E1GzjDVb0D0/img.webp)
일반적으로 소프트맥스 함수는 위 사진과 같이 뉴럴 네트워크에서 마지막 출력 계층에서 사용한다.
![](https://blog.kakaocdn.net/dn/bkl2ye/btseGWCOG4f/xsUNOMF6z3awp8NmnKQi31/img.webp)
위와 같은 벡터가 있을 때,
![](https://blog.kakaocdn.net/dn/bYdzcs/btseBfQJSgo/pekivS1ux1ZQkeCREABAqk/img.webp)
![](https://blog.kakaocdn.net/dn/bQu9Qm/btseAUsNmht/dQg8SSRbK7inFfd3R1QuXk/img.webp)
m = L-1 계층의 총 노드 수
n = 출력 계층 L의 총 노드 수
이고,
m=3, n=4라 가정하자.
![](https://blog.kakaocdn.net/dn/wPrgF/btseK4f0dOG/XLUGNevMHjdw0qp1gBnu50/img.webp)
이때, 예제에서는 n이 4인 편향된 행렬이다.
먼저, 행렬 Z[L] 요소들 각각에 자연 상수(e)를 제곱해줘서 계산한다.
![](https://blog.kakaocdn.net/dn/brPqRS/btseIHexfZE/2FrKSWAxz25q7ENKjjPXSk/img.webp)
![](https://blog.kakaocdn.net/dn/0UtDs/btseCFWR19A/c3rnEG8gQC8O9sEJY91wik/img.webp)
위 계산을 마치면 입력 X에 대해 각각의 클래스일 확률은 아래와 같이 구할 수 있다.
![](https://blog.kakaocdn.net/dn/dgWgTF/btseG67ccva/inAzzTEqSPUjnyIZZySV31/img.webp)
계산으로 구해진 확률 분포를 기반으로 신경망은 주어진 이미지가 고양이인지, 개인지, 호랑이인지, 아무것도 아닌지를 분류한다.
이 과정을 실제 숫자 데이터가 포함된 값을 기반으로 다시 보도록 하자.
![](https://blog.kakaocdn.net/dn/caExnL/btseHZ7BtfL/4IBKF8BFrYSGNnTvb9y2s0/img.webp)
행렬이 위와 같이 있을 때,
![](https://blog.kakaocdn.net/dn/ndsEN/btseIHS80dZ/KYpYkkpbBKt5KPaVSpf5PK/img.webp)
![](https://blog.kakaocdn.net/dn/b4rnqO/btseNtGAXpo/2Bd1i5EFXt9Kf2k5PtdbH0/img.webp)
위와 같이 행렬 Z[L] 요소들 각각에 자연 상수(e)를 제곱해줘서 계산한다.
![](https://blog.kakaocdn.net/dn/TX11c/btseOiruc2a/kMyo43gkgqQoRJevRHQ1CK/img.webp)
위와 같이 확률 분포가 계산되는데, 위 확률 분포 상 가장 확률이 높은 것은 'P(dog|X)=0.623'이므로, 해당 이미지는 개로 분류됨을 확인할 수 있다.
'AI & BigData' 카테고리의 다른 글
[후기] Dialogflow를 활용한 콘도 예약·신청 챗봇 구축 (0) | 2023.05.17 |
---|---|
[EDA] 탐색적 데이터 분석 (0) | 2023.05.13 |
[AI] Chat GPT(Chat Generative Pre-trained Transformer) (0) | 2023.05.09 |
[AI] RNN 알고리즘을 통해 코로나 19 확진자 수를 예측하는 인공지능 모델 (0) | 2023.05.09 |
[Data Analysis] 판다스 - 시리즈, 데이터프레임 (0) | 2023.05.03 |