机器学习笔记-第五章神经网络

神经元模型

  • 定义:神经网络是由具有适应性的简单单元(神经元模型,最基本的成分)组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
    机器学习笔记-第五章神经网络_第1张图片
    机器学习笔记-第五章神经网络_第2张图片
  • 阶跃函数具有不连续、不光滑等不太好的性质,因此常用Sigmoid函数(挤压函数)作为激活函数

感知机与多层网络

  • 感知机由两层神经元组成,能容易地实现逻辑与、或、非运算(线性可分问题)。
  • 权值调整规则: w i ← w i + Δ w i , Δ w i = η ( y − y ^ ) x i w_i ← w_i+\Delta w_i, \\ \Delta w_i=\eta (y-\hat{y})x_i wiwi+Δwi,Δwi=η(yy^)xi其中 η ∈ ( 0 , 1 ) \eta\in(0,1) η(0,1)称为学习率。
  • 注:感知机只有输出层神经元进行激活函数处理,只拥有一层功能神经元,不能解决非线性可分问题。
  • 多层前馈神经网络:由多层神经元组成,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。
  • 只需包含隐层,即可称为多层网络。

误差逆传播(BP)算法

机器学习笔记-第五章神经网络_第3张图片

  • 神经网络的输出为 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=\frac12\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2 Ek=21j=1l(y^jkyjk)2
  • BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,任意参数 v v v的更新估计式为: v ← v + Δ v v←v+\Delta v vv+Δv
  • BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
  • 以图中连接权 w h j w_{hj} whj为例进行推导:给定学习率,有 Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta\frac{\partial E_k}{\partial w_{hj}} Δwhj=ηwhjEk由于 w h j w_{hj} whj先影响到第 j j j个输出层神经元的输入值 β j \beta_j βj,再影响到其输出值 y ^ j k \hat{y}_j^k y^jk,然后影响到 E k E_k Ek,所以有 ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j \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}} whjEk=y^jkEkβjy^jkwhjβj根据 β j \beta_j βj的定义,有 ∂ β j ∂ w h j = b h \frac{\partial \beta_j}{\partial w_{hj}}=b_h whjβj=bhSigmoid函数有一个很好的性质: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x)) 令 g j = − ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) 令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(1- \hat{y}_j^k)( y_j^k- \hat{y}_j^k) gj=y^jkEkβjy^jk=y^jk(1y^jk)(yjky^jk)所以有 Δ w h j = η g j b h \Delta w_{hj}=\eta g_jb_h Δwhj=ηgjbh类似可得: Δ θ j = − η g j , Δ v i h = η e h x i , Δ γ h = − η e h . \Delta \theta_{j}=-\eta g_j, \\ \Delta v_{ih}=\eta e_hx_i,\\ \Delta \gamma_{h}=-\eta e_h. Δθj=ηgj,Δvih=ηehxi,Δγh=ηeh.
  • 学习率控制着算法每一轮迭代中的更新步长,若太大则容易震荡,太小则收敛速度又会过慢,不同神经层学习率可不同。
  • 误差逆传播算法:
