softmax
1、what ?
Softmax function, a wonderful activation function that turns numbers aka logits into probabilities that sum to one. Softmax function outputs a vector that represents the probability distributions of a list of potential outcomes.
2、how ?
two component
special number e & sum
3、Why not just divide each logits by the sum of logits? Why do we need exponents?
When logits are negative, adding it together does not give us the correct normalization. exponentiate
logits
turn them them zero or positive! 参考补充知识Logits。
4、python 实现代码:
import numpy as np def softmax(logits): ## 以e 为底,list 元素为指数,求幂次方 ,python 方法 np.exp exps = [np.exp(logit) for logit in logits] # 求指数和 sum_of_exps = sum(exps) #利用softmax公式,y_i/y_j softmax = [j / sum_of_exps for j in exps] return softmax if __name__ == '__main__': # print(np.exp(-100)) logits = [2.0, 1.0, 0.1] softmax = softmax(logits) print(softmax)
补充知识:
1、对数
2、自然对数:以常数e为底数的对数,记作lnN(N>0)
3、Odds 与 probability
概率(Probability)和Odds都是用来描述某件事情发生的可能性的。
概率是一个0到1之间的实数;表示一定不会发生,而则表示一定会发生。
Odds指的是事件发生的概率与事件不发生的概率之比。
事件A的Odds 等于 事件A出现的次数 和 其它(非A)事件出现的次数 之比;相比之下,事件A的概率 等于 事件A出现的次数 与 所有事件的次数 之比。
概率的变化范围是,而Odds的变化范围是。再进一步,如果对Odds取自然对数,lnOdds范围为。换句话就是将概率P从范围映射到。
4、Logits
Odds的对数称之为Logit。取之范围
参考资料:
https://medium.com/data-science-bootcamp/understand-the-softmax-function-in-minutes-f3a59641e86d
https://zhuanlan.zhihu.com/p/27188729