(1)神经网络中的神经元的输出:
(2)梯度下降算法:
(3)随机梯度下降:(每次训练完一个batch后,进行一次参数更新)
(4)反向传播:
(5)momentum:
是梯度下降法中一种常用的加速技术。对于一般的SGD,其表达式为,
沿负梯度方向下降。而带momentum项的SGD则写生如下形式:
(6)学习率:
(7)weight decay:
weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。
(8)
在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。从这个定义中,我们很难理解交叉熵的定义。下面举个例子来描述一下:
假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:
H(p)=
![](https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D134/sign=f29c291e4136acaf5de092ff48d98d03/ca1349540923dd546f3dcd4fdb09b3de9c82484e.jpg)
但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:
H(p,q)=
![](https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D133/sign=9170a8149b8fa0ec7bc7600e1596594a/37d3d539b6003af3c927b6473f2ac65c1038b67c.jpg)
此时就将H(p,q)称之为交叉熵。交叉熵的计算方式如下:
对于离散变量采用以下的方式计算:H(p,q)=
![](https://gss0.bdstatic.com/94o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D138/sign=8fca88ef104c510faac4e61958582528/30adcbef76094b36a4214dcaa9cc7cd98d109d61.jpg)
对于连续变量采用以下的方式计算:
![](https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D263/sign=3dda5d162b3fb80e08d166d105d12ffb/9d82d158ccbf6c81bc397dcfb63eb13533fa408e.jpg)
可以看到上例中根据非真实分布q得到的平均编码长度H(p,q)大于根据真实分布p得到的平均编码长度H(p)。事实上,根据
Gibbs' inequality
可知,H(p,q)>=H(p)恒成立,当q为真实分布p时取等号。我们将由q得到的平均编码长度比由p得到的平均编码长度多出的bit数称为“相对熵”:D(p||q)=H(p,q)-H(p)=
,其又被称为
KL散度
(Kullback–Leibler divergence,KLD)
Kullback–Leibler divergence
。它表示2个函数或概率分布的差异性:差异越大则相对熵越大,差异越小则相对熵越小,特别地,若2者相同则熵为0。注意,KL散度的非对称性。
![\sum_{i}^{} p(i)*log\frac{p(i)}{q(i)}](https://i-blog.csdnimg.cn/blog_migrate/be68171f25390e3d844bc966c3e9152c.png)
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。
C=−∑