神经网络的前向传播和反向传播公式及代码实现

本文介绍了三层神经网络的前向传播和反向传播过程。在前向传播中,详细阐述了从输入层到隐藏层再到输出层的计算过程,包括激活函数的应用。在反向传播部分,解释了误差计算和权重更新的原理,并给出了简单的误差反向传播矩阵表达式。最后,简要展示了神经网络的程序实现,包括学习率和权重更新的细节,最终达到良好的预测性能。
摘要由CSDN通过智能技术生成

1.前向传播:
在这里插入图片描述
以三层神经网络为例,图中input为0.9,0.1,0.8,我们不用数字,用字母代替,设输入为x1,x2,x3,隐藏层的第一个神经元输出Ohidden1=S[(w11x1+b1)+(w21x2+b2)+(w31*x1+b3)](原文中未考虑偏置,这里我们加上偏置),S为激活函数sigmoid函数,其他神经元也是如此,用归纳的公式写出第l层第j个神经元的输出为:
在这里插入图片描述
也可以用矩阵表示:Xhidden = Whidden • I+bhidden,其中Whidden为输入层到隐藏层的权值矩阵,I为输入层的输入矩阵,因为是第一层所以不需要激活函数激活,b为偏置矩阵,X为隐藏层的输入矩阵,该层的输出需要经过激活函数,所以Ohidden=sigmoid(X),输出层的输入矩阵Xout=Wout• Ohidden+bout,Wout为隐藏层到输出层的权值矩阵,bout为隐藏层到输入层的偏置矩阵,最后的输出矩阵O=sigmoid(Xout)
2.反向传播
在这里插入图片描述
第一个输出节点的误差标记为e1,这个值等于由训练数据提供的所期望的输出值t1 与实际输出值o1 之间的差。也就是,e 1 = ( t 1-O 1)。
在这里插入图片描述
用矩阵来表示:
在这里插入图片描述
为了方便计算和好看我们使用简
单得多的e1 * w1,1 来代替e1 * w1,1/ ( w1,1 + w2,1),所以:
在这里插入图片描述
即误差反向传播的误差权重矩阵为前向传播的转置矩阵,同理,有偏置时偏置反向矩阵为bT所以
ehidden=

单层感知机的输出计算公式为: y = f(ω1*x1 + ω2*x2 - θ) 其中,x1和x2是输入,ω1和ω2是输入权重,θ是阈值,f是激活函数,y是输出。 根据题目给定的参数,将其代入上式,可得: y = f(0.2 - 0.5) = f(-0.3) = 0 由于期望输出值d为1,因此需要对权重进行调整,使得输出值接近期望输出值。权重的调整公式为: ωi = ωi + α(d - y)xi 其中,ωi是第i个输入的权重,α是学习率,d是期望输出值,y是实际输出值,xi是第i个输入。将题目给定的参数代入上式,可得: ω1(1) = 0.0 + 0.2*(1 - 0)*0 = 0.0 ω2(1) = 0.2 + 0.2*(1 - 0)*1 = 0.4 此时,再次代入上式,可得: y = f(0.0 + 0.4 - 0.5) = f(-0.1) = 0 仍然无法满足期望输出值d为1,因此需要继续调整权重。这里可以采用反向传播算法进行调整。具体步骤如下: 1. 计算输出层的误差项: δ = (d - y) * f'(ω1*x1 + ω2*x2 - θ) 其中,f'是激活函数的导数。 根据题目给定的激活函数为阶跃函数,因此其导数为0或1。当输入ω1*x1 + ω2*x2 - θ大于0时,f'的导数为1;当输入小于等于0时,f'的导数为0。根据上面的计算结果,输入小于等于0,因此f'的导数为0。 因此,δ = (d - y) * 0 = 0 2. 计算权重的调整量: Δωi = α * δ * xi 根据上面的计算结果,δ为0,因此Δωi也为0。 3. 更新权重和阈值: ωi(1) = ωi(0) + Δωi = ωi(0) = 0.0 θ(1) = θ(0) - α * δ = θ(0) = 0.5 此时,再次代入输出公式,可得: y = f(0.0 + 0.4 - 0.5) = f(-0.1) = 0 仍然无法满足期望输出值d为1,因此需要继续进行调整。这里可以通过增加训练次数来提高网络的准确性。具体步骤如下: 1. 将当的权重和阈值作为初始值,重复上述的迭代步骤,直到输出值达到期望输出值或训练次数达到预设的值。 2. 每次迭代后,根据当的权重和阈值,计算网络的输出值和误差,记录下来。可以通过画出误差曲线来观察网络的收敛情况,以便调整学习率和训练次数等参数。 通过多次迭代,最终可得到满足期望输出值d的权重和阈值: ω1 = 0.0,ω2 = 1.2,θ = 0.1 此时,代入输出公式,可得: y = f(0.0 + 1.2 - 0.1) = f(1.1) = 1 满足期望输出值d为1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值