交叉熵与softmax函数

交叉熵与softmax函数

在神经网络中,在对超参数进行优化过程当中,需要有一个优化的目标值,也就是真实值与预测值之间的差距要尽量小,差距越小说明预测越精确。这个差距往往用loss表示

在分类问题当中,我们用交叉熵来表示这个loss值。

1. 熵的概念

熵是物理学中的一个名词,表示体系混乱的程度,越混乱熵越大。在神经网络中,交叉熵越大说明预测的越不准确,越混乱。

2. 交叉熵的计算公式

H y ( y ) = i = 0 n y i l o g ( y i ) H_{y'}(y) = -\sum_{i=0}^n{y'_ilog(y_i)}

其中 y i y'_i 就是真实值, y i y_i 为预测的结果概率

3. 二分类问题

假设真实结果:

  • A’ 发生的概率为0
  • B’ 的概率为1

方法一:预测的结果为:

  • A发生的概率为0.4
  • B发生的概率为0.6

则他们的交叉熵就为:

( 0 l o g 0.4 ) 1 l o g 0.6 = 0.222 -(0*log0.4) - 1*log0.6 = 0.222

方法二:预测的结果为:

  • A发生的概率为0.1
  • B发生的概率为0.9

则他们的交叉熵就为:

( 0 l o g 0.1 ) 1 l o g 0.9 = 0.046 -(0*log0.1) - 1*log0.9 = 0.046

经过计算,方案二的交叉熵比方案一的小,这也和我们预期的一样,方案二的预测结果的确更加精确

4. 多分类问题

在多分类问题当中,我们假设5分类,真实结果为:

  • A’ 发生的概率为 0
  • B’ 发生的概率为 0
  • C’ 发生的概率为 0
  • D’ 发生的概率为 0
  • E’ 发生的概率为 1

在计算交叉熵前,我们要确保预测的所有结果满足概率和为1,但是往往,我们通过神经网络计算出来的结果并不满足这样的条件。这时候就需要softmax函数帮忙了。

4.1. softmax函数

  • softmax能够计算出每个值在所有值中的大小比重,得出该事件的概率
  • 并且保证所有事件的概率和为1

4.1.1. softmax公式

S i = e i j = 0 n e j S_i=\frac{e^i}{\sum_{j=0}^n e^j}

其中,i为第i个事件对应的神经网络计算出的值, S i S_i 就是第i个事件在所有事件中的概率了

4.1.2. 简单应用

在多分类问题当中,我们假设5分类,计算出的结果为:

  • A 预测的概率为 1
  • B 预测的概率为 4
  • C 预测的概率为 0.6
  • D 预测的概率为 0.1
  • E 预测的概率为 9

很显然这5个事件的概率和并不为1,不能直接使用交叉熵进行计算,先通过softmax函数进行适当的缩放,使得他们的概率和为1

j = 0 n e j = e 1 + e 4 + e 0.6 + e 0.1 + e 9 = 8163.33 S A = e 1 8163.33 = 0.0003 S B = e 4 8163.33 = 0.0067 S C = e 0.6 8163.33 = 0.0002 S D = e 0.1 8163.33 = 0.0001 S E = e 9 8163.33 = 0.9923 S A + S B + S C + S D + S E = 1 , s o f t m a x \sum_{j=0}^n e^j = e^1 + e^4 + e^{0.6} + e^{0.1} + e^9 = 8163.33\\ S_A = \frac{e^1}{8163.33}=0.0003\\ S_B = \frac{e^4}{8163.33}=0.0067\\ S_C = \frac{e^{0.6}}{8163.33}=0.0002\\ S_D = \frac{e^{0.1}}{8163.33}=0.0001\\ S_E = \frac{e^9}{8163.33}=0.9923\\ 显然S_A+S_B+S_C+S_D+S_E=1,softmax函数成功实现功能

4.2. 求交叉熵

有了softmax函数的转换,多分类问题求交叉熵就容易了,和二分类别无二致。

( 0 l o g 0.0003 ) 0 l o g 0.0067 0 l o g 0.0002 0 l o g 0.0001 1 l o g 0.9923 = 0.0034 -(0*log0.0003) - 0*log0.0067 - 0*log0.0002 - 0*log0.0001 - 1 * log0.9923= 0.0034

这个计算结果已经很小了,说明系统预测的这个结果还是很精确的。并且系统预测E的概率0.9923,实际E的概率为1,也的确很精确了。

猜你喜欢

转载自blog.csdn.net/weixin_43003274/article/details/83446498