11.28深度学习_bp算法

七、BP算法

多层神经网络的学习能力比单层网络强得多。想要训练多层网络,需要更强大的学习算法。误差反向传播算法(Back Propagation)是其中最杰出的代表,它是目前最成功的神经网络学习算法。现实任务使用神经网络时,大多是在使用 BP 算法进行训练,值得指出的是 BP 算法不仅可用于多层前馈神经网络,还可以用于其他类型的神经网络。通常说 BP 网络时,一般是指用 BP 算法训练的多层前馈神经网络。

误差反向传播算法(BP)的基本步骤:

  1. 前向传播:正向计算得到预测值。
  2. 计算损失:通过损失函数 L ( y pred , y true ) L(y_{\text{pred}}, y_{\text{true}}) L(ypred,ytrue) 计算预测值和真实值的差距。
  3. 梯度计算:反向传播的核心是计算损失函数 L L L 对每个权重和偏置的梯度。
  4. 更新参数:一旦得到每层梯度,就可以使用梯度下降算法来更新每层的权重和偏置,使得损失逐渐减小。
  5. 迭代训练:将前向传播、梯度计算、参数更新的步骤重复多次,直到损失函数收敛或达到预定的停止条件。

1. 前向传播

前向传播(Forward Propagation)把输入数据经过各层神经元的运算并逐层向前传输,一直到输出层为止。

下面是一个简单的三层神经网络(输入层、隐藏层、输出层)前向传播的基本步骤分析。

1.1输入层到隐藏层

给定输入 x x x 和权重矩阵 W 1 W_1 W1 及偏置向量 b 1 b_1 b1,隐藏层的输出(激活值)计算如下:
z ( 1 ) = W 1 ⋅ x + b 1 z^{(1)} = W_1 \cdot x + b_1 z(1)=W1x+b1
z ( 1 ) z^{(1)} z(1) 通过激活函数 σ \sigma σ进行激活:
a ( 1 ) = σ ( z ( 1 ) ) a^{(1)} = \sigma(z^{(1)}) a(1)=σ(z(1))

1.2隐藏层到输出层

隐藏层的输出 a ( 1 ) a^{(1)} a(1) 通过输出层的权重矩阵 W 2 W_2 W2和偏置 b 2 b_2 b2 生成最终的输出:
z ( 2 ) = W 2 ⋅ a ( 1 ) + b 2 z^{(2)} = W_2 \cdot a^{(1)} + b_2 z(2)=W2a(1)+b2
输出层的激活值 a ( 2 ) a^{(2)} a(2) 是最终的预测结果:
y pred = a ( 2 ) = σ ( z ( 2 ) ) y_{\text{pred}} = a^{(2)} = \sigma(z^{(2)}) ypred=a(2)=σ(z(2))

前向传播的主要作用是:

  1. 计算神经网络的输出结果,用于预测或计算损失。
  2. 在反向传播中使用,通过计算损失函数相对于每个参数的梯度来优化网络。

2. 反向传播

反向传播(Back Propagation,简称BP)通过计算损失函数相对于每个参数的梯度来调整权重,使模型在训练数据上的表现逐渐优化。反向传播结合了链式求导法则和梯度下降算法,是神经网络模型训练过程中更新参数的关键步骤。

2.1 原理

利用链式求导法则对每一层进行求导,直到求出输入层x的导数,然后利用导数值进行梯度更新

2.2. 链式法则

链式求导法则(Chain Rule)是微积分中的一个重要法则,用于求复合函数的导数。在深度学习中,链式法则是反向传播算法的基础,这样就可以通过分层的计算求得损失函数相对于每个参数的梯度。以下面的复合函数为例:
f ( x ) = 1 1 + e − ( w x + b ) \mathrm{f(x)=\frac{1}{1+e^{-(wx+b)}}} f(x)=1+e(wx+b)1
其中 x x x 是输入数据, w w w 是权重, b b b 是偏置。

2.2.1 函数分解

可以将该复合函数分解为:

函数 导数 我们假设 w=0, b=0, x=1
h 1 = x × w h_1 = x \times w h1=x×w ∂ h 1 ∂ w = x , ∂ h 1 ∂ x = w \frac{\partial h_1}{\partial w} = x, \quad \frac{\partial h_1}{\partial x} = w wh1=x,xh1=w h 1 = x × w = 0 h_1 = x \times w = 0 h1=x×w=0
h 2 = h 1 + b h_2 = h_1 + b h2=h1+b ∂ h 2 ∂ h 1 = 1 , ∂ h 2 ∂ b = 1 \frac{\partial h_2}{\partial h_1} = 1, \quad \frac{\partial h_2}{\partial b} = 1 h1h2=1,bh2=1 h 2 = h 1 + b = 0 + 0 = 0 h_2 = h_1 + b = 0 + 0 = 0 h2=h1+b=0+0=0
h 3 = h 2 × − 1 h_3 = h_2 \times -1 h3=h2×1 ∂ h 3 ∂ h 2 = − 1 \frac{\partial h_3}{\partial h_2} = -1 h2h3=1 h 3 = h 2 × − 1 = 0 × − 1 = 0 h_3 = h_2 \times -1=0 \times -1 = 0 h3=h2×1=0×1=0
h 4 = e x p ( h 3 ) h_4 = exp(h_3) h4=exp(h3) ∂ h 4 ∂ h 3 = e x p ( h 3 ) \frac{\partial h_4}{\partial h_3} = exp(h_3) h3h4=exp(h3) h 4 = e x p ( h 3 ) = e x p ( 0 ) = 1 h_4 = exp(h_3) = exp(0)=1 h4=exp(h3)=exp(0)=1
h 5 = h 4 + 1 h_5 = h_4 + 1 h5=h4+1 ∂ h 5 ∂ h 4 = 1 \frac{\partial h_5}{\partial h_4} = 1 h4h5=1 h 5 = h 4 + 1 = 1 + 1 = 2 h_5 = h_4 + 1 = 1 + 1 = 2 h5=h
### Postman 11.28.2 版本汉化教程 对于希望将Postman 11.28.2版本汉化的用户来说,可以遵循特定的方法来实现这一目标。需要注意的是官方并不总是提供正式的语言包支持,因此社区贡献的方式成为一种替代方案。 #### 准备工作 确保已经下载并安装了指定版本的Postman客户端。如果尚未完成这一步骤,则需前往可靠的第三方网站或是通过官方渠道获取对应版本的应用程序[^1]。 #### 获取中文语言包 由于官方可能未直接为该具体版本发布中文语言包,在这种情况下可以从GitHub等开源平台查找由开发者维护的相关资源库。搜索关键词如“Postman Chinese localization”,从中挑选评价较高且最近有更新记录的项目作为来源。 #### 安装过程 一旦获得了适用于Postman 11.28.2 的`app.zip`形式的汉化补丁文件之后: - 将此压缩文件放置于Postman应用程序目录下的`\resources`子文件夹内; - 对其进行解压缩操作以便使其中的内容生效; 考虑到安全性和稳定性因素,建议移除位于相同位置名为`update.exe`的可执行文件以防意外触发在线升级而覆盖所做的修改。 另外为了阻止应用尝试连接至远程服务器请求最新版信息,可以在系统的Hosts配置中加入如下条目以屏蔽相关域名访问: ``` 0.0.0.0 dl.pstmn.io ``` 上述改动同样适用于其他相似版本号范围内的实例,并非仅限于此处提及的确切编号。 ```bash echo "0.0.0.0 dl.pstmn.io" >> C:\Windows\System32\drivers\etc\hosts ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值