损失函数

左心房为你撑大大i 提交于 2020-01-17 11:41:24

其中y为标签,(a=σ(Wx+b))为神经元实际输出。

1.  平方损失函数

一般回归问题会使用此损失,离群点对他的效果影响较大。

$C=\frac{1}{2}(a-y)^2$

也就是说,当神经元的实际输出与我们的期望输出差距越大,代价就越高。对应的对各个参数的导数如下,可以发现我其中都有σ′(a)这一项。

$C=\frac{\partial{C}}{\partial{W}}(a-y)σ′(a)x^T$

$C=\frac{\partial{C}}{\partial{W}}(a-y)σ′(a)$

2.交叉熵损失函数

分类问题因为输出的是概率,故而一般使用的是此损失,当然他可以解决梯度消失。

交叉熵函数的形式是−[ylna+(1−y)ln(1−a)]而不是 −[alny+(1−a)ln(1−y)],为什么?

因为当期望输出的y=0时,lny没有意义;当期望y=1时,ln(1-y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。 

当真实输出a与期望输出y接近的时候,代价函数接近于0。

$H(y)=-\sum\limits_{i=1}y_{i}log(y_{i})$ 

而在实际操作中,我们并不知道y的分布,只能对y的分布做一个估计,也就是算得的a值, 这样我们就能够得到用a来表示y的交叉熵.

$H(y,a)=-\sum\limits_{i=1}y_{i}log(a_{i})$ 

其中n表示样本编号,i表示类别编号。 如果用于logistic分类,则上式可以简化成

$H(y,a)=-\frac{1}{n}\sum\limits_{n}ylog(a)+(1-y)log(1-a)$

如下是交叉熵的导数,可以看到其中没有了σ′这一项,这样一来也就不会受到饱和性的影响了。

$H′=\frac{1}{n}\sum(a_n-y_n)=\frac{1}{n}\sum(\sigma(z_n)-y_n)$ 

3.对数损失函数 

$L(y,h(x))=log(1-exp(yh(x)))$

4.绝对损失函数

$L(y,h(x))=|y-h(x)|$ 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!