《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络

机器学习 周志华 学习笔记

总目录

第五章 神经网络

5.1 神经元模型

M-P 神经元模型:神经网络中最基本的成分是神经元模型,如果某神经元的电位超过了一个阈值 ,那么它就会被激活,即 “兴奋” 起来,向其他神经元发送信号。

在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过**带权重的连接(connection)**进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第1张图片
对于激活函数,理想的激活函数应当是阶跃函数,因为阶跃函数能够将输入值映射为“0”或者“1”,这两个输出结果很好的对应了“兴奋”与“抑制”状态。但是由于阶跃函数具有不连续,不光滑等不太友好的数学性质,会导致后期最优解问题的棘手,估在神经网络的激活函数不采用阶跃函数,而是采用sigmod函数.
《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第2张图片
将单个神经元以一定的层次结构连接起来就得到神经络《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第3张图片

5.2 感知机与多层网络

感知机(Perceptron)由两层神经元组成,如下图所示。输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)。
《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第4张图片
给定训练数据集,权重 w i ( i = 1 , 2 , . . . , n ) w_i(i=1,2,...,n) wi(i=1,2,...,n)以及阈值 θ \theta θ都可以通过学习得到。我们把阈值 θ \theta θ也看做神经元的一个固定输入为−1.0−1.0的“哑结点”(dummy node),其所对应的连接权重为 w n + 1 w_{n+1} wn+1,这样,权重和阈值的学习就可以统一为权重的学习(因为实际阈值是 − 1.0 × ω n + 1 −1.0\times\omega_{n+1} 1.0×ωn+1)。

感知机的学习规则:对训练样例(x,y),若当前感知机的输出为 y ^ \widehat{y} y ,则感知机权重将这样调整:
w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i w_i←w_i+Δw_i\\ Δw_i=η(y−\widehat{y})x_i wiwi+ΔwiΔwi=η(yy )xi

其中η∈(0,1)称为学习率(learning rate)。η通常设置为一个小正数,例如0.1。当预测正确时,感知机不发生变化,否则将根据错误的程度进行权重调整。

若我们需要解决的问题是线性可分问题(linearly separable),就会存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛(converge),从而求得适当的权重向量 w = ( w 1 ; w 2 ; . . . ; w n + 1 ) w=(w_1;w_2;...;w_{n+1}) w=(w1;w2;...;wn+1),否则感知机学习过程将会发生振荡(fluctuation)。

要解决非线性可分问题,需考虑多层功能神经元。输出层与输入层之间的一 层神经元,被称为隐含层。只需包含隐层,即可称 为多层网络。

误差逆传播算法

欲训练多层神经网络,上述的简单感知机学习规则显然不够,我们需要更强大的学习算法。误差逆传播(error BackPropagation,简称BP)算法就是一种杰出的神经网络学习算法。
  有训练集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , x i ∈ R d , y i ∈ R l D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},x_i∈R^d,y_i∈R^l D=(x1,y1),(x2,y2),...,(xm,ym),xiRd,yiRl,即输入示例由 d d d个属性描述,输出 l l l维实值向量。
  《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第5张图片
上图是一个拥有 d d d个输入神经元、 l l l个输出神经元、 q q q个隐层神经元的多层前馈网络结构。其中输出层第 j j j个神经元的阈值用 θ i \theta_i θi表示,隐层第 h h h个神经元的阈值用 γ h γ_h γh;输入层第 i i i个神经元与隐层第 h h h个神经元之间的连接权为 v i h v_{ih} vih,隐层第 h h h个神经元与输出层第 j j j个神经元之间的连接权为 w h j w_{hj} whj;记隐层第 h h h个神经元接收到的输入 α h = ∑ i = 1 d x i h x i α_h=\sum_{i=1}^dx_{ih}x_i αh=i=1dxihxi,输出层第 j j j个神经元接收到的输入为 β j = ∑ h = 1 q w h j b h β_j=\sum_{h=1}^qw_{hj}b_h βj=h=1qwhjbh b h b_h bh为隐层第 h h h个神经元的输出。并假设隐层和输出层神经元都使用Sigmoid函数。

