神经网络入门笔记

学习资料:
《机器学习》周志华

一、 基本概念

  • 定义:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
  • 最基本成分:神经元模型
  • 神经网络的学习过程:根据训练数据来调整神经元之间的连接权(connection weight)以及每个功能神经元的阈值。

二、 神经元模型

1. 原理

每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即 “兴奋”起来,向其他神经元发送化学物质。

2. M-P神经元模型

在这里插入图片描述

2.1 原理

神经元接收到来自其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输出。

2.2 激活函数

  • 理想:阶跃函数(不够连续、光滑)

  • 实际常用:Sigmoid函数,也称为“挤压函数”,把可能在较大范围内变化的输入值挤压到(0 ,1 )输出值范围内。

    在这里插入图片描述

三、 感知机与多层模型

1. 感知机(Perceptron)

1.1 组成

由两层神经元组成

  • 输入层:接收外界信号传递给输出层
  • 输出层:M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)

在这里插入图片描述

1.2 感知机实现与或非运算

y = f ( ∑ i w i x i − θ ) y=f(\sum_iw_ix_i-\theta) y=f(iwixiθ),假定 f f f为阶跃函数

  • “与” ( x 1 ∧ x 2 ) (x_1\wedge x_2) (x1x2) w 1 = w 2 = 1 ,   θ = 2 w_1=w_2=1,\space \theta=2 w1=w2=1, θ=2,仅在 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1时, y = 1 y=1 y=1
  • “或” ( x 1 ∨ x 2 ) (x_1\vee x_2) (x1x2) w 1 = w 2 = 1 ,   θ = 0.5 w_1=w_2=1,\space \theta=0.5 w1=w2=1, θ=0.5,当 x 1 = 1 x_1=1 x1=1 x 2 = 1 x_2=1 x2=1时, y = 1 y=1 y=1
  • “非” ( ¬ x 1 ) (\neg x_1) (¬x1) w 1 = − 0.6 ,   w 2 = 0 ,   θ = − 0.5 w_1=-0.6,\space w_2=0,\space \theta=-0.5 w1=0.6, w2=0, θ=0.5,当 x 1 = 1 ,   y = 0 ;   x 1 = 0 ,   y = 1 x_1=1,\space y=0;\space x_1=0,\space y=1 x1=1, y=0; x1=0, y=1

1.3 感知机学习:

  • 学习内容:给定训练数据集,通过学习得到权重 w i ( i = 1 , 2 , … , n ) w_i(i=1,2,\dots,n) wi(i=1,2,,n)及阈值 θ \theta θ

💡 阈值 θ \theta θ可看作一个固定输入为-1的“哑结点”(dummynode)所对应的连接权重 w n + 1 w_{n+1} wn+1,这样权重和阈值的学习就可统一为权重的学习

  • 学习规则:对训练样例 ( x , y ) (x,y) (x,y),感知机的输出为 y ^ \hat{y} y^,调整感知机的权重

    w i ← w i + Δ w i (1) w_i \leftarrow w_i+\Delta w_i \tag{1} wiwi+Δwi(1)

    Δ w i = η ( y − y ^ ) x i (2) \Delta w_i=\eta(y-\hat{y})x_i\tag{2} Δwi=η(yy^)xi(2)

    • 学习率(Learning rate): η ∈ ( 0 , 1 ) \eta \in(0,1) η(0,1),通常设置为一个小正数

2. 多层模型

  • 目的:解决非线性可分问题

  • 特征:输入层和输出层之间包含一层或多层神经元,称为隐层或隐含层(hidden layer)

    💡 隐含层和输出层的神经元都是拥有激活函数的功能神经元

  • 多层前馈神经网络(multi-layer feedforward neural networks)

在这里插入图片描述

  1. 每层神经元与下一层神经元全互连,神经元之间不同层连接也不跨层连接
  2. 输入层神经元接受外界输入
  3. 隐含层和输出层神经元对信号进行加工
  4. 输出层神经元输出最终结果

四、 误差逆传播算法(BP算法)

在这里插入图片描述

