信息论和交叉熵损失函数

同步csdn地址:数组

blog.csdn.net/soullines/a…网络

在机器学习和深度学习中,不少时候须要进行分类,这时会涉及到决策边界,好比sigmod激活函数; 可是当面对多分类的时候(好比经典的MNIST),咱们须要预测每个种类output的几率,好比softmax,这时候咱们须要对: 信息论和交叉熵有一个清晰的认识 那么咱们的文章将会对 信息论和交叉熵损失函数 进行一个讲解;机器学习

1.信息论函数

2.自信息学习

3.香农熵.net

4.交叉熵blog

1.信息论

1.1 信息论是从物理学中借鉴过来的,咱们只讲其数学意义:

其实信息论是一种用来描述 几率分布或者蒋几率分布之间的类似性 的一种思想 信息论的核心思想就是用来表示 意外程度 ,即小几率事件发生的信息量大事件

  • 1.必然事件的信息量为0
  • 2.事件发生的几率越小,其提供的信息量就越大
  • 3.信息是具备增量的特征的,即同一事件,发生一次的信息量是 I ,则重复投递两次的信息量是 2I 那么为了实现咱们的目的 将几率事件的信息量进行量化

2.自信息

就是单个事件的信息量的量化值图片

咱们构建这样一个公式:get

I(x) = -log(p(x))
  • 这里P(x)就是随机事件 X = x 时候事件发生的几率
  • log对数函数式增函数,那么-log函数就是减函数,这样构建出来的函数就实现了咱们的某种目的,随着几率的减少,信息量就越大 可是自信息仅能预测一个事件的信息量
  • I(x)的单位是奈特 nat,就是说1nat表明以1/e几率的一个事件的自信息量

3.香农熵

每每在咱们的实际应用中咱们须要使用 香农熵 来对整个事件几率分布中的不肯定性总量进行量化

在这里咱们能够借鉴 随机变量X的数学指望的求值公式

E(X) = \sum_{k = 1}^{∞}x_kp_k

这里的香农熵其实能够看作是: 信息量I(x)的数学指望的求值公式

H(X) = \sum_{k = 1}^{n}p_klog(p_k)
  • 这里k是类别,n表明总类别

下面咱们举例说明:

  • 数组1: 111111

  • 数组2: 111222

  • 数组3: 112233

咱们来算数组1 ,2 和 3的香农熵

H(1)=-1*log(p(1)) = 1 * 0= 0

H(2)=-1/2*log(p(1)) + (-1/2*log(p(2)) =  -1/2 * In1/2 +1/2 * In1/2  ≈  0.7

H(3)=-1/3*log(p(1)) + (-1/3*log(p(2)) +  (-1/3*log(p(3))  ≈ 1

这样来看数组1的香农熵为0,则为必然事件,数组2居中,数组3最大,则其几率分布的几率最小

4.交叉熵

前面咱们有讲到 自信息香农熵 那么如何用到机器学习和深度学习中呢,不着急慢慢往下看 咱们记得以前在多类别分类的模型中咱们有用到 softmax 进行每一个类别几率估计,而后取最大几率作为预测值 而当咱们反向更新softmax为激活函数的模型或者神经网络时候,是将交叉熵作为loss函数进行梯度调节的

那么让咱们聚焦交叉熵 在这以前咱们须要看下KL散列,这是基于香农熵用来衡量对于同一个随机变量X的两个单独分布P(X)Q(X)的差别的途径:

D_{kl}(P||Q) = E_{x-p}[log(P(x)/Q(x))] = E_{x-p}[log(P(x))-log(P(x))]

可是在深度学习中咱们使用KL散列的变形,也就是交叉熵来做为某些场景的loss函数,即:

H(P,Q) = H(P) + D_{KL}(P||Q)

根据KL散列咱们队上述公式进行变形:

H(P,Q) = -E_{x-p}[logP(x)] + E_{x-p}[logP(x)] - E_{x-p}[logQ(x)]

通过变形就获得:

H(P,Q) =  - E_{x-p}[logQ(x)]

接着,咱们变化成易于理解的loss函数

H(P,Q) =  \sum_{x}P(x)logQ(x)

到这里咱们看到了咱们熟悉的成本函数,softmax回归分类器的成本函数

接着咱们探讨为何使用这个成本函数

主要是softmax等多分类器,在评估真实值(y)和预测值(y^{excpt})距离时,更多的是在评估几率之间的距离,这样使用传统的均方根偏差作为loss函数毫无心义

咱们来举个例子(以MNIST为例: 识别0~9的数字图片): 假设输出层是softmax为激活函数:

那么咱们假设用两组标签相同的实例 AB 来进行分析 首先咱们的label都是0,因此真实值得向量组合是(1,0,0,0,0,0,0,0,0,0)

  • A的预测值向量组合(0.9,0.2,0.1,0,0,0,0,0,0,0)
  • B的预测值向量组合(0.8,0,0.1,0,0.5,0,0,0,0,0)

接着算A和B的交叉熵(也就是loss函数) :

H(P,Q) = -(1* log(0.9) + 0 * log(0.2) + 0 *log(0.1) + 7 * (0 * log(0)) ≈ 0.1
H(P,Q) = -(1* log(0.8) + 0 * log(0.1) + 0 *log(0.5) + 7 * (0 * log(0)) ≈ 0.2
  • P表明真实值
  • Q表明预测值 由于 0.1 < 0.2,因此明显第一组要因为第二组

补充一点:交叉熵H(P,Q)不是对称的,因此H(P,Q) ≠ H(Q,P)因此要注意P和Q的顺序,一版状况下,P表明真实值,Q表明预测值

最近很热,你们谨防中暑,可是学习不能断 ^^

相关文章
相关标签/搜索