Softmax function

알고자하는 목표 값이 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