关于损失函数宽泛而准确的数学定义,我感觉我不会说得比 Wiki 更好,所以这一章主要还是介绍一些神经网络中常用的损失函数。然而即使把范围限制在 NN,如何选、为何选相应的损失函数仍然是一个不平凡的数学问题。囿于时间(和实力)、这一章讲的主要是几个损失函数的定义、直观感受和求导方法。 从名字上可以看出,损失函数是模型对数据拟合程度的反映,拟合得越差、损失函数的值就应该越大。同时我们还期望,损失函数在比较大时、它对应的梯度也要比较大,这样的话更新变量就可以更新得快一点。我们都接触过的“距离”这一概念也可以被用在损失函数这里,对应的就是最小平方误差准则(MSE): 其中G是我们的模型、它根据输入矩阵X输出一个预测向量G(X) 这个损失函数的直观意义相当明确:预测值G(X)和真值Y的欧式距离越大、损失就越大,反之就越小。它的求导也是相当平凡的: 其中 w 是模型G中的一个待训练的参数 由于 MSE 比较简单、所以我们能够从一般意义上来讨论它。为便于理解,以下的部分会结合 NN 这个特定的模型来进行阐述。回顾 BP 算法章节中的式子: 这里的 注意到上式的最后除了损失函数自身的导数以外、还有一项激活函数(https://en./wiki/Activation_function)的导数。事实上,结合激活函数来选择损失函数是一个常见的做法,用得比较多的组合有以下四个:
可见其确实满足要求 以上、大概讲了一些损失函数相关的基本知识。下一章的话会讲如何根据梯度来更新我们的变量、亦即会讲如何定义各种 Optimizers 以及会讲背后的思想是什么。可以想象会是一个相当大的坑…… 希望观众老爷们能够喜欢~ |
|