机器学习系列学习笔记之——神经网络

1、神经元模型

  "M-P神经元模型"

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

                                               

                                                                            图1-1 M-P神经元模型

  把多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。

  一个神经网络可以视为包含了许多参数的数学模型,这个模型是若干个如下式所示的函数相互嵌套而得。

                                                             (1-1)

  其中,f是激活函数,典型的激活函数是sigmoid函数。如下图。激活函数可以使得神经网络具有非线性性。

                                                    

                                                                         图1-2 Sigmoid函数图像

                     

2、感知机与多层网络    

  感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。

  感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限。它甚至不能解决异或这样简单的非线性可分问题。

  要解决非线性可分问题,需考虑使用多层功能神经元。两层感知机就能解决异或问题。输出层与输入层之间的一层神经元,被称为隐含层。隐含层和输出层神经元都是拥有激活函数的功能神经元。

                                                   

                                                                       图2-1 单层前馈网络 

  常见的神经网络是形如图1-3所示的层级结构,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构同城称为“多层前馈神经网络”,其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。

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

3、误差逆传播算法

  多层网络的学习能力比单层感知机强的多,而多层网络的学习,单靠感知机的学习规则显然不过,需要更强大的学习算法。误差逆传播(error back propagation,BP)算法就是其中最杰出的代表,它是迄今最成功的神经网络学习算法。

  由于其强大的表示能力,BP神经网络经常遭遇过拟合。两种策略常用来缓解BP网络的过拟合。

  第一种策略是“早停”:将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值;

  第二种策略是“正则化”,在误差目标函数中增加一个用于描述网络复杂度的部分:

                                                                (3-1)

       其中用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

4、全局最小与局部极小

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

  ·以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。

  ·使用“模拟退火”技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。

  ·使用随机梯度下降,随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。

  ·遗传算法(genetic algorithms)

5、其他常见神经网络

  ·RBF网络

  RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。

  ·ART网络

  ART(Adaptive Resonance Theory,自适应谐振理论)网络,它具有一个很重要的优点:可进行增量学习或在线学习。

  ·SOM网络

  SOM(Self-Organizing Map,自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高纬输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。

                                              

                                                                                   图5-1 SOM网络结构

  ·级联相关网络

   一般的神经网络模型通常假定网络结构是事先固定的,训练的目的是利用训练样本来确定合适的连接权、阈值等参数。结构自适应网络则将网络结构也当作学习的目标之一,并希望能在训练过程中找到最符合数据特点的网络结构。级联相关(Cascade-Correlation)网络是结构自适应网络的重要代表。

  ·Elman网络

  Elman网络是最常用的递归神经网络之一,它的结构与多层前馈网络很相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。隐层神经元通常采用sigmoid激活函数,而网络的训练则常通过推广的BP算法进行。

                                                      

                                                                            图5-2 Elman网络结构

  

  ·Boltzmann机

  Boltzmann机是一种“基于能量的模型”,常见结构如图5-3(a)所示,其神经元分为两层:显层与隐层。显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达。Boltzmann机中的神经元都是布尔型的,即只能取0、1两种状态,状态1表示激活,状态0表示抑制。

                                               

                                                                           图5-3 Boltzmann机与受限Boltzmann机

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

6、深度学习

  深度学习算法实际包含了监督学习和无监督学习算法。

  典型的深度学习模型就是很深层的神经网络。显然,对神经网络模型,提高容量的一个简单办法是增加隐层的数目。隐层多了,相应的很神经元连接权、阈值等参数就会更多。模型复杂度也可通过单纯增加隐层神经元的数目来实现,但从增加模型复杂度的角度来看,增加隐层的数目显然比增加隐层神经元的数目更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。

  然而,多隐层神经网络难以直接用经典算法(例如标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会“发散”(diverge)而不能收敛到稳定状态。

  无监督逐层训练(unsupervised layer-wise training)是多隐层网络训练的有效手段,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这就是“预训练(pre-training)”;在预训练全部完成以后,再对整个网络进行“微调(fine-tuning)”训练。……各层预训练完成后,再利用BP算法等对整个网络进行训练。

  深度学习减少训练开销的策略:

  1)“预训练+微调” 的做法可视为将大量参数分组,对每组先找到局部看起来比较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。

  2)“权共享” 即让一组神经元使用相同的连接权。这个策略在卷积神经网络(CNN)中发挥了重要作用。以CNN进行手写数字识别任务为例,这是一种监督学习算法。在训练中,无论是卷积层还是采样层,其每一组神经元都是用相同的连接权,从而大幅减少了需要训练的参数数目。

  我们可以从另一个角度来理解深度学习。通过多层处理,逐渐将初始的“底层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。由此可将深度学习理解为进行“特征学习”(feature learning)或“表示学习”(representation learning)。

  以往在机器学习用于现实任务时,描述样本的特征通常需要由人类专家来设计,这成为“特征工程”。特征的好坏对泛化性能有至关重要的影响,人类专家设计出好特征也并非易事;特征学习则通过机器学习技术自身来产生好特征,这使机器学习想“全自动数据分析”又前进了一步。

  

原文地址:https://www.cnblogs.com/zichun-zeng/p/15154403.html