机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]

引言

上一节介绍了 M-P \text{M-P} M-P神经元模型,并介绍了感知机算法 ( Perceptron ) (\text{Perceptron}) (Perceptron)的参数调整过程。本节将介绍多层前馈神经网络,并介绍反向传播算法

回顾:感知机算法

关于感知机算法,它本质上是一个仅包含一个 M-P \text{M-P} M-P神经元的神经网络模型。以基本逻辑运算为例,它们对应感知机算法的网络模型表示如下:
需要注意的是,这里的 x 1 , x 2 x_1,x_2 x1,x2是输入层,它们均表示‘样本特征的随机变量’,因而它们仅是‘接收外部信号的载体’,并不是 M-P \text{M-P} M-P神经元模型。
基本逻辑运算_(感知机算法)网络模型
对应计算流程表示如下:
Y o u t = f ( W 1 ⋅ x 1 + W 2 ⋅ x 2 − θ ) \mathcal Y_{out} = f \left(\mathcal W_1 \cdot x_1 + \mathcal W_2 \cdot x_2 - \theta \right) Yout=f(W1x1+W2x2θ)
对于上述计算流程中的权重 W 1 , W 2 \mathcal W_1,\mathcal W_2 W1,W2阈值 θ \theta θ,可将阈值 θ \theta θ视作一个固定输入的哑结点( Dummy Node \text{Dummy Node} Dummy Node)与对应权重的线性组合,从而使学习过程统一为权重的学习过程
Y o u t = f ( W 1 ⋅ x 1 + W 2 ⋅ x 2 + W Dum ⋅ x Dum ⏟ Fixed ) \mathcal Y_{out} = f(\mathcal W_1 \cdot x_1 + \mathcal W_2 \cdot x_2 + \mathcal W_{\text{Dum}} \cdot \underbrace{x_{\text{Dum}}}_{\text{Fixed}}) Yout=f(W1x1+W2x2+WDumFixed xDum)
关于感知机算法权重学习过程的参数调整使用梯度下降法。针对逻辑计算,本质上是二分类问题。感知机算法关于策略的构建动机是策略驱动
{ L True ( W ) = ∑ ( x ( i ) , y ( i ) ) ∈ D y ^ ( i ) ( W T x ( i ) ) arg ⁡ max ⁡ W L True ( W ) { L False ( W ) = − ∑ ( x ( i ) , y ( i ) ) ∈ D y ( i ) ( W T x ( i ) ) arg ⁡ min ⁡ W L False ( W ) \begin{aligned} & \begin{cases} \mathcal L_{\text{True}}(\mathcal W) = \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \hat y^{(i)} \left(\mathcal W^Tx^{(i)}\right) \\ \mathop{\arg\max}\limits_{\mathcal W} \mathcal L_{\text{True}}(\mathcal W) \end{cases} \\ & \begin{cases} \mathcal L_{\text{False}}(\mathcal W) = -\sum_{(x^{(i)},y^{(i)}) \in \mathcal D} y^{(i)} \left(\mathcal W^Tx^{(i)}\right) \\ \mathop{\arg\min}\limits_{\mathcal W} \mathcal L_{\text{False}}(\mathcal W) \end{cases} \\ \end{aligned} LTrue(W)=(x(i),y(i))Dy^(i)(WTx(i))WargmaxLTrue(W) LFalse(W)=(x(i),y(i))Dy(i)(WTx(i))WargminLFalse(W)
关于感知机权重的调整过程可表示为:
W ( t + 1 ) ⇐ W ( t ) − η ⋅ ∇ W L ( W ) = W ( t ) − η ⋅ [ ∂ L False ( W ) ∂ W + ∂ L True ( W ) ∂ W ] = W ( t ) − η ⋅ ∑ ( x ( i ) , y ( i ) ) ∈ D ( y ^ ( i ) − y ( i ) ) x ( i ) = W ( t ) + η ⋅ ∑ ( x ( i ) , y ( i ) ) ∈ D ( y ( i ) − y ^ ( i ) ) x ( i ) \begin{aligned} \mathcal W^{(t+1)} & \Leftarrow \mathcal W^{(t)} - \eta \cdot \nabla_{\mathcal W} \mathcal L(\mathcal W) \\ & = \mathcal W^{(t)} - \eta \cdot \left[\frac{\partial \mathcal L_{\text{False}}(\mathcal W)}{\partial \mathcal W} + \frac{\partial \mathcal L_{\text{True}}(\mathcal W)}{\partial \mathcal W}\right] \\ & = \mathcal W^{(t)} - \eta \cdot \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \left(\hat y^{(i)} - y^{(i)}\right) x^{(i)} \\ & = \mathcal W^{(t)} + \eta \cdot \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \left(y^{(i)} - \hat y^{(i)}\right) x^{(i)} \end{aligned} W(t+1)W(t)ηWL(W)=W(t)η[WLFalse(W)+WLTrue(W)]=W(t)η(x(i),y(i))D(y^(i)y(i))x(i)=W(t)+η(x(i),y(i))D(y(i)y^(i))x(i)

其中 η \eta η表示学习率( Learning Rate \text{Learning Rate} Learning Rate)。关于迭代结束的标志:当关于样本特征 x ( i ) x^{(i)} x(i)的预测结果 y ^ ( i ) \hat y^{(i)} y^(i)真实标签 y ( i ) y^{(i)} y(i)相等,此时 W ( t ) ⇒ W ( t + 1 ) \mathcal W^{(t)} \Rightarrow \mathcal W^{(t+1)} W(t)W(t+1)不会发生变化,迭代可以停止。

非线性问题与多层感知机

前馈神经网络——非线性问题中已经对解决非线性问题的方式进行了介绍,这里不再赘述。这里仅从 M-P \text{M-P} M-P神经元模型的角度重温一下处理亦或问题的多层感知机结构:
亦或问题-两层感知机
很明显,这是一个两层感知机,其中包含输入层结点 x 1 , x 2 x_1,x_2 x1,x2输出层结点 Y \mathcal Y Y以及隐含层( Hidden Layer \text{Hidden Layer} Hidden Layer)结点 h 1 , h 2 h_1,h_2 h1,h2

相比于感知机算法,上述多层感知机明显由 3 3 3 M-P \text{M-P} M-P神经元模型嵌套组合的结构。并且神经元之间不存在同层连接,也不存在跨层连接。这种神经网络结构被称作多层前馈神经网络( Multi-Layer Feed-Forward Neural Network \text{Multi-Layer Feed-Forward Neural Network} Multi-Layer Feed-Forward Neural Network)。
以上述结构为例,输入层不算网络层数,因而上述结构被称作‘两层网络’。但如果将隐藏层、输出层区分开,也可以将其称作:单隐层网络。

上述模型需要学习的权重参数有:
Θ = { W 11 , W 12 , W 21 , W 22 , θ 1 , θ 2 , θ 3 } \Theta = \{\mathcal W_{11},\mathcal W_{12},\mathcal W_{21},\mathcal W_{22},\theta_1,\theta_2,\theta_3\} Θ={ W11,W12,W21,W22,θ1,θ2,θ3}

反向传播算法( BackPropagation,BP \text{BackPropagation,BP} BackPropagation,BP)

虽然上述的神经网络结构能够处理非线性问题,但关于权重参数 Θ \Theta Θ学习过程,仅使用如错误驱动这种简单策略是不够的。
由于 M-P \text{M-P} M-P神经元的嵌套,使得网络结构变得更加复杂,仅通过随机调整参数去观察 y ( i ) − y ^ ( i ) y^{(i)} - \hat y^{(i)} y(i)y^(i)的计算代价是极大的。

针对于多层神经网络反向传播算法就是其中最杰出的代表。下面通过示例对梯度的反向传播过程进行描述。

场景构建

关于数据集合 D \mathcal D D的描述表示如下:
这里为了泛化起见,并没有将标签 y ( i ) ( i = 1 , 2 , ⋯   , N ) y^{(i)}(i=1,2,\cdots,N) y(i)(i=1,2,,N)约束为标量,而是一个包含 l l l个随机变量的向量形式。
D = { x ( i ) , y ( i ) } i = 1 N x ( i ) ∈ R d ; y ( i ) ∈ R l \mathcal D = \{x^{(i)},y^{(i)}\}_{i=1}^N \quad x^{(i)} \in \mathbb R^{d};y^{(i)} \in \mathbb R^l D={ x(i),y(i)}i=1Nx(i)Rd;y(i)Rl
上述条件已经给出了输入层输出层的规模分别是 d , l d,l d,l,基于此构建一个含一个隐藏层的、隐藏层内神经元个数为 q q q单隐层前馈神经网络
单隐层神经网络示例

观察上图,除了输入层,隐藏层、输出层的结点均是 M-P \text{M-P} M-P神经元模型

  • 其中隐藏层神经元的阈值分别表示为: { γ 1 , γ 2 , ⋯   , γ q } \{\gamma_1,\gamma_2,\cdots,\gamma_q\} { γ1,γ2,,γq}输出层神经元的阈值分别表示为: { θ 1 , θ 2 , ⋯   , θ l } \{\theta_1,\theta_2,\cdots,\theta_l\} { θ1,θ2,,θl}
  • 输入层结点 { x 1 , x 2 , ⋯   , x d } \{x_1,x_2,\cdots,x_d\} { x1,x2,,xd}指向隐藏层 h h h个神经元 b h b_h bh权重分别表示为: { v 1 h , v 2 h , ⋯   , v d h } \{v_{1h},v_{2h},\cdots,v_{dh}\} { v1h,v2h,,vdh};同理,隐藏层神经元 { b 1 , b 2 , ⋯   , b q } \{b_1,b_2,\cdots,b_q\} { b1,b2,,bq}指向输出层 j j j个神经元 y j y_j yj权重分别表示为: { w 1 j , w 2 j , ⋯   , w q j } \{w_{1j},w_{2j},\cdots,w_{qj}\} { w1j,w2j,,wqj}
  • 关于隐藏层神经元 b h b_h bh接收到的输入 α h \alpha_h αh可表示为:
    α h = v 1 h ⋅ x 1 + ⋯ + v d h ⋅ x d = ∑ i = 1 d v i h ⋅ x i \alpha_h = v_{1h} \cdot x_1 + \cdots + v_{dh} \cdot x_d = \sum_{i=1}^d v_{ih} \cdot x_i αh=v1hx1++vdh
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静静的喝酒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值