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

1. 概述

       神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
       神经网络中最基本的成分是神经元模型,即上述定义中的“简单单元”。如果某神经元的电位超过一个阈值,那么它就会被**,即兴奋起来,向其他神经元发送化学物质。

2. 神经元模型

       M-P神经元模型,在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“**函数”处理以产生神经元的输出。

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

3. 感知机与多层网络

3.1 感知机

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

      感知机能容易的实现逻辑与、或、非运算。

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

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

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

3.2 多层前馈神经网络

       每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接。
机器学习西瓜书(周志华)第五章 神经网络
机器学习西瓜书(周志华)第五章 神经网络

4. 误差逆传播算法(BP算法)

      误差逆传播算法(error BackPropagation)又称反向传播算法,是多层网络中的杰出代表,它是迄今最成功的神经网络学习算法。现实生活中使用神经网络时,大多是在用BP算法进行训练。值得指出的是,BP算法不仅可以用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络

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

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

4.1 BP算法具体推导

      为了方便起见,只定义了三层网络,输入层(第0层),隐藏层(第一层),输出层(第二层)。并且每个结点没有偏置(有偏置原理完全一样),**函数为sigmod函数(不同的**函数,求导不同)。

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

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

      需要注意的是BP算法的目标是要最小化训练集D上的累积误差

E=1mk=1mEkE = \frac{1}{m}∑_{k=1}^mE_k

      但是以上介绍的标准BP算法每次仅针对一个训练样例更新权值和阈值。
      累积误差逆传播算法:如果类似地推导出基于累积误差最小化的更新规则,就得到累积误差逆传播算法。

4.2 标准BP算法和累积BP算法

标准BP算法每次更新只针对单个样例,参数更新的非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。因此为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次的迭代。
累积BP算法直接针对累积误差最小化,它读取整个训练集D一遍后才对参数进行更新,其参数更新的频率低得多。但是在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这时标准BP算法往往会更快获得较好的解,尤其是在训练集D非常大时更明显。

