您的位置:首页 > 理论基础 > 计算机网络

《机器学习》随心记-周志华版 神经网络

2018-03-30 18:20 288 查看
1 神经网络是什么
       神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
       那这个定义是我们所说的神经网络吗?
       不全面!我们机器学习里的神经网络指的是“神经网络学习”。
       接下来,我们从神经网络两个方面进一步学习什么是机器学习的神经网络。
2 神经元模型
       神经元是什么?回顾一下生物课上的知识,神经元,是构成神经系统结构和功能的基本单位。每个神经元可以有一或多个树突,可以接受刺激并将兴奋传入细胞体。如图:



       见书P98第二段。
类比一下,在神经网络中最基本的成分也是神经元模型。接下来介绍一下M-P神经元模型,如图:
      


       一个神经元模型是否能输出,是由其他神经元的输入乘以相应的权值与阈值作比较判断的。这里提出一点就是激活函数,常采用sigmoid函数。前者阶跃函数有着不连续不光滑的特点,如图:
      


3 感知机和多层网络
       首先介绍一下,简单的神经网络组成感知机。感知机是由两层神经网络组成,输入层和输出层,也称“阈值逻辑单元”。如图:



见P99
       从上面的例子可以看出,在整个训练过程中,阈值和权重是我们最关心的两个变量。
       这里,我们有个办法将二者联系起来。就是规定,阈值可看作一个固定输入为-1.0的“哑结点”所对应的权重。这样我们就可以统一为权重的学习。
      


       当然,感知机学习结构太简单了。对于一些复杂的情况,感知机的能力就达不到我们的需求。比如如图,我们发现异或情况就是感知机解决不了的:



我们为了应付更复杂的情况,提出在输出层和输入层之间添一层神经网络,称为隐层或者隐含层,如图:



这样的情况就解决了之前难以解决的异或问题。
当然,我们继续扩展,产生这样一张图。这样的一张图,每一层神经元与下一层神经元完全项链,神经元之间不存在同层连接,也不存在跨层连接,这样的网路称为“多层前馈网络”。这里的前馈不是指信号不能向后传,而是指在网络拓扑结构上不能出现环或者回路。



而整个神经网络的学习,其实就是调整权值和阈值的过程。
 
4 误差逆传播算法(error BackPropagation,简称BP)
       我们来看看BP算法。给定训练集D,通过图来理解,





  BP是一个迭代学习的算法,基于梯度下降对参数w,j,v,r进行更新。



算法步骤为:



标准BP算法和累积BP算法:
BP算法的目标是最小化训练集D上的累积误差:



首先清楚,标准BP算法是针对一个训练样例更新权重和阈值,而累积BP算法是将整个训练集D读取一遍后才更新一次。
标准BP算法一般来说会获得更好的解。但是累积BP算法更快。
 
5 如何设置隐层的神经元个数?
       利用试错法:
(1)    早停:将数据分为训练集和验证集,训练集来计算梯度、更新连接权和阈值。验证集来估计误差,当训练集误差降低且验证集误差升高时,返回最小验证集误差的连接权和阈值。
(2)    正则化:在误差目标函数里加一个描述网络复杂度的成分。


 
6 全局最小和局部最小
   全局最小和局部最小的概念比较简单,就不介绍了。直接提出如何跳出局部最小的几个常用方法:
(1)    以多组不同参数值初始化多个神经网络
(2)    模拟退火:每一步都以一定概率接受比当前解更差的结果。迭代过程中接受“次优解”的概率需要逐渐降低。
(3)    随机梯度下降
(4)    遗传算法:利用生物中优胜劣汰的原则,对数据集进行训练。利用遗传算法就是在交叉和变异两步过程的随机性跳出局部最小。



7 常见的神经网络
(1)RBF网络(径向基函数网络)
径向基函数:所谓径向基函数,其实就是某种沿径向对称的标量函数。通常定义为空间中任一点x到某一中心c之间欧氏距离的单调函数,可记作k(||x-c||),其作用往往是局部的,即当x远离c时函数取值很小。例如高斯径向基函数:
 




RBF网络表示为:







第一步:确定隐层神经元中心ci,常采用随机采样、聚类的方法。
第二步:利用BP算法确定参数。
优点:逼近能力,分类能力和学习速度等方面都优于BP神经网络,结构简单、训练简洁、学习收敛速度快、能够逼近任意非线性函数,克服局部极小值问题。原因在于其参数初始化具有一定的方法,并非随机初始化。
细节请看CSND博客:
https://blog.csdn.net/ecnu18918079120/article/details/53365341
 
(2)ART(Adaptive Resonance Theory,自适应谐振理论)网络
这种神经网络属于竞争型学习,其根本区别在于仅有一个竞争获胜的神经元被激活,其他神经元状态被抑制。
该网络由比较层、识别层、识别阈值和重置模块构成。如图,


图中分别为比较层C和识别层R,包含3种控制信号:复位信号R、逻辑控制信号G1和G2。 如果C层中Xi全为0,G2=0,否则G2=1。控制的是R层的状态是竞争还是输出。
当R层输出向量的各分量全为0而输入向量X不是0向量时,G1为1,否则G1为0。G1控制着C层的状态是直接输出输入信号还是比较。 

C层

R层
细节请看CSND博客:
https://blog.csdn.net/lg1259156776/article/details/47780695

(3)SOM(Self-Organizing Map, 自组织映射)网络
它是一种无监督的竞争学习网络,学习过程中不需要任何监督信息。SOM网络将高维数据映射到低维空间中,一般是一维或者两维,并且映射过程中保持数据的拓扑结构不变,即高维空间中相似的数据在低维空间中接近。



SOM由两层神经元组成:输入层和输出层。输入层的每个神经元和输出层的所有神经元连接。输入层的神经元数量由输入空间决定。输出层神经元的数量由用户定义,每个输出神经元对应一个位置信息(可以是一维空间的坐标或者二维空间中的坐标),并且每个输出神经元拥有一个权重向量,权重向量的维度等于输入神经元数。
对每个输入实例,计算其和所有输出神经元权重向量之间的距离,距离最小的输出神经元称为获胜神经元。该实例在低维空间中的位置就是获胜神经元所处的位置。SOM训练的目的就是找到一组权重向量,使得输入数据在低维空间中拓扑结构不变。
 


细节请看CSND博客:
https://blog.csdn.net/VictoriaW/article/details/78033287
(4)级联相关网络
一般的神经网络是固定好拓扑结构,然后训练权重和阈值。级联相关神经网络是从一个小网络开始,自动训练和添加隐含单元,最终形成一个多层的结构。
 


细节请看CSND博客:
https://blog.csdn.net/xc_xc_xc/article/details/53163478
(5)Elman网络
让一些神经元的输出反馈回来作为输入信号,使得网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻的网络状态有关。
递归网络



 
 
(6)Boltzmann机
神经元分为两层:显层和隐层。显层用于表示数据的输出和输入,隐层则理解为数据的内在表达。



状态向量出现在概率为:



Boltzmann机的训练过程就是将训练样本视为一个状态向量,使其出现的概率尽可能大。



在现实情况,Boltzmann机是不可行的。所以提出了受限Boltzmann机。
受限Boltzmann机常用对比散度算法来训练。





细节请看见CSND博客: https://blog.csdn.net/itplus/article/details/19408143  
8 深度学习
       深度学习中会遇到的一个问题:发散不能收敛。
(1)    预训练+微调
(2)    权共享:无论是卷积层还是采样层,都是用的相同的连接权,减少了大量的参数数目。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息