损失函数

一、 什么是损失函数
任何模型训练的第一步是明确损失函数。模型训练过程无非就是在优化损失函数,从而找到让损失函数最小的模型的参数
损失函数是衡量网络输出合真实值的差异
损失函数并不使用测试数据来衡量网络的性能
损失函数用来指导训练过程,使得网络的参数向损失降低的方向改变
假设我们的神经网络用作分类,损失函数定义为交叉熵损失函数,当神经网络的输出层做了softmax,输出当前的输入,对应各个类别的概率,选取概率最高的类别,最后再通过交叉熵损失函数来检测当前神经网络输出的类别与真实标签的类别是否一致,从而反向调整网络

二、 绝对误差函数(Absolute value、L1-norm)

神经网络逼近误差与 神经网络误差函数公式_深度学习

该函数进行求导,求出的梯度都是恒定的,

即当我们的误差很大时,求出来的梯度也都是恒定的,所以对outliers不敏感

三、 方差函数(Square error,Euclidean loss, L2-norm)

神经网络逼近误差与 神经网络误差函数公式_学习_02

当我们的误差很大时,求出来的梯度也会变大的,所以对outliers敏感

四、 交叉熵Corss-entropy-loss

神经网络逼近误差与 神经网络误差函数公式_深度学习_03

S是softmax函数

K为类别的数量

L为label独热编码标签

将softmax输出的所有概率与对应的独热编码标签进行相乘,最终计算的出损失函数的值,(只有真实标签与相对应的概率进行计算)

神经网络逼近误差与 神经网络误差函数公式_神经网络_04

求导计算:

神经网络逼近误差与 神经网络误差函数公式_学习_05


神经网络逼近误差与 神经网络误差函数公式_损失函数_06

五、 Multi-label分类

神经网络逼近误差与 神经网络误差函数公式_神经网络_07

类别之间不是互斥的,可以同属于多个类别

最后输出层不使用softmax,而是单独使用Sigmoid,最后为输出的概率,

假设最后输出三个值,分别为x1=9,x2=8,x3=6, 将x1,x2,x3,分别使用Sigmoid,得出的概率分别是0.6,0.7,0.8,那么意味着,输入属三个类别的概率是多少,与softmax不同的是概率之和不等于1。

神经网络逼近误差与 神经网络误差函数公式_损失函数_08

K等于标签类别的合集
累加属于真实值标签的输出值,加上不属于该标签的输出值。