神经网络分类、回归的损失函数

神经网络模型的效果以及优化目标是通过损失函数(loss function)来定义的。

分类问题和回归问题有很多经典的损失函数。

分类问题和回归问题是监督学习的两大种类。

分类问题

分类问题希望解决的是将不同的样本分到事先定义好的类别中。再这种问题下,需要将样本二分类(多分类)。手写字体识别就是一个十分类的问题。

再判断二分类问题的时候,可以定义一个有单个输出节点的神经网络,当这个节点输出越接近1(或者设定的其他条件)就越可能是合格这类(或定义的其他类),越接近0(或其他条件),就越可能是另一个类。为了给出具体的分类,通常需要给出一个阈值。然而这样的做法并不容易推广到多分类的问题,虽然设置多个阈值理论上是可能的,但是实际问题上并不容易操作。

通过神经网络解决多分类问题最常用的方法设置n个输出节点,其中n为类别的个数,每一个样例,神经网络可以得到一个n维数组作为输出结果。数组终端每一个维度(也就是每一个输出节点)对应一个类别。

以识别数字为例:

再理想情况下,如果一个样本属于类别k,那么这个类别所对应输出结果越接近[0,0,0,0,1,0,0,0,0,0]越好。那么如何判断一个输出向量和期望的向量有多接近呢?

交叉熵(cross entropy)

交叉熵是常用的评判方法之一。交叉熵刻画了两个概率分布之间的距离,他是分类问题中使用比较广泛的损失函数。

交叉熵是信息论中的概念,它原本是用来估算平均编码长度的。

给定两个概率分布p和q,用q来表示p的交叉熵为:

注意交叉熵刻画的是两个概率分布之间的距离,然而神经网络的输出却不一定是一个概率分布。概率分布刻画了不同事件发生的概率。当事情总数是有限的情况下,概率分布函数p(X=x)满足:

也就是说,任意事件发生的概率都在[0,1]之间,且总有某一个事件发射那个(概率和为1)。如果将分类问题中“一个样例属于某一类别”看成一个概率事件,那么训练数据的正确答案就符合一个概率分布。因为事件“一个样例属于不正确的类别”的概率为0,而“一个样例属于正确的类别”概率为1.

如何将神经网络前向传播得到的结果也变成概率分布呢?

Softmax回归就是一个很常用的方法。

Softmax回归本身可以作为一个学习算法来优化分类结果,但在Tensorflow中,Softmax回归的参数被去掉了,它至少一层额外的处理层,将神经网络的输出变成一个概率分布。

神经网络分类、回归的损失函数_第1张图片

回归问题

与分类问题不同,回归问题解决的是对具体数值的预测。这些问题需要预测的不是一个事先定义好的类别,而是一个任意实数。解决回归问题的神经网络一般只有一个输出节点,这个节点的输出值是预测值。对于回归问题,最常用的损失函数是均方误差(MSE,mean squared error):

其中y是正确数据,而y’是神经网络给的预测值。

mse=tf.reduce_mean(tf.square(y_-y)),其中y代表了神经网络的输出答案,y_代表了标准答案。

作者:7125messi

链接:https://www.jianshu.com/p/7c678e585c98

來源:

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(神经网络分类、回归的损失函数)