对训练样例 ( 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,\cdots,\hat{y}_l^k) y^k=(y^1k,y^2k,,y^lk),即
y ^ j k = f ( β j − θ j ) ) \hat{y}_j^k=f(β_j−θ_j)) y^jk=f(βjθj))

则网络 ( x k , y k ) (x_k,y_k) (xk,yk)上的均方误差为:

E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2 Ek=21j=1l(y^jkyjk)2
需确定参数:输入层到隐层的 d × q d \times q d×q个权值、隐层到输出层的 q × l q \times l q×l个权值、 q q q 个隐层神经元的阈值、 l l l个输出层神经元的阈值.

BP 算法基于梯度下降策略, 以目标的负梯度方向对参数进行调整. 对误差 E_k,给定学习率 η,有:
△ ω h j = − η ∂ E k ∂ ω h j \triangle\omega_{hj}=-\eta\frac{\partial E_k}{\partial\omega_{hj}} ωhj=ηωhjEk
注意到 w h j w_{hj} whj先影响到第 j j j个输出层神经元的输入值 β j β_j βj,再影响到其输出值 y j k y^k_j yjk,然后影响到 E k E_k Ek,根据链式法则有

∂ 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}\cdot \frac{\partial \hat{y}_j^k}{\partial \beta_j}\cdot \frac{\partial \beta_j}{\partial \omega_{hj}} ωhjEk=y^jkEkβjy^jkωhjβj

根据 β j = ∑ h = 1 q ω h j b h \beta_j=\sum_{h=1}^q\omega_{hj}b_h βj=h=1qωhjbh,有:
∂ β j ∂ ω h j = b h \frac{\partial \beta_j}{\partial \omega_{hj}}=b_h ωhjβj=bh
Sigmoid函数性质:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f^′(x)=f(x)(1−f(x)) f(x)=f(x)(1f(x))
于是:
g i = − ∂ 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 ) g_i=-\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) gi=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)
e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ α h = − ∑ j = 1 l ∂ E k ∂ β j ⋅ ∂ β j ∂ b h f ′ ( α h − γ h ) e_h=-\frac{\partial E_k}{\partial b_h}\cdot \frac{\partial b_h}{\partial \alpha_h}= -\sum_{j=1}^l\frac{\partial E_k}{\partial \beta_j}\cdot \frac{\partial \beta_j}{\partial b_h}f^′(\alpha_h-\gamma_h) eh=bhEkαhbh=j=1lβjEkbhβjf(αhγh)
△ ω h j = η g i b h \triangle\omega_{hj}=\eta g_ib_h ωhj=ηgibh
类似可得:
△ θ j = − η g i \triangle \theta_j=-\eta g_i θj=ηgi
△ v i h = η e h x i \triangle v_{ih}=\eta e_hx_i vih=ηehxi
△ γ h = − η e h \triangle \gamma_h=-\eta e_h γh=ηeh

学习率η∈(0,1)控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。

BP算法流程:
《机器学习》周志华(西瓜书)学习笔记 第五章 神经网络_第6张图片
BP算法的目标是要最小化训练集D上的积累误差:
E = 1 m ∑ k = 1 m E k E=\frac{1}{m}\sum_{k=1}^mE_k E=m1k=1mEk

标准BP算法每次仅针对一个训练样例更新连接权和阈值,参数更新得非常频繁,而且对于不同的样例进行更新的效果可能出现“抵消”现象。积累BP算法直接针对积累误差最小化,它在读取整个训练集D一遍后才对参数进行更新。但在很多任务中,积累误差下降到一定程度后,进一步下降就非常缓慢,这是标准BP往往会更快获得较好的解,尤其是在训练集DD非常大时更明显。

