从零到一实现神经网络(四):损失函数

本博客参考书籍:深度学习入门(斋藤康毅著)

神经网络输出层的误差由来

  1. 我们在上一节讲到过one-hot编码,对于一个mnist手写数字图片,如果它的标签为1,那么它的one-hot编码为[0,1,0,0,0,0,0,0,0,0]

  2. 上一节我们也提到过softmax函数,对于一个神经网络的输出层来说,softmax函数将该输出层的拟输出转化为最终输出z=[z1,z2,…](元素之和为零)

在这里插入图片描述

  1. 这时我们发现,将上面两点信息结合起来,如果将一个标签为1的mnist手写数字图片作为神经网络的输入层,那么它的输出层的最终输出,理想情况下应该是它的one-hot编码[0,1,0,0,0,0,0,0,0,0],我们将其称为神经网络的理想输出t=[0,1,0,0,0,0,0,0,0,0];但是事实往往不是这样,假设最终输出为[0.1,0.6,0.0.5,0.05,0.1,0.0,0.1,0.0,0.0],我们称之为神经网络的实际输出z=[0.1,0.6,0.0.5,0.05,0.1,0.0,0.1,0.0,0.0]

我们取实际输出y中相对值最大的值(0.6)对应的标签就是最终标签,另外的0.4被分散到了其它标签,那么这个0.4就是误差

从概率论的角度来看,理性输出t和实际输出y都是一种概率分布(离散型随机变量的概率质量函数,如下表)

X0123456789
z0.10.60.00.50.050.10.00.10.00.0
t0100000000

损失函数

权重参数对神经网络的输出值有影响
我们知道,输入值是不变的,影响神经网络的最终输出值的因素只有权重参数和偏置,两者的改变会直接导致神经网络输出的变化
量化神经网络的表现
当权重参数和偏置取不同的值时,神经网络会有不同的表现,如何将这种表现量化呢(就是怎么样才能说神经网络的表现是好的,我们当然知道当神经网络实际输出等于理想输出时它的表现最好,但我们仍然需要将其量化)?
如何取得量化值
我们想到,可以使用一个值来评价它(就像评价一个学生常常通过考试分数一样),这个值怎么取?
在这里插入图片描述

我们要使用一个函数,将神经网络的实际输出(y)与理想输出(t)作为自变量,函数值作为因变量,那么这个函数值就是我们要求的能够反映神经网络性能的指标,而这个函数就是损失函数,神经网络训练的过程,就是找到合适的权重参数使得损失函数的值最小化

上面的图示过程中有一个注意的标记。实际上,尽管损失函数只输出一个函数值用于反映神经网络性能,但是实际输出与理想输出之间的误差还是需要反映到每个神经元上的,只有这样才有了后面的误差反向传播的过程,所以便有了图中的误差矩阵
误差矩阵e=[e1,e2,e3,…],其中的每个元素都对应了神经网络输出层的一个神经元,表示该神经元的输出误差

均方损失函数

数学表达式

损失函数有很多种,其中最有名的就是均方误差函数,它的数学表达式为
在这里插入图片描述

数学原理

计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小

代码实现

def mean_squared_error(y,t):
	return 0.5*np.sum((y-t)**2)

交叉熵损失函数

数学表达式

在这里插入图片描述

数学原理

交叉熵的定义与熵的定义类似,区别在于前者定义在两个概率分布之上,用于衡量两个概率分布的差异;而后者定义在一个概率分布之上,用于衡量离散型随机事件出现的概率(当离散型随机事件服从均匀分布时,信息熵具有极大值,也可以说此时系统是最混乱的)
交叉熵越大表明两个概率分布的差异越大,即神经网络的实际输出与理想输出之间的差异就越大

代码实现

def cross_entropy_error(y,t):
	delta=1e-4	# 对数函数log()在自变量取零时值趋于无穷大,在此为y加上一个偏移量
	return -np.sum(t*np.log(y+delta))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夺笋123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值