重要概念:Softmax 和 Corssentropy 详解

2020-05-27  本文已影响0人  何哀何欢

总结:
  Softmax就是将数值转为概率
  交叉熵就是求两组概率分布的偏差

x, y如下::
x \in [0 , \infty)
y \in [-\infty, \infty]

x 可以看作是 x =e^y
y 可以看作是 y = \log_ex
yx的log值, x越大y越大。

log( [0, 1) ) log( 1 ) log( (1, ) )
- 0 +
  • 求log就是把正整数放大到\pm\infty (log扩:概率到结果)
  • 求e幂就是把\pm\infty缩到正整数/概率 (e幂缩:结果到概率)
    助记:老公阔 杨幂锁(老公有钱,把杨幂锁在家里)

x可以看作是odds,范围[0 , \infty) 概率/odds/logits
于是,一堆任意数y,转化为概率分布,路径就是:
一堆任意数y \rightarrow odds \rightarrow 各odds的概率
(因为所有y是全体样本,所以结果也是概率分布)

项目 评估值m odds = e^m softmax(m)
-0.1 0.368 0.067
2 7.39 0.548
0.5 1.649 0.122
1 2.718 0.202
-0.2 0.819 0.061
总和 12.9 1

softmax = \frac{e^{m_i}}{\sum e^{m_j}}


一组数据的真实情况有了,NN也给出了它的猜测概率,那么如何计算偏差呢?
先来看一个猜对的例子,NN猜测是“狼”,所以狼给出的概率最高,最后真实情况也是狼(为1):

项目 猜测概率
(“是”的概率)
“非”的概率
(1减“是”)
真实情况 Y
(是:1 非:0)
选定的猜
测概率 (x)
ln(x)
0.05 0.95 0 (选无) 0.95 -0.051
0.1 0.9 0 0.9 -0.105
0.7 0.3 1 (选有) 0.7 -0.357
0.1 0.9 0 0.9 -0.105
0.05 0.95 0 0.95 -0.051
总和 1 -0.67

计算整体情况,可以用加法,也可以用乘法。加法上不封顶,突破天际,不利于衡量。所以改用乘法,将真实概率(x)相乘:

\prod x= 0.95\times 0.9\times 0.7\times 0.9\times 0.95 \approx 0.512

但是概率在[0 , 1]间,如果项多了以后,结果会非常小,又不利于评判。于是,乘法转加法的法宝,log登场了:

ln0.95+ ln0.9+ln0.7+ln0.9+ln0.95\approx ln0.512\approx -0.67
取个反:-0.67\times-1 = 0.67

再看另一个猜错的例子,NN猜测为狼,而实际是猪:

项目 p有 p无 Y x ln(x)
0.05 0.95 1 0.05 -2.996
0.1 0.9 0 0.9 -0.105
0.7 0.3 0 0.3 -1.204
0.1 0.9 0 0.9 -0.105
0.05 0.95 0 0.95 -0.051
总和 1 -4.462

结果是 -4.462\times-1=4.462
所以上面的两个概率表,可以理解为:计算机猜测出某个动物是狼的可能性,要远大于其他几个动物,然而正确的结果如果也是狼,那CE为0.67,很小,基本就猜对了。如果正确的结果是猪,那说明猜错了,CE为4.462,很大。

在backward的时候,就要提高NN输出正确结果的数值(概率)。

公式也就出来了:
Y_i= \begin{cases} 1, \quad if\; yes \\0, \quad if\; no \end{cases}

CrossEntropy = - \sum Y_i ln(p_i) + (1-Y_i)ln(1-p_i)

Y可以看作是一个选择器,其实就是用Y去选,究竟用哪个x,用“是”的,还是“非”的,然后算ln求和:

上一篇下一篇

猜你喜欢

热点阅读