如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据。但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标来评价它的拟合程度,所使用到的函数就称为损失函数(Loss Function),当损失函数值下降,我们就认为模型在拟合的路上又前进了一步。最终模型对训练数据集拟合的最好的情况是在损失函数值最小的时候,在指定数据集上时,为损失函数的平均值最小的时候。

交叉熵损失函数(Cross Entropy)

在物理学中,“熵”被用来表示热力学系统所呈现的无序程度。香农将这一概念引入信息论领域,提出了“信息熵”概念,通过对数函数来测量信息的不确定性。

交叉熵(cross entropy)是信息论中的重要概念,主要用来度量两个概率分布间的差异。假定 深度学习 loss函数 loss函数是什么_深度学习深度学习 loss函数 loss函数是什么_深度学习 loss函数_02 是数据 深度学习 loss函数 loss函数是什么_数据_03 的两个概率分布,通过 深度学习 loss函数 loss函数是什么_深度学习 loss函数_02 来表示 深度学习 loss函数 loss函数是什么_深度学习 的交叉熵可如下计算:深度学习 loss函数 loss函数是什么_人工智能_06交叉熵刻画了两个概率分布之间的距离,旨在描绘通过概率分布 深度学习 loss函数 loss函数是什么_深度学习 loss函数_02 来表达概率分布 深度学习 loss函数 loss函数是什么_深度学习 的困难程度。根据公式不难理解,交叉熵越小,两个概率分布 深度学习 loss函数 loss函数是什么_深度学习深度学习 loss函数 loss函数是什么_深度学习 loss函数_02

这里仍然以三类分类问题为例,假设数据 深度学习 loss函数 loss函数是什么_数据_03 属于类别 1。记数据 深度学习 loss函数 loss函数是什么_数据_03 的类别分布概率为 深度学习 loss函数 loss函数是什么_深度学习 loss函数_13,显然 深度学习 loss函数 loss函数是什么_数据_14代表数据 深度学习 loss函数 loss函数是什么_数据_03 的实际类别分布概率。记 深度学习 loss函数 loss函数是什么_人工智能_16

那么对于数据 深度学习 loss函数 loss函数是什么_数据_03 而言,其实际类别分布概率 深度学习 loss函数 loss函数是什么_深度学习 loss函数_13 和模型预测类别分布概率 深度学习 loss函数 loss函数是什么_机器学习_19 的交叉熵损失函数定义为:
深度学习 loss函数 loss函数是什么_机器学习_20

很显然,一个良好的神经网络要尽量保证对于每一个输入数据,神经网络所预测类别分布概率与实际类别分布概率之间的差距越小越好,即交叉熵越小越好。于是,可将交叉熵作为损失函数来训练神经网络。

深度学习 loss函数 loss函数是什么_深度学习 loss函数_21


