其中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)|$
来源:https://www.cnblogs.com/AntonioSu/p/12204553.html