5.1 神经元模型
1.神经网络
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
2.神经元模型
-
神经元就是神经网络中的简单单元。
在神经网络中,每个神经元与其他神经元相连接,当它当它"兴奋"时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;
如果某神经元的电位超过了一个"阈值",那么它就会被激活"兴奋"起来,向其他神经元发送化学物质。 -
M-P神经元模型
在该模型中,该神经元接收来自其他神经元的传递来的输入信号,这些输入通过带权重的连接进行传递,该神经元接受到的总输入值将与神经元的阈值θ进行比较,然后通过"激活函数"处理产生神经元的输出。 -
激活函数
1)阶跃函数(理想的激活函数)
然而阶跃函数,不连续、不光滑、不可微,因此我们实际上使用Sigmod函数作为激活函数。
2)Sigmod函数
把上述多个M-P神经元连接起来,就形成了神经网络。
5.2 感知器与多层网络
1. 感知器
1)感知器的构成:有两层神经元,输入层和输出层。
输入层接受外界信号传递给输出层,输出层是MP神经元。
感知器可以进行与、或、非的逻辑运算。
假设
-
与(X1 & X2)
令w1=w2=1,阈值θ=2,则y=f(1*x1 + 1 * x2 - 2),当且仅当x1 = x2 = 1时,y = 1。 -
或(X1 | X2)
令w1=w2=1,阈值θ=0,则y=f(1*x1 + 1 * x2 - 0),当x1 = 1或x2 = 1时,y = 1。 -
非(!X1)
令w1=-0.1,w2=0,阈值θ=0,则y=f(-0.1 * x1 + 0 * x2 - 0),当x1 = 1时,y = -1;当x1 = 0时,y = 1。
2)感知器的算法
-
感知器算法基本思路
给定一个数据集,对训练样本(x,y)进行尝试,如果预测值与实际值相符,那么就不对参数矩阵(wi(权重),θ(阈值))进行改变;如果预测值与实际值不符,那么就要对参数矩阵(wi,θ)进行调整,最终得到最佳的(wi,θ)。
比如说,在学习中,我们的学习方式导致我们学习成绩的好坏。如果实际成绩与我们预测的成绩相符,那么我们就不调整学习方式,如不符,就调节学习方式。下图中的b就是书中所说的θ
若问题的线性可分的,那么通过不断的调整,感知器的学习最终会收敛(上述学习率梯度下降法也有对收敛的感受),最终求得一个合适的权重矩阵w=(w1,w2,……,wn,wn+1)。wn+1就是最终调整后的θ。
若大家看不懂的话,这里有详细的讲解视频。(感知器算法的详细讲解)
(个人感觉看了视频,再去看书之后会清晰很多)但是,要解决非线性可分问题,两层的感知器是无法满足需求的。我们需要考虑使用多层神经网络。
2.多层神经网络
多层神经网络的结构:
1)输入层:都是输入样例x的神经元,没有激活函数的功能。
2)隐含层:拥有激活函数的功能的神经元。
3)输出层:拥有激活函数的功能的神经元,并且输出结果。
- 每层神经元必须与下一层完全互连
- 神经元之间不存在同层连接
- 神经元不可跨层连接
5.3 误差逆传播算法(BP算法)
给定训练集D,一共有m
个样本,每一个样本表示为(xi,yi),其中xi∈Rd,yi∈Rl,分别指输入的x由d
个属性,输出l
(小写的L)维实值向量。
设一个多层前馈神经网络,有d
个输入神经元,l
个输出神经元,q
个隐层神经元。
其中,设隐层第h
个神经元的阈值用γh表示,输出层第j
个神经元的阈值用θj表示。
设输入层第i
个神经元与隐层第h
个神经元之间的权重为vih。
设隐层第h
个神经元与输出层第j
个神经元之间的权重为whj。
设隐层中第h
个神经元接收到的总输入为αh
设输出层第
j
个神经元接收到的总输入为βjbh指的是隐层中第
h
个神经元的输出。整个网络如下假设隐层和输出层神经元使用的函数是对率函数
以上述网络中隐层到输出层的连接权重whj为例子进行推导。
BP算法基于梯度下降法策略(上面给出过梯度下降法的讲解视频),以目标的 负梯度方向对参数进行调整。对均方误差Ek,给定学习率η,有
通过上述类似求法,我们还可以得到从输入层到隐层的各参数更新式(注意我们的前提:函数是对率函数)
在上述的各参数更新式中,都涉及了学习率η,它相当于梯度下降法中的步长,步长太小则收敛速度过慢,步长太大则容易导致振荡而发散,因此学习率η常设置为0.1。注意:从输入层到隐层的η不一定等于从隐层到输出层的η。
1)先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果
2)然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行)
3)最后根据隐层神经元的误差来别连接权和|词值进行调整(第7行),该迭代过程循环进行,直到达到某些停止条件为止。
上述的BP算法是"标准BP算法",每次只针对一个训练样例更新权重w和阈值θ,即图中的算法的更新规则是基于单个的Ek推导的;而BP算法的目标是要最小化训练集D上的累积误差。
如果同样类似地推导出基于累积误差最小化的更新规则,可得到累积BP算法。
标准BP算法 | 累积BP算法 |
---|---|
每次更新只针对单个样例,参数更新频繁 | 直接对累积误差进行最小化,读取整个数据集之后才对参数更新,更新频率低 |
对不同样例的参数更新效果可能会出现"抵消"现象,因此,为了同样达到累积误差最小点,需要进行多次迭代。 |
实际上很多任务中,累积误差下降到一定程度之后,进一步下降会很慢,这是标准BP算法通常会更快获得较好的解(当样本非常大时更明显)。
只要隐层的神经元个数足够多,则网络就能以任意精度逼近任意复杂度的连续函数。如何设置个数仍然是问题,实际上通常靠"试错法"调整神经元个数。
BP算法经常会遇见过拟合的问题:其训练误差持续降低,但测试误差却可能上升。
对此,有两种策略缓解过拟合。
-
"早停"
将数据集D分成训练集和测试集。
训练集用来计算梯度步长、更新权重和阈值;测试集用来估计误差。
若训练集误差降低但测试集误差升高,则停止训练,同时返回具有最小测试集误差的权重和阈值。 -
"正则化"
其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。
如,权重和阈值的平方和(用于描述网络复杂度的部分)。仍令Ek表示第k个样例上的误差,wi表示权重和阈值。则误差目标函数变为
BP算法实现与例子:https://blog.csdn.net/qdbszsj/article/details/79110888
BP代码的实现与例子:https://www.php.cn/python-tutorials-393008.html
5.4 全局最小与局部最小
用E表示神经网络在训练集上的误差,E是关于权重w和阈值θ的函数。神经网络训练过程就是在参数空间中,寻找最佳的w和θ,使得E最小。这里的"最佳"指的有:
- 局部最小:指参数空间中的某个点,其相邻点的误差值均不小于该点的误差值。
- 全局最小:指参数空间中所有点的误差值均不小于该点的误差值。
- 以多组不同的参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小值对应的解作为最终参数。
- 随机梯度下降法,与标准梯度下降不同,随机梯度下降加入了随机因素,即使在局部最小时,梯度也不一定为0,这样就会跳出局部最小继续搜索。
-
模拟退火:在每一步都以一定的概率接受比当前解更差的结果,从而有助"跳出"局部最小,在每次迭代过程中,接受"次优解"的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
关于局部最小以及全局最小、等高图像的视频:https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1049099161&courseId=1004570029
5.5 其他常见神经网络
1.RBF网络
一种单隐层前馈神经网络,隐层使用径向基函数作为神经元激活函数,输出层是对隐层神经元输出的线性组合。RBF网络可表示为:
第一步,确定神经元中心ci常用的方式包括随机采样、聚类等;
第二步,利用 BP 算法等来确定参数wi和βi。
2.ART网络
竞争型学习是神经网络中一种无监督学习策略。
在使用该策略时,遵循"胜者通吃"原则:
网络的输出神经元相互竞争,每一时刻仅有一个获胜的神经元被激活,其他神经元被抑制。
ART网络是竞争型学习的代表,该网络由比较层、识别层、识别阈值、重置模块构成。比较层负责接收输入样本,并将其传递给识别层神经元。
识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。
流程如下:
1)在接收到比较层的输入信号后识别层神经元之间相互竞争以产生获胜神经元。竞争方式是:计算输入向量与每个识别层神经元所对应模式类的代表向量之间的距离,距离最小者胜。
2)获胜神经元将向其他识别层神经元发送信号,抑制其撤活。
3)与识别阈值比较:
① 若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阔值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权重将会更新(使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜)。
② 若相似度不大于识别阑值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。
从以上流程可以看出,与识别阈值比较这一步很重要。
当识别阈值较高,那么相似度将极有可能总是小于识别阈值,因此输入样本将会被分比较多和精细的模式类;
当识别阈值较低,则会产生较少、较粗略的模式类。
竞争型学习中有一个问题,即"可塑性-稳定性窘境"
可塑性:指神经网络要有学习新知识的能力。(可以理解为预习能力)
稳定性:指神经网络在学习新知识时要保持对旧知识的记忆。(复习能力)
而ART网络可以很好的缓解这个窘境,使得ART网络有个优点:
可进行增量学习或在线学习
3.SOM网络
SOM网络是一种竞争学习型的无监督神经网络。
它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。
SOM的训练目标:
为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。
SOM的流程:
在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最小的神经元获胜,称为最佳匹配单元。
然后,最佳匹配单元及其邻近神经元的权向量将被调整,使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。
4.级联相关网络
- 构造性网络:与一般神经网络不同,构造性网络不假定事先的网络结构,将网络结构也当作学习目标之一,并希望能在训练过程中找到最符合数据特点的网络结构。
-
级联相关网络:它是构造性网络的重要代表。主要有两个部分:
1)级联
级联是指建立层次连接的层级结构。
在开始训练,网络只有输入层和输出层的最小拓扑结构。
随着训练的进行,新的隐层神经元逐渐加入,从而创建起层级结构。
当新的隐层神经元加入时,其输入端连接权重是固定的。
2)相关
通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。
级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易过拟合。
5.Elman网络
-
递归神经网络
递归神经网络,与前馈神经网络不同,前馈神经网络是拓扑结构(不允许有回路),而递归神经网络允许出现环形结构(有回路)。 -
Elman网络
Elman网络是常用的递归神经网络之一。它隐层神经元的输出将被反馈,与下一时刻输入层神经元的信号一起,输入到隐层。
Elman网络的隐层神经元采用对率函数作为激活函数,网络的训练则常用BP算法。
6.Boltzmann机
神经网络中有一类模型是为网络状态定义一个"能量",能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。
Boltzmann机就是一种"基于能量"的模型。
其神经元分为两层:显层与隐层
显层用于表示数据的输入与输出;隐层则被理解为数据的内在表达。
Boltzmann 机中的神经元都是布尔型的,只能取0,1两种状态,
状态1表示激活,状态0表示抑制。
5.6 深度学习
随着计算能力的大幅提升,参数越多、复杂度越高的模型越来越受到关注,因为复杂度越高的模型,意味着能完成更加复杂的学习任务。以"深度学习"为代表的复杂模型开始受到人们的关注。
从上面的学习可知,模型复杂度可以通过增加单隐层中的神经元数目来实现,但从增加模型复杂度的角度来说,增加隐层的层数更加有效,从而有多隐层神经网络。多隐层的训练难以使用BP算法来训练,因为容易"发散"。
因此。无监督逐层训练是多隐层训练的有效手段。
无监督逐层训练:(预训练+微调)
1)“预训练”:每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入
2)预训练完成后,对整个网络进行“微调”训练(fine tuning)
3)"预训练+微调"可以视为将大量参数分组,每组先找到局部较好,再基于局部较优联合寻找全局最优。这样子可以节省训练开销。
权共享(节省训练开销的另一种策略)
让一组神经元使用相同的连接权,在卷积神经网络中发挥了重要作用。
深度学习就是通过多层处理,逐渐将初始的"低层"特征表示转化为"高层"特征表示,用"模型"完成复杂的分类等学习任务,即深度学习进行的是"特征学习"或"表示学习"。