上图给出了一个三个类别分类的例子。由于输入数据 深度学习 loss函数 loss函数是什么_数据_03 属于类别 1,因此其实际类别概率分布值为 深度学习 loss函数 loss函数是什么_人工智能_23。经过神经网络的变换,得到了输入数据 深度学习 loss函数 loss函数是什么_数据_03 相对于三个类别的预测中间值 深度学习 loss函数 loss函数是什么_数据_25。然后,经过 Softmax 函数映射,得到神经网络所预测的输入数据 深度学习 loss函数 loss函数是什么_数据_03 的类别分布概率 深度学习 loss函数 loss函数是什么_人工智能_27。根据前面的介绍,深度学习 loss函数 loss函数是什么_深度学习_28为 (0,1) 范围之间的一个概率值。由于样本 深度学习 loss函数 loss函数是什么_数据_03 属于第一个类别,因此希望神经网络所预测得到的 深度学习 loss函数 loss函数是什么_人工智能_30取值要远远大于 深度学习 loss函数 loss函数是什么_数据_31深度学习 loss函数 loss函数是什么_机器学习_32 的取值。为了得到这样的神经网络,在训练中可利用如下交叉熵损失函数来对模型参数进行优化:深度学习 loss函数 loss函数是什么_人工智能_33在上式中,深度学习 loss函数 loss函数是什么_深度学习_34深度学习 loss函数 loss函数是什么_深度学习_35 均为 0、深度学习 loss函数 loss函数是什么_人工智能_36 为 1,因此交叉熵损失函数简化为:深度学习 loss函数 loss函数是什么_数据_37在神经网络训练中,要将输入数据实际的类别概率分布与模型预测的类别概率分布之间的误差(即损失)从输出端向输入端传递,以便来优化模型参数。下面简单介绍根据交叉熵计算得到的误差从 深度学习 loss函数 loss函数是什么_人工智能_30 传递给 深度学习 loss函数 loss函数是什么_机器学习_39深度学习 loss函数 loss函数是什么_数据_40深度学习 loss函数 loss函数是什么_数据_41 的推导与 深度学习 loss函数 loss函数是什么_数据_40 相同)的情况。深度学习 loss函数 loss函数是什么_机器学习_43由于交叉熵损失函数 深度学习 loss函数 loss函数是什么_人工智能_44深度学习 loss函数 loss函数是什么_人工智能_30 求导的结果为 深度学习 loss函数 loss函数是什么_人工智能_46深度学习 loss函数 loss函数是什么_深度学习 loss函数_47深度学习 loss函数 loss函数是什么_人工智能_46 相乘的结果为 深度学习 loss函数 loss函数是什么_深度学习_49 这说明一旦得到模型预测输出 深度学习 loss函数 loss函数是什么_人工智能_30,将该输出减去1就是交叉损失函数相对于 深度学习 loss函数 loss函数是什么_机器学习_39 的偏导结果。深度学习 loss函数 loss函数是什么_深度学习_52同理,交叉熵损失函数导数为 深度学习 loss函数 loss函数是什么_人工智能_46深度学习 loss函数 loss函数是什么_数据_54深度学习 loss函数 loss函数是什么_人工智能_46 相乘结果为 深度学习 loss函数 loss函数是什么_数据_31。这意味对于除第一个输出节点以外的节点进行偏导,在得到模型预测输出后,只要将其保存,就是交叉损失函数相对于其他节点的偏导结果。在 深度学习 loss函数 loss函数是什么_机器学习_39深度学习 loss函数 loss函数是什么_数据_40深度学习 loss函数 loss函数是什么_数据_41得到偏导结果后,再通过链式法则(后续介绍)将损失误差继续往输入端传递即可。

在上面的例子中,假设所预测中间值 深度学习 loss函数 loss函数是什么_数据_25 经过 Softmax 映射后所得结果为 深度学习 loss函数 loss函数是什么_机器学习_61。由于已知输入数据 深度学习 loss函数 loss函数是什么_数据_03 属于第一类,显然这个输出不理想而需要对模型参数进行优化。如果选择交叉熵损失函数来优化模型,则 深度学习 loss函数 loss函数是什么_数据_25 这一层的偏导值为 深度学习 loss函数 loss函数是什么_人工智能_64

可以看出,Softmax 和交叉熵损失函数相互结合,为偏导计算带来了极大便利。偏导计算使得损失误差从输出端向输入端传递,来对模型参数进行优化。在这里,交叉熵与 Softmax 函数结合在一起,因此也叫 Softmax 损失(Softmax with cross-entropy loss)。

均方差损失(Mean Square Error,MSE)

均方误差损失又称为二次损失、L2损失,常用于回归预测任务中。均方误差函数通过计算预测值和实际值之间距离(即误差)的平方来衡量模型优劣。即预测值和真实值越接近,两者的均方差就越小。

假设有 深度学习 loss函数 loss函数是什么_数据_65 个训练数据 深度学习 loss函数 loss函数是什么_数据_66,每个训练数据 深度学习 loss函数 loss函数是什么_数据_66 的真实输出为 深度学习 loss函数 loss函数是什么_深度学习 loss函数_68,模型对 深度学习 loss函数 loss函数是什么_数据_66 的预测值为 深度学习 loss函数 loss函数是什么_人工智能_70。该模型在 深度学习 loss函数 loss函数是什么_数据_65 个训练数据下所产生的均方误差损失可定义如下:深度学习 loss函数 loss函数是什么_深度学习 loss函数_72假设真实目标值为100,预测值在 -10000 到 10000 之间,绘制MSE函数曲线如下图所示。可以看到,当预测值越接近100时,MSE损失值越小。MSE损失的范围为 0 到 深度学习 loss函数 loss函数是什么_数据_73

深度学习 loss函数 loss函数是什么_机器学习_74