《西瓜书》阅读笔记——第五章

神经网络

1. 神经元模型

​ 神经网络(neural network)中最基本的成分是神经元(neuron)。

  • M-P神经元模型:在这里插入图片描述

在这个神经元中:
他接收来自n个其他神经元传递过来的输入信号,且每个信号都有一个权重,其接收到的总输入值( ∑ i = 1 n ω i x i \displaystyle \sum_{i=1}^n\omega_ix_i i=1nωixi)与神经元的阈值(threshold)进行比较,然后通过激活函数(activation function)处理以产生神经元的输出。

  • 激活函数(activation function):
    请添加图片描述
  1. 阶跃函数:

将输入值映射为0(神经元抑制)、1(神经元兴奋)。缺点是不连续、不光滑。

  1. Sigmoid函数:

把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,也称为 “挤压函数” (squashing function).

​ 神经网络由许多这样的神经元按照一定的层次结构连接起来。

​ 将神经网络视为一个包含了许多参数的数学模型,这个模型是若干个函数,例如 y j = f ( ∑ i ω i x i − θ j ) y_j=f( \sum_i\omega_ix_i-\theta_j) yj=f(iωixiθj)相互嵌套而得。

2. 感知机与多层网络

感知机(Perceptron)由两层神经元组成。
请添加图片描述
输入层接收外界信号后传递给输出层,输出层是M-P神经元,亦称”阈值逻辑单元“(threshold logic unit).

感知机能很容易实现逻辑与、或、非运算。(但是不能实现异或XOR)

  • ”与“( x 1 ⋀ x 2 x_1 \bigwedge x_2 x1x2)

ω 1 = ω 2 = 1 , θ = 2 , 则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 2 ) , 仅 在 x 1 = x 2 = 1 时 , y = 1 \omega_1=\omega_2=1,\theta=2,则y=f(1·x_1+1·x_2-2),仅在x_1=x_2=1时,y=1 ω1=ω2=1,θ=2y=f(1x1+1x22)x1=x2=1y=1

  • ”或“( x 1 ⋁ x 2 x_1 \bigvee x_2 x1x2)

ω 1 = ω 2 = 1 , θ = 0.5 , 则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 0.5 ) , 仅 在 x 1 = 1 或 x 2 = 1 时 , y = 1 \omega_1=\omega_2=1,\theta=0.5,则y=f(1·x_1+1·x_2-0.5),仅在x_1=1或x_2=1时,y=1 ω1=ω2=1,θ=0.5y=f(1x1+1x20.5)x1=1x2=1y=1

  • ”非“( ¬ x 1 \neg x_1 ¬x1)

ω 1 = − 0.6 , ω 2 = 0 , θ = − 0.5 , 则 y = f ( − 0.6 ⋅ x 1 + 0 ⋅ x 2 − 0.5 ) , 当 x 1 = 1 时 , y = 0 ; x 1 = 0 时 , y = 1 \omega_1=-0.6,\omega_2=0,\theta=-0.5,则y=f(-0.6·x_1+0·x_2-0.5),当x_1=1时,y=0;x_1=0时,y=1 ω1=0.6ω2=0,θ=0.5y=f(0.6x1+0x20.5)x1=1y=0x1=0y=1

给定训练数据集,权重 ω i ( i = 1 , 2 , . . . , n ) 以 及 θ \omega_i(i=1,2,...,n)以及\theta ωi(i=1,2,...,n)θ可以通过学习得到。阈值 θ \theta θ可以看作一个固定输入为-1.0的”哑结点“(dummy node)所对应的连接权重 ω n + 1 \omega_{n+1} ωn+1。这样就把权重和阈值的学习统一为权重的学习。

对于训练样例 ( x , y ) (x,y) (x,y),若当前感知机的输出为 y ^ \hat{y} y^,则感知机会这样调整:
请添加图片描述
其中 η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1)称为学习率(learning rate)。

若感知机对 ( x , y ) (x,y) (x,y)预测正确,即 y ^ = y \hat{y}=y y^=y,则感知机不发生变化,否则将根据错误的程度进行权重调整。


​ 感知机只有输出层神经元进行激活函数处理,就只拥有一层功能神经元(functional neuron),学习能力很有限。

​ 上述的与、或、非问题都是线性可分(linearly separable)的问题,即存在一个超平面能把他们分开,则感知机的学习过程一定会收敛(converge)而求得适当的权向量 ω = ( ω 1 ; ω 2 ; . . . ; ω n + 1 ) \omega=(\omega_1;\omega_2;...;\omega_{n+1}) ω=(ω1;ω2;...;ωn+1);否则感知机学习过程会发生振荡(fluctuation), ω \omega ω难以稳定,不能求得合适解,例如感知机不能解决异或这样的非线性可分问题。请添加图片描述 为了解决非线性可分问题,需要使用多层功能神经元。请添加图片描述

输入层与输出层之间的被称为隐层或隐藏层(hidden layer),隐藏层和输出层神经元都是拥有激活函数的功能神经元。请添加图片描述

多层前馈神经网络(multi-layer feedforward neural networks):每层神经元与下一层神经元全连接,不存在同层连接、跨层连接。

输入层神经元接受外部输入,隐藏层与输出层神经元对信号进行加工,最终由输出神经元输出结果。

输入神经元仅接收输入,不进行函数处理,隐藏层与输出层含有功能神经元。因此,上图(a)常被成为”两层网络“,也成为”单隐藏层网络“。

​ 神经网络的学习过程就是根据训练数据来调整神经元之间的连接权(connection weight)以及每个功能神经元的阈值;换言之,神经网络“学”到的东西,蕴含在连接权和阈值中。

3. 反向传播算法

请添加图片描述

d d d个输入神经元、 l l l个输出神经元、 q q q个隐层神经元。

θ j \theta_j θj:输出层第 j j j个神经元的阈值

γ h \gamma_h γh:隐层第 h h h个神经元的阈值

v i h v_{ih} vih:输入层第 i i i个神经元与隐层第 h h h个神经元之间的连接权。

ω h j \omega_{hj} ωhj:隐层第 h h h个神经元与输出层第 j j j个神经元之间的连接权。

α h = ∑ i = 1 d v i h x i \alpha_h=\displaystyle \sum_{i=1}^dv_{ih}x_i αh=i=1dvihxi:隐层第 h h h个神经元接收到的输入。

β j = ∑ h = 1 q ω h j b h \beta_j=\displaystyle \sum_{h=1}^q\omega_{hj}b_h βj=h=1qωhjbh:输出层第 j j j个神经元接收到的输入。

b h b_h bh:为隐层第 h h h个神经元的输出。

对于训练例 ( x k , y k ) (x_k,y_k) (xk,yk),假设输出为 y ^ k = ( y ^ 1 k , y ^ 2 k , . . . , y ^ l k ) \hat{y}_k=(\hat{y}_1^k,\hat{y}_2^k,...,\hat{y}_l^k) y^k=(y^1k,y^2k,...,y^lk),即 y ^ j k = f ( β j − θ j ) \hat{y}_j^k=f(\beta_j-\theta_j) y^jk=f(βjθj).

均方误差: E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k=\frac{1}{2}\displaystyle \sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2 Ek=21j=1l(y^jkyjk)2.

上层的网络中一共有 ( d + l + 1 ) q + l (d+l+1)q+l (d+l+1)q+l个参数要确定:

  1. 输入层到隐层: d × q d×q d×q
  2. 隐层到输入层: q × l q×l q×l
  3. 隐层神经元阈值: q q q
  4. 输出层神经元阈值: l l l

​ BP算法是一个迭代算法,在每一轮迭代中采用广义的感知机学习规则对参数进行估计更新,对任意参数 v v v的更新估计式为: v ← v + Δ v v \leftarrow v+\Delta v vv+Δv.

​ 下面以隐层到输出层的连接权$\omega_{hj}为例。

​ BP 算法基于梯度下降(gradient descent) 策略, 以目标的负梯度方向对参数进行调整,对 E K E_K EK,给定学习率 η \eta η,有: Δ ω h j = − η ∂ E k ∂ ω h j \Delta\omega_{hj}=-\eta\frac{\partial E_k}{\partial\omega_{hj}} Δωhj=ηωhjEk.

​ 由链式法则: ∂ E k ∂ ω h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ ω h j \frac{\partial E_k}{\partial\omega_{hj}}=\frac{\partial E_k}{\partial\hat{y}_j^k}·\frac{\partial{\hat{y}_j^k}}{\partial\beta_j}·\frac{\partial\beta_j}{\partial\omega_{hj}} ωhjEk=y^jkEkβjy^jkωhjβj ω h j \omega_{hj} ωhj会先影响第 j j j个输出层神经元的输入值,再影响其输出值 y ^ j k \hat{y}_j^k y^jk,再影响到 E k E_k Ek.’
请添加图片描述请添加图片描述
请添加图片描述
请添加图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值