티스토리 뷰

"밑바닥부터 시작하는 딥러닝"을 읽고 작성한 게시글입니다. 

 

머신러닝 문제는 크게 분류(classification)과 회귀(regression)으로 나눠진다. 

출력층의 활성화 함수(output layer function)가 

 

Regression에서는 항등함수를,

2클래스 Classification에서는 시그모이드 함수를,

다중 Classification에서는 소프트맥스 함수를 사용하는것이 일반적이다.

 

오늘은 그 중에서 다중 클래스 분류에 쓰이는 softmax function을 (주로) 다뤄보려고 한다. 

 

1. Identity Function

말그대로 input과 output이 identical한 함수이다. 

$ f(x) = x $

 

2. Softmax Function

$ y_k = \frac{e^{a_k}}{\sum_{i=1}^{n}(e^{a_i})} $

 

 

 

 

 

 

 

 

 

 

3. Softmax Loss Function

 

 

softmax함수의 값은 0과 1사이의 값을 리턴한다. 

그러므로 Loss를 구할 때 그냥 log를 씌워주면 -의 값이 나온다. 

그래서 -를 붙인 -log()함수를 이용하기로 약속한 것이다. 

 

이게 약속이다. 

그래프 상에서도 정답인 애의 값이 크면, loss가 작아지는 모습을 볼 수 있다. 만약 정답인 애만 값이 있고 나머지는 다 0으로 예측했다면 loss는 -log(1), 0이다.

 

4. Softmax의 구현 

import numpy as np

arr= [1.0, 1.2, 1.4, 2, 1, 3, 1.5, 1.2, 1.4, 2, 1]
bunmo = np.sum(np.exp(arr))
print(np.exp(arr) / bunmo)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함