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 normalizationexponentiate logitsturn 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

 

posted @ 2019-12-04 17:16  潇碧叶  阅读(576)  评论(0编辑  收藏  举报