在网络模型进行训练时,激活函数
、损失函数
、优化器
都会成为影响模型最终效果的关键因素
。其中,激活函数和损失函数根据任务的不同
又有不同的更新,而优化器往往只是优化策略的不同
,即可以在不同的任务
(分类、回归)上使用同一种优化器
、同一优化器参数。
在上一个系列 史上最全激活函数总结篇(持续更新ing…)中详解介绍了各种激活函数,有兴趣的小伙伴可以去看下,顺便提一下建议。
而在这个全新的系列,我会给大家介绍各种各样不同的损失函数
。不同的任务下(分类、回归、生成等)损失函数的使用往往是不同的。因此,也希望大家把自己关注的损失函数可以在评论区留言发给我,后续会对大家提及的损失函数进行介绍和更新。
损失函数是一个数学函数
用来计算预测值
和实际值
之间的损失
(差值、平方等策略)。
注意:这里所说的预测值
和实际值
可以是一个数值、一个类别,也可能是一个数组、一张图片。 另外,根据损失计算方式
的不同,损失函数
也是不同的。
这里,举个简单的例子说明损失函数计算
的方式:
实际数值为5
预测数值为2
若将实际值和预测值之间的差值作为损失函数,则损失函数计算得到的损失为:3
若将实际值和预测值之间的差值的平方值作为损失函数,则损失函数计算得到的损失为:9
深度学习
以预测精度提高
为目的在不断地发展(这里的精度
泛指包括预测数值跟实际数值差距尽可能小
、预测类别和实际类别一致
、生成的图片尽可能合理
等)。而在深度学习训练过程中,需要不断调节网络神经元的权重,而这些权重的调整依托于损失函数,即损失函数指导这些参数如何调整
,进而使模型在不断训练的过程中精度也是在不断地提高
。
这里,为了更好地帮助大家理解为什么使用损失函数,可以做一个假设:假设没有损失函数,当深度学习模型在进行了一次迭代后,得到了该轮对应的数据预测值。 然后,如何调整网络神经元权重来让模型下一次迭代效果更好呢?
如果使用随机
的方法,可以想象可能需要无数次的训练
(因为现在一般的深度学习的模型神经元数目较多
)。如果不更新权重
,那么下一次得到的输出应该是与上次相同的
(同一个数值与同一个权重做计算)。因此,这里使用损失函数
来计算预测值与实际值之间的差距,判断变大、变小,进而更进一步指导
深度学习网络神经元权重进行更新
。
下面给出了一个损失函数MSE 原理的图片,大家可以看一下。
到此,使用 损失函数总结(一) 已经介绍完毕了!!! 这里只是给大家做一个简单的介绍,如果有什么疑问
或者介绍中有不足的地方
欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果有想要了解的损失函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦。