深度学习——损失函数及优化


刚学完用resnet18训练数据实现cifar10分类,现在反过头来发现自己的损失函数,后向传播,梯度下降这一块的概念学的并不是很好,重新学习了一遍。

损失(Loss)

在我们训练模型的过程中,我们需要衡量这一个模型的参数是好还是坏,而衡量这一个模型参数的好坏就是看输出的损失。训练模型的过程中,会输出这一个模型对一个图片分类的预测标签,这一个预测标签和这一个图片的真实标签的差异就是我们所说的损失。

什么是损失函数

而损失,是需要我们计算得到的,这一个计算的方法就是损失函数。
我们用**Li()**函数来代表我们计算这个差异的方法,那么可以得到以下概念。整个数据集的损失因此也得到了。
其中:
Si代表了真实标签,yi代表了预测标签

在这里插入图片描述

在这里,所指的标签代表了一个图象对于所在分类的分类得分,所以这里一个数值
在这里插入图片描述

实际中我们一般用以下的式子来表示损失函数
在这里插入图片描述
正则项的作用有以下几点
1.保证模型的泛化能力。
2.防止模型过拟合训练集

例子:多分类SVM损失

SVM多分类损失

注:图片右侧应该是Sj+1,无-号
计算实例:
在这里插入图片描述

还有很多其他的损失函数,可以看以下两篇博客里面更多的损失函数

https://xiongyiming.blog.csdn.net/article/details/99672818

https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650748392&idx=2&sn=1cc2080bad1cfee17e8f292256742c44&chksm=871

优化(Optimization)

因为深度学习是指电脑自己优化自己的参数,所以优化的过程就是网络不断的优化自己的参数,使得损失函数不断减小,从而达到一个更好的精度的过程。

如何优化

为了让损失下降,我们需要进行优化,而优化的方法有许多:

梯度下降法、牛顿法:泰勒+最小化+更新;
启发式:蚁群、遗传、模拟退火、粒子等;
有约束:拉格朗日乘子法等;
批梯度下降、随机梯度下降法:SGD、Adam等;
这些方法都是上课学到的总述,我们只重点讲解了梯度 下降法,像蚁群,遗传,模拟退火这些都没讲到,大伙可以自行百度学习一下。

而在现在深度学习的过程中,随机梯度下降法是用的最多的

随机梯度下降法

在这里插入图片描述

其中,W就是指网络中的权重即参数。

简单的理解就是我们利用梯度下降法,可以将损失给降低下来,而具体的过程,其实就是涉及了求导的链式法则,这个涉及数学的一些方法,大伙可以继续百度学习

猜你喜欢

转载自blog.csdn.net/scarecrow_sun/article/details/119698134