损失函数1

损失函数作为深度学习中最重要的一部分,有必要花时间好好学习和理解一下。

本系列从基础开始,梳理各个损失函数的概念和原理。

损失函数是什么

简单来说,损失函数是用来就是用来衡量真实值与预测值之间的差距的一个工具。

在这里插入图片描述

如图所示,蓝色实线是真实结果的走向,黑色空心圆圈代表预测值,红色虚线代表预测值与真实值之间的差距。

用小学数学来思考,如何描述a和b两个值之间的差距呢?

自然就是 L = a − b L = a - b L=ab 。这就是一个简单的损失函数, L L L就表示 a a a b b b 之间的损失。

在一个完整的深度网络训练任务中,训练的本质就是通过不断优化(最小化)损失函数,使得损失尽可能小,以达到较好的预测水平。

平均绝对误差(MAE)

但是在深度学习中,损失函数的最终归宿是通过优化方法对其最小化,所以我们要保证损失函数的非负性,如果损失可以为负,那么最小化就无止无尽了。

很自然的我们就想到为损失函数添加一个绝对值保证其非负性: L = ∣ a − b ∣ L = |a-b| L=ab。对所有预测值的的损失求平均即 M A E = ∑ i = 1 n ∣ a i − b i ∣ n , a i ∈ A   b i ∈ B MAE = \frac{\sum^n_{i = 1}|a_i - b_i|}{n}, a_i \in A\ b_i \in B MAE=ni=1naibi,aiA biB 这就是平均绝对误差

其函数图像如下:

在这里插入图片描述

a = [x for x in range(-1000,1000)]
b = [np.abs(x-100) for x in a]
plt.plot(a,b)
plt.title('MAE Loss(real value 100)')
plt.xlabel('Prediction')
plt.ylabel('MAE Loss Value')

均方误差(MSE)

在实际应用中发现,我们更希望突出那些损失值较大的部分,在优化过程中对其给予更多地惩罚。通俗来讲,就是让损失大的更大,小的更小。

为了实现这种效果我们可以将绝对值换成平方,即 M S E = ∑ i = 1 n ( a i − b i ) 2 n , a i ∈ A   b i ∈ B MSE = \frac{\sum^n_{i = 1}(a_i - b_i)^2}{n}, a_i \in A\ b_i \in B MSE=ni=1n(aibi)2,aiA biB

函数图像如下:

在这里插入图片描述

a = [x for x in range(-1000,1000)]
b = [(x-100)**2 for x in a]
plt.plot(a,b)
plt.title('MSE Loss(real value 100)')
plt.xlabel('Prediction')
plt.ylabel('MSE Loss Value')

以上内容均为作者学习心得,若有错误请批评指正,欢迎各位评论交流!转载请注明出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值