1. 参数描述

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

  • { x 1 , … x i , … x d } \{ x_1,\dots x_i,\dots x_d\} {x1,xi,xd}:输入层的 d d d个输入
  • v i h v_{ih} vih:输入层第 i i i个神经元和隐层第 h h h个神经元之间的连接权
  • α h \alpha_h αh:隐层第 h h h个神经元的输入
  • γ h \gamma_h γh:隐层第 h h h个神经元的阈值
  • { b 1 , … b h , … b q } \{ b_1,\dots b_h,\dots b_q\} {b1,bh,bq}:隐层的 q q q个输出
  • w h j w_{hj} whj:隐层第 h h h个神经元和输出层第 j j j个神经元之间的连接权
  • β j \beta _j βj:输出层第 j j j个神经元的输入
  • θ j \theta_j θj:输出层第 j j j个神经元的阈值
  • { y 1 , … y j , … y l } \{ y_1,\dots y_j,\dots y_l\} {y1,yj,yl}:输出层的 l l l个输出

2. 公式推导

对单个训练例 ( x k , y k ) (\bm{x}_k,\bm{y}_k) (xk,yk)神经网络输出 y ^ k = ( y ^ 1 k , y ^ 2 k , … , y ^ l k ) \bm{\hat{y}}_k=(\hat{y}_1^k,\hat{y}_2^k,\dots,\hat{y}_l^k) y^k=(y^1k,y^2k,,y^lk)

j j j个输出
y ^ j k = f ( β j − θ j ) (3) \hat{y}_j^k=f(\beta_j-\theta_j) \tag{3} y^jk=f(βjθj)(3)
网络在 ( x k , y k ) (\bm{x}_k,\bm{y}_k) (xk,yk)上的均方误差
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 (4) E_k=\frac{1}{2}\sum_{j=1}^{l}(\hat{y}_j^k-y_j^k)^2 \tag{4} Ek=21j=1l(y^jkyjk)2(4)
任意参数 v v v的更新估计式
v ← v + Δ v (5) v\leftarrow v+\Delta v \tag{5} vv+Δv(5)
以隐层到输出层的连接权 w h j w_{hj} whj为例,对公式(4)的误差 E k E_k Ek,给定学习率 η \eta η,得到 Δ w h j \Delta w_{hj} Δwhj
Δ w h j = − η ∂ E k ∂ w h j (6) \Delta w_{hj}=-\eta\frac{\partial E_k}{\partial w_{hj}} \tag{6} Δwhj=ηwhjEk(6) ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j (7) \frac{\partial E_k}{\partial w_{hj}}= \frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\partial \hat{y}_j^k}{\partial \beta_{j}}\cdot \frac{\partial \beta_j}{\partial w_{hj}}\tag{7} whjEk=y^jkEkβjy^jkwhjβj(7)
根据 β j \beta_j βj的定义
∂ β j ∂ w h j = b h (8) \frac{\partial \beta_j}{\partial w_{hj}}=b_h \tag{8} whjβj=bh(8)
Sigmoid函数性质
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) (9) f'(x)=f(x)(1-f(x)) \tag{9} f(x)=f(x)(1f(x))(9)
根据(3)(4),有
g j = − ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) (10) \begin{aligned} g_j &=-\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot\frac{\partial \hat{y}_j^k}{\partial \beta_j}\\ &=-(\hat{y}_j^k-y_j^k)f'(\beta_j-\theta_j)\\&=\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k) \end{aligned}\tag{10} gj=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)(10)
将(8)(10)代入(7)再带入(6),得到BP算法中关于 w h j w_{hj} whj的更新公式
Δ w h j = η g j b h (11) \Delta w_{hj}=\eta g_jb_h \tag{11} Δwhj=ηgjbh(11)
类似可得
Δ θ j = − η g j (12) \Delta\theta_j=-\eta g_j\tag{12} Δθj=ηgj(12) Δ v i h = η e h x i (13) \Delta v_{ih}=\eta e_hx_i\tag{13} Δvih=ηehxi(13) Δ γ h = − η e h (14) \Delta\gamma_h=-\eta e_h \tag{14} Δγh=ηeh(14)
其中
e h = b h ( 1 − b h ) ∑ j = 1 l w h j g j (15) e_h=b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j\tag{15} eh=bh(1bh)j=1lwhjgj(15)

3. BP算法工作流程

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值