神经网络——损失函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kwame211/article/details/86167525

开始之前我们先进入数字识别这样一个场景:以识别数字1为例,神经网络模型的输出结果越接近[0,1,0,0,0,0,0,0,0,0]越好。神经网络解决多分类的问题,最常见的方法是设置n个输出节点,其中n类别个数,那么上述数字判断就应该有n=10个输出。那么如何判断一个输出向量和期望向量的接近程度呢?交叉熵(Cross entropy)是常用的评判方法之一,其实交叉熵刻画了两个概率分布之间的距离,它是分类问题中试用比较广泛的一种损失函数。

通过以上场景我们对损失函数有了一个基本的概念,但是神经网络的输出却不一定是一个概率分布,概率分布不能够刻画不同事件发生的概率,Softmax可以将神经网络的输出变成一个概率分布。给定两个概率分布p和q,通过q来表示p的交叉熵为:

                                                                         

若原始的神经网络输出为,那么进过Softmax回归处理之后输出为:

                                                  

以上公式中神经网络输出被用作置信度来生成新的输出,而新的输出满足概率分布的所有要求,这样就把一个神经网络的输出转换成为了一个概率分布,也就可以通过交叉熵的计算预测概率分布和真实答案分布之间的距离了。假设一个三分类问题,某个样例的正确答案是(1,0,0),某一个模型经过Softmax回归之后的预测答案是(0.5,0.4,0.1)那么整个预测和正确答案之间的交叉熵为:

                    

如果另外一个模型的预测值时(0.8,0.1,0.1)那么预测值和真实值之间的交叉熵是:

                    

故,交叉熵越小那么预测结果和真实结果就越接近。

与分类问题不一样,回归问题解决的是对具体数值的预测。比如房价预测,销售预测等都是回归问题。这些问题是不需要事先定义好类别,而是任意一个实数。解决回归问题的神经网络一般只有一个输出节点,这个节点输出就是预测值。这种问题最常见的损失函数为(MSE mean squared error):

                                                 

为一个batch中第i个数据的正确答案,而为神经网络输出的预测值。
 

猜你喜欢

转载自blog.csdn.net/kwame211/article/details/86167525