4.3 BP神经网络过拟合

      用“试错法”设置隐藏神经元的个数。
      由于其强大的表达能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。
      两种策略:“早停”、“正则化”

  • 早停
    将数据分为训练集和验证集,训练集用于计算梯度、权值、阈值,验证集用于估计误差,当训练集误差下降,验证集误差上升,则停止训练。
  • 正则化
    在误差目标函数中增加一个用于描述网络复杂度的部分;例如权值与阈值的平方和。
    误差目标函数:
    E=λ1mk=1mEk+(1λ)iωi2E = \lambda\frac{1}{m}∑_{k=1}^mE_k+(1-\lambda)∑_{i}\omega_i^2
    其中λ(0,1)\lambda∈(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证来估计。
    增加权值和阈值的平方和这一项后,训练过程将偏好比较小的权值和阈值,从而使得网络输出更加“光滑”,从而对过拟合有所缓解。

4.4 全局最小和局部最小

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

  • 多组不同参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小的解作为最终参数。
  • 使用模拟退火技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于跳出局部极小。但是也会造成“跳出”全局最小。
  • 使用随机梯度下降,与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。但是何时能停止呢?
  • 遗传算法常用来训练神经网络以更好地逼近全局最小。

以上用于跳出局部极小的技术大多是启发式,理论上尚缺保障

5. 神经网络的各种常用算法

      将许多个神经元按一定的层次结构连接起来,就得到了神经网络,而不同的神经元结构、不同的**函数选择、不同的误差指标选择、不同的学习策略都会导致形成不同的神经网络

5.1 RBF网络

      RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络。它的特点是:单隐层前馈神经网络结构;使用径向基函数作为隐层的**函数,而输出层则是对隐层神经元输出的线性组合。具体训练过程:第一步,确定神经元中心,常用的包括随机采样、聚类等;第二步,利用BP算法来确定参数。

5.2 ART网络

      ART(Adaptive Resonance Theory,自适应协振理论)网络是一种竞争型(competitive learning)学习网络。竞争型学习是神经网络中一种常用的无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻只有一个竞争获胜的神经元被**。它的特点是:两层的神经网络结构,分别是比较层(输入)和识别层(输出);无监督的学习方式;竞争型的神经网络,即同时只有一个识别层结点被**;识别层的神经元数量可以动态增加。一个简单的ART网络是这样训练的:对输入的数据向量,找到与每个识别层神经元所对应的模式类代表向量的距离最小的神经元。如果这个距离小于阈值,则将这个数据归入该神经元所属的类中,并重新计算这个神经元的代表向量,否则重置模块并在识别层上增设一个新的神经元,其代表向量就设为当前输入向量。

5.3 SOM网络

      SOM(Self-Organizing Map,自组织映射)网络也是一种竞争学习型的无监督神经网络。它的特点是:两层的神经网络结构,分别是输入层和输出层(输出层以矩阵方式排列在二维空间中);无监督的学习方式;竞争型的神经网络,即同时只有一个识别层结点被**;训练过程如下:对每个训练样本,找到距离训练样本最近的输出神经元,我们称为最佳匹配单元;调整最佳匹配单元及其附近神经元的权向量,使得权向量与当前输入样本的距离缩小;不断迭代直到收敛。

5.4 级联相关网络

      级联相关网络是一种结构自适应网络,其不像一般的神经网络,它还将网络结构也当作学习的目标之一。训练过程如下:刚开始训练时,只有输入和输出层,处于最小拓扑结构;随着训练的进行,逐渐加入新的隐层神经元;其是通过最大化新神经元的输出与网络误差之间的相关性(correlation)来训练相关参数。和前馈神经网络相比,级联相关网络无需设置网络层数、隐层神经元数目,所以训练速度较快,但在数据较小时容易陷入过拟合。

5.5 Elman网络

      递归神经网络(recurrent neural networks)允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。这样的结构使得网络状态不仅与自身状态相关,还跟前一刻的状态相关,从而能处理与时间有关的动态变化。Elman网络是最常用的一个递归神经网络,其使用隐层神经元的输出与下一刻的神经元输入一起作为下一刻的输入。它使用Sigmoid**函数,并使用BP算法进行训练

5.6 Boltzmann机

      Boltzmann机是一种“基于能量的模型”,其为网络状态定义一个“能量”,当能量最小化时网络达到理想状态。它的特点是:两层结构,显层与隐层,显层即代表输入也代表输出,隐层则被理解为数据的内部表达;神经元是布尔型训练过程(对比散度 Contrastive Divergence 算法)如下:通过输入层算出隐层分布,再通过隐层分布重新算出输入层的新分布;并利用新分布与旧分布之间的差别调整连接权重

6. 深度学习

      深度学习理论上来说,参数越多的模型复杂度越高,这意味着它能完成更复杂的学习任务。但同样的,复杂模型的缺点是训练慢,且易陷入过拟合。但随着大数据、云计算时代的到来,计算能力大幅提高可缓解训练低效性,训练数据的大幅增加则可降低过拟合风险,所以以“深度学习”为代表的复杂模型开始受到人们的关注。
      深度学习无法直接使用BP算法进行训练,因为误差在多隐层内传播时,往往会“发散”而不能收敛到稳定状态。
      深度学习采用无监督逐层训练(unsupervised layer-wise training)来训练模型,其基本思想是每次用无监督方法训练一层隐结点,并用本层结点的输出作为下一层隐结点的输入,这称为“预训练”(pre-training);在预训练全部完成后,再对整个网络进行“微调”(fine-tuning)训练。比如,在深度信念网络(Deep Belif networks,简称DBN)中,每层都是一个受限Boltzmann机,所以训练过程是对每一层的Boltzmann机进行训练,等各层预训练完成后,再利用BP算法等对整个网络进行训练。这种“预训练+微调”的训练策略很值得我们学习,其等于将大量参数分组,先对每组进行无监督学习找到局部较优解,然后再基于这些局部较优解进行全局寻优。既保证了*度,还有效的节省了训练开销我们可以从另一个角度来理解深度学习,其多隐层堆叠,可看作是在对输入信号进行逐层加工,从而把初始的、与输出目标之间联系不太密切的输入表示,转换成与输出目标联系更密切的表示。换言之,通过多层处理,逐渐将初始“低层”的特征转换为“高层”特征表示,使得用简单模型就能完成复杂的分类等学习任务。由此,我们可以将深度学习理解为进行“特征学习”的过程。

公式参考: [https://blog.csdn.net/weixin_41725746/article/details/90483885#3_457]

7. 课后练习参考答案

[https://blog.csdn.net/icefire_tyh/article/details/52065224]

参考文献:
[1] [统计学习-李航]
[2] [机器学习西瓜书-周志华]
[3] [https://blog.csdn.net/bitcarmanlee/article/details/78819025]