输入:训练集D,学习率n
过程:
1.(0, 1)范围内随机初始化网络中所有连接权和阈值
2. while 不满足停止条件:
3.     for (x_k, y_k) in D:
4.         根据当前参数计算当前样本的输出y'_k
5.         计算输出层神经元的梯度项g_j
6.         计算隐层神经元的梯度项e_h
7.         更新连接权w_hj,v_ih与阈值theta_j,gamma_h
输出:连接权与阈值确定的多层前馈神经网络
  • 以上为标准BP算法,每次仅针对一个训练样例更新连接权和阈值,所以更新频率高,且对不同样例进行更新的效果可能出现“抵消”现象。而累积BP算法直接针对累积误差最小化,读取整个训练集一遍后才对参数进行更新,更新频率低很多,但在累积误差下降到一定程度之后,进一步下降会非常缓慢,所以当训练集非常大时,标准BP算法会更快获得较好的解。
  • 降低过拟合策略:
    • “早停”:将数据分为训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
    • “正则化”:在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和: E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 E=\lambda\frac1m\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2 E=λm1k=1mEk+(1λ)iwi2其中 λ ∈ ( 0 , 1 ) \lambda\in(0, 1) λ(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

全局最小与局部极小

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

其他常见神经网络

RBF(径向基函数)网络

  • 一种单隐层前馈神经网络,使用径向基函数作为隐层神经元激活函数,输出层是对隐层神经元输出的线性组合,表示为: φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \varphi(x)=\sum_{i=1}^qw_i\rho(x,c_i) φ(x)=i=1qwiρ(x,ci)其中 q q q为隐层神经元个数, c i c_i ci w i w_i wi分别是第 i i i个隐层神经元所对应的中心和权重, ρ ( x , c i ) \rho(x,c_i) ρ(x,ci)是径向基函数。
  • 径向基函数是某种沿径向对称的标量函数,通常定义为样本 x x x到数据中心 c i c_i ci之间欧式距离的单调函数,常用的高斯径向基函数为: ρ ( x , c i ) = e − β i ∣ ∣ x − c i ∣ ∣ 2 \rho(x,c_i)=e^{-\beta_i||x-c_i||^2} ρ(x,ci)=eβi∣∣xci2
  • 具有足够多隐层神经元的RBF网络能以任意精度逼近任意连续函数。
  • 训练过程:
    • 确定神经元中心 c i c_i ci,常用的方式有随机采样、聚类等;
    • 利用BP算法等来确定参数 w i w_i wi β i \beta_i βi.

ART(自适应谐振理论)网络

  • ART网络是竞争型学习(一种无监督学习策略,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制,也称为“胜者通吃”原则)的重要代表,由比较层、识别层、识别阈值和重置模块构成。
    • 比较层:负责接收输入样本,并将其传递给识别层神经元。
    • 识别层:其中的每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类;在接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元;获胜神经元将向其他识别层神经元发送信号,抑制其激活。(竞争的最简单方式是:计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者获胜)
    • 识别阈值:与“输入向量和获胜神经元所对应的代表向量之间的相似度”进行对比,若相似度大于识别阈值,则当前输入样本将被归为该代表向量的所属类别,同时,网络连接权将会更新,使得以后在接收到相似输入样本时,该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜。
    • 重置模块:当相似度不大于识别阈值时,重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。
  • 当识别阈值较高时,输入样本将会被分成比较多、比较精细的模式类,值较低时,会产生比较少、比较粗略的模式类。
  • 优点:可进行增量学习或在线学习,ART网络较好的缓解了竞争型学习中的“可塑性-稳定性窘境”(可塑性:指有学习新知识的能力;稳定性:在学习新知识时要保持对旧知识的记忆)。
  • 拓展:ART2网络(能处理实值输入)、FuzzyART网络(结合模糊处理)、ARTMAP网络(可进行监督学习)

SOM(自组织映射)网络

  • SOM网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。
    机器学习笔记-第五章神经网络_第4张图片
  • 如图所示,SOM网络中的输出层神经元以矩阵方式排列在二维空间中,每个神经元都拥有一个权向量,网络在接收输入向量后,将会确定输出层获胜神经元,它决定了该输入向量在低维空间中的位置
  • SOM的训练目的:为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。
  • 训练过程:
    • 在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,称为最佳匹配单元;
    • 最佳匹配单元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小,这个过程不断迭代,直至收敛。

级联相关(Cascade-Correlation)网络

  • 级联相关网络是结构自适应网络的重要代表,有 “级联”“相关” 两个主要成分。
    • 结构自适应网络:将网络结构当作学习目标之一,希望能在训练过程中找到最符合数据特点的网络结构
    • 一般的神经网络通常是假定网络结构是固定的,训练的目的是利用训练样本来确定合适的连接权、阈值等参数。
      机器学习笔记-第五章神经网络_第5张图片
  • 级联:指建立层次连接的层级结构。
    • 开始训练时,网络只有输入层和输出层,处于最小拓扑结构;
    • 随着训练的进行,新的隐层神经元逐渐加入,从而创建其层级结构;
    • 当新的隐层神经元加入时,其输入端连接权值是冻结固定的。
  • 相关:指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。
  • 优点:无需设置网络层数、隐层神经元数目,训练速度较快;
  • 缺点:在数据较小时易陷入过拟合。

Elman网络

  • Elman网络是最常用的递归神经网络之一,其隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。
    • 递归神经网络允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号,这样使得网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关,从而能处理与时间有关的动态变化。
  • Elman网络中隐层神经元通常采用Sigmoid激活函数,而网络的训练常通过推广的BP算法进行。
    机器学习笔记-第五章神经网络_第6张图片

Boltzmann机

  • Boltzmann机是一种“基于能量的模型”(为网络状态定义一个“能量”,能量最小化时,网络达到理想状态,而网络的训练就是在最小化这个能量函数)。
    机器学习笔记-第五章神经网络_第7张图片
  • Boltzmann机神经元分为显层与隐层两层,且都是布尔型的,只能取0(抑制)、1(激活)两种状态。
    • 显层:表示数据的输入与输出;
    • 隐层:表示数据的内在表达。
  • 向量 s ∈ { 0 , 1 } n s\in\{0,1\}^n s{0,1}n表示 n n n个神经元的状态, w i j w_{ij} wij表示神经元 i i i j j j之间的连接权, θ i \theta_i θi表示神经元 i i i的阈值,则状态向量 s s s所对应的Boltzmann机能量定义为 E ( s ) = − ∑ i = 1 n − 1 ∑ j = i + 1 n w i j s i s j − ∑ i = 1 n θ i s i E(s)=-\sum_{i=1}^{n-1}\sum_{j=i+1}^nw_{ij}s_is_j-\sum_{i=1}^n\theta_is_i E(s)=i=1n1j=i+1nwijsisji=1nθisi状态向量 s s s出现的概率仅由其能量与所有可能状态向量的能量确定: P ( s ) = e − E ( s ) ∑ t e − E ( t ) P(s)=\frac{e^{-E(s)}}{\sum_te^{-E(t)}} P(s)=teE(t)eE(s)
  • Boltzmann机的训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。
  • 标准Boltzmann机是一个全连接图,复杂度高;
  • 受限Boltzmann机(RBM) 仅保留显层与隐层之间的连接,结构由完全图简化为二部图。
  • 受限Boltzmann机常用“对比散度”(CD)算法进行训练。
    • 对每个训练样本 v v v,先根据 P ( h ∣ v ) = ∏ j = 1 q P ( h j ∣ v ) P(h|v)=\prod_{j=1}^qP(h_j|v) P(hv)=j=1qP(hjv)计算出隐层神经元状态的概率分布,然后根据这个概率分布采样得到 h h h
    • 类似地根据 P ( v ∣ h ) = ∏ i = 1 d P ( v i ∣ h ) P(v|h)=\prod_{i=1}^dP(v_i|h) P(vh)=i=1dP(vih) h h h产生 v ′ v' v,再从 v ′ v' v产生 h ′ h' h
    • 连接权的更新公式为: Δ w = η ( v h T − v ′ h ′ T ) \Delta w=\eta(vh^T-v'h'^T) Δw=η(vhTvhT)

深度学习

  • 多隐层神经网络难以直接用经典算法(如BP算法)进行训练,因为误差在多隐层内逆传播时,往往会发散而不能收敛到稳定状态。
  • 无监督逐层训练是多隐层网络训练的有效手段,基本思想是:
    • 预训练:每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入;
    • 微调:接着对整个网络进行微调训练。
    • 例:深度信念网络(DBN) 中,每层都是一个受限Boltzmann机。在使用无监督逐层训练时,首先训练第一层,这是关于训练样本的RBM模型,然后将第一层训练好的隐结点视为第二层的输入结点,对第二层进行预训练;各层预训练完成后,再利用BP算法等对整个网络进行训练。
  • 权共享:让一组神经元使用相同的连接权,该策略在卷积神经网络(CNN) 中发挥了重要作用。
    机器学习笔记-第五章神经网络_第8张图片
    • CNN复合多个卷积层和采样层对输入信号进行加工,然后在连接层实现与输出目标之间的映射;
    • 每个卷积层都包含多个特征映射构成,每个特征映射是一个由多个神经元构成的平面,通过一种卷积滤波器提取输入的一种特征;
    • 采样层(汇合pooling)层,作用是基于局部相关性原理进行亚采样,从而在减少数据量的同时保留有用信息;
    • CNN可用BP算法进行训练,但在训练中,无论是卷积层还是采样层,其每一组神经元(即每个平面)都是用相同的连接权,从而大幅减少了需要训练的参数数目。
  • 多隐层堆叠、每层对上一层的输出进行处理的机制,可看作是对输入信号进行逐层加工,从而把初始的、与输出目标之间联系不太密切的输入表示,转化成与输出目标联系更密切的表示,使得原来仅基于最后一层输出映射难以完成的任务成为可能。换言之,通过多层处理,逐渐将初始的底层特征表示转化为高层特征表示后,用简单模型即可完成复杂的分类等学习任务。
  • 可将深度学习理解为进行“特征学习”或“表示学习”。

你可能感兴趣的:(机器学习,神经网络,人工智能)