알고자하는 목표 값이 yes or no 식의 classification이 아니라고 한다면 어떻게 분리 해야하는가.
Softmax 어떤 결과 값이 나올 수 있는 확률적 수치를 알려줄 수 있다.
예를 들자면 사과 2개, 바나나 1개, 파인애플 0개가 있다고 할 때
사과를 한번 뽑을 수 있는 확률은?
$$ y = \frac{2}{2+1+0} $$
이 될 수 있다.
하지만 만약 음수의 값을 갖게 된다면 문제가 발생 할 수 있다. 파인애플이 -3개라면?
이러한 문제를 해결하기 위해서 음수의 값이 수학적으로 나올 수 없는 exponential을 사용해서 계산을 하게 된다.
$$ y = \frac{e^2}{e^2+e^1+e^0} $$
사과는 66%, 바나나는 24%, 파인애플은 9%가 된다.
코드로는 아래와 같다.
import numpy as np
# Write a function that takes as input a list of numbers, and returns
# the list of values given by the softmax function.
def softmax(L):
under = 0
for x in L:
under += np.exp(x)
rst = []
for x in L:
rst.append(np.exp(x)/under)
return rst
list = np.array([2,1,0]);
softmax(list)
728x90
반응형
'AI' 카테고리의 다른 글
Error Function (0) | 2021.07.18 |
---|---|
Maximizing Probabilities, Cross Entropy (0) | 2021.07.18 |
Sigmoid Function (0) | 2021.07.17 |
Perceptron Algorithm 코드 (0) | 2021.07.17 |
Object Orient Programing (0) | 2021.07.04 |