如何设置隐层神经元的个数仍是个未解决的问题,实际应用中通常靠"试错法” 调整。
由于其强大的表示能力,BP神经网络经常遭遇过拟合。
有两种策略常用来缓解BP网络的过拟合。

  • 将数据分成训练集和验证集,训练集用 来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阑值.
  • 引入正则化策略的神经网络。基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权值与阈值的平方和。
    E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i ω i 2 E=\lambda\frac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_i\omega_i^2 E=λm1k=1mEk+(1λ)iωi2
    其中λ∈(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

5.4 全局最小与局部最小

梯度下降法就是沿着负梯度方向搜索最优解.若当前点的梯度为零,则已达到局部极小,更新量将为0。如果误差函数仅有一个局部极小,那么此时找到的局部极小就是全局最小;然而,如果误差函数具有多个局部极小,则不能保证找到的解是全局最小。对这种情况,我们称参数寻优陷入了局部极小, 这显然不是我们所希望的。

在现实任务中,人们常采用以下策略来试图 跳出局部极小,从而进一 步接近全局最小。

  • 以多组不同参数值初始化多个神经网络按标准方法训练后,取其中误差最小的解作为最终参数。
  • 使用 “模拟退火”,在每一步都以一定的概率接受比当前解更差的结果,从而有助于 "跳出"局部极小.
    在每步迭代过程中接受"次优解"的概率要随着时间的推移而逐渐降低,从而保证算法稳定.
  • 使用随机梯度下降。与标准梯度下降法精确计算梯度不同,
    随机梯度下降法在计算梯度时加入了随机因素,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。
  • 遗传算法也常用来训练神经网络以更好地逼近全局最小。

需注意的是,上述用于跳出局部极小的技术大多是启发式,理论上尚缺乏保障。

5.5 其它常见神经网络

RBF网络

BF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。
  假定输入为 d d d维向量 x x x,输出为实值,则RBF网络可表示为:
φ ( x ) = ∑ i = 1 q ω i ρ ( x , c i ) \varphi(\bm{x})=\sum_{i=1}^q\omega_i\rho(x,c_i) φ(x)=i=1qωiρ(x,ci)
其中 q q q为隐层神经元个数, c i c_i ci w i w_i wi分别是第 i i i个隐层神经元所对应的中心和权重, ρ ( x , c i ) ρ(x,c_i) ρ(x,ci)是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本 x x x到数据中心 c i c_i ci之间欧氏距离的单调函数。常用的高斯径向基函数如:
ρ ( x , c i ) = e − β ∣ ∣ x − c i ∣ ∣ 2 \rho(x,c_i)=e^{-\beta||x-c_i||^2} ρ(x,ci)=eβxci2
具有足够多隐层神经元的RBF网络能以任意精度逼近任意连续函数。
  通常采用两步过程来训练RBF网络:第一步,确定神经元中心 c i c_i ci,常用的方式包括随即采样、类聚等;第二步,利用BP算法等来确定参数 w i w_i wi β i β_i βi

ART网络
  ART网络是竞争型学习的重要代表。竞争型学习是神经网络中一种常用的无监督学习,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。ART网络由比较层、识别层、识别阈值和重置模块构成.其中比较层负责接收输入样本,并将其传递给识别层神经元。识别层每个神经元对应 1个模式类,神经元数目在训练过程中动态增长以增加新的模式类。

SOM网络
  SOM(Self-Organizing Map,自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。
  
级联相关网络
级联相关网络有两个主要成分"级联"和"相关" 。级联是指建立连接的层级结构,在开始训练时,网络只有输入层和输出层,处于最小拓扑结 构,随着训练的进行,新的隐层神经元逐渐加入,从而创建起层级结构。当新的隐层神经元加入时,其输入端连接权值是冻结固定的。相关是指通过最大化新神经元的输出与网络误差之间的相关性来训练相 关的参数。级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合.

Elman网络
Elman网络是最常用的递归神经网络之一。允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。这样的结构与信息反馈过程,使得网络在 t 时刻的输出状态不仅与 t 时刻的输入有关,还与 t 一 1 时刻的网络状态有关,从而能处理与时间有关的动态变化。

Boltzmann机
Boltzmann机训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。标准的 Boltzmann 机是一个全连接图,训练网络的复杂度很高,这使其难以用于解决现实任务. 受限 Boltzmann 机仅保留显层与隐层之间的连接,从而将 Boltzmann 机结构由完全图简化为二部图。

你可能感兴趣的:(机器学习,西瓜书学习笔记)