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

5.1 神经元模型

1.神经网络

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

2.神经元模型

  • 神经元就是神经网络中的简单单元。
    在神经网络中,每个神经元与其他神经元相连接,当它当它"兴奋"时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;
    如果某神经元的电位超过了一个"阈值",那么它就会被激活"兴奋"起来,向其他神经元发送化学物质。
  • M-P神经元模型
    M-P神经元模型
    MP神经元模型

    在该模型中,该神经元接收来自其他神经元的传递来的输入信号,这些输入通过带权重的连接进行传递,该神经元接受到的总输入值将与神经元的阈值θ进行比较,然后通过"激活函数"处理产生神经元的输出。
  • 激活函数
    1)阶跃函数(理想的激活函数)
    阶跃函数
    若阶跃函数作为激活函数,它的输出值只为"0"、"1”,分别对应“神经元抑制”、“神经元兴奋”。
    然而阶跃函数,不连续、不光滑、不可微,因此我们实际上使用Sigmod函数作为激活函数。

2)Sigmod函数

对数几率函数
Sigmod函数光滑可微,把输出值挤压到[0,1]之间,因此也称"挤压函数"。

把上述多个M-P神经元连接起来,就形成了神经网络。

5.2 感知器与多层网络

1. 感知器

1)感知器的构成:有两层神经元,输入层和输出层。
输入层接受外界信号传递给输出层,输出层是MP神经元。

感知器

感知器可以进行与、或、非的逻辑运算。
假设
其中的y的取值为1和-1,f为阶跃函数,有
阶跃函数

  • 与(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就是书中所说的θ

    感知器算法
    对于权重wi(n个)和阈值θ,我们可以将其统一看成都是权重,则一共有n+1,n个权重和1个阈值θ。阈值θ,可以看成是一个固定输入-1.0的权重,这样权重和阈值的学习就可统一为权重的学习。那么对当前样本(x,y),预测值为y^,感知器将做出调整:
    感知器的调整
    其中的wi的变化为
    wi的调整
    其中,η∈(0,1),称为学习率通过梯度下降法感受学习率)。可以看出只要预测值y ^等于实际结果y,那么就感知器无需变化,如果不符,就根据错误的程度就行权重的调整。
    若问题的线性可分的,那么通过不断的调整,感知器的学习最终会收敛(上述学习率梯度下降法也有对收敛的感受),最终求得一个合适的权重矩阵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个神经元接收到的总输入为βj

bh指的是隐层中第h个神经元的输出。整个网络如下
参数个数

假设隐层和输出层神经元使用的函数是对率函数
对率函数
对训练样例(xk,yk),假定神经网络的输出为yk=(y^1 , y^2 ,……,y^l),有
BP算法每一次迭代中,都会判断参数是否需要更新,更新式子为
任意参数v的更新式子
可以看出,关键是求Δv。
以上述网络中隐层到输出层的连接权重whj为例子进行推导。
BP算法基于梯度下降法策略(上面给出过梯度下降法的讲解视频),以目标的 负梯度方向对参数进行调整。对均方误差Ek,给定学习率η,有
Δwhj
注意whj先影响到第j个输出层神经元的输入值βj,再影响到其输出值y^,然后影响到Ek,有
对于对率函数,有一个求导之后有一个特点
对率函数的性质
将公式(5.10)、(5.8)代入(5.7),再将(5.7)代入到(5.6)
最终我们得到Δwhj
隐层到输出层的权重更新公式
对于输出层的阈值θj的更新公式也可以通过上述类似求法得到,
输出层的阈值θj更新公式

通过上述类似求法,我们还可以得到从输入层到隐层的各参数更新式(注意我们的前提:函数是对率函数)
从输入层到隐层的参数更新式

在上述的各参数更新式中,都涉及了学习率η,它相当于梯度下降法中的步长,步长太小则收敛速度过慢,步长太大则容易导致振荡而发散,因此学习率η常设置为0.1。注意:从输入层到隐层的η不一定等于从隐层到输出层的η。

收敛过慢
步长过大,导致振荡发散
通过上面的计算,我们可以给出BP算法的工作流程。对于每个训练样例,BP算法执行以下操作:
BP算法所需公式
BP算法流程

1)先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果
2)然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行)
3)最后根据隐层神经元的误差来别连接权和|词值进行调整(第7行),该迭代过程循环进行,直到达到某些停止条件为止。

上述的BP算法是"标准BP算法",每次只针对一个训练样例更新权重w和阈值θ,即图中的算法的更新规则是基于单个的Ek推导的;而BP算法的目标是要最小化训练集D上的累积误差。

如果同样类似地推导出基于累积误差最小化的更新规则,可得到累积BP算法。

标准BP算法 累积BP算法
每次更新只针对单个样例,参数更新频繁 直接对累积误差进行最小化,读取整个数据集之后才对参数更新,更新频率低
对不同样例的参数更新效果可能会出现"抵消"现象,因此,为了同样达到累积误差最小点,需要进行多次迭代。

实际上很多任务中,累积误差下降到一定程度之后,进一步下降会很慢,这是标准BP算法通常会更快获得较好的解(当样本非常大时更明显)。


只要隐层的神经元个数足够多,则网络就能以任意精度逼近任意复杂度的连续函数。如何设置个数仍然是问题,实际上通常靠"试错法"调整神经元个数。


BP算法经常会遇见过拟合的问题:其训练误差持续降低,但测试误差却可能上升。
对此,有两种策略缓解过拟合。

  • "早停"
    将数据集D分成训练集和测试集。
    训练集用来计算梯度步长、更新权重和阈值;测试集用来估计误差。
    若训练集误差降低但测试集误差升高,则停止训练,同时返回具有最小测试集误差的权重和阈值。
  • "正则化"
    其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。
    如,权重和阈值的平方和(用于描述网络复杂度的部分)。仍令Ek表示第k个样例上的误差,wi表示权重和阈值。则误差目标函数变为
    引入正则项之后的误差目标函数
    其中λ∈(0,1)用于对累积经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

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的点,那么梯度为0的点就是局部最小点。
    等高图像
    可能存在多个局部最小,但只有一个全局最小。全局最小一定是局部最小,但反之不一定。
    图只有一个局部最小,也就是全局最小
    在实际任务中,我们要找到的是全局最小,但如果梯度达到0,更新量为0,这就说我们达到了局部最小,若该局部最小就是全局最小就很好;但如果不是"全局最小",就要考虑"跳出"该局部最小。有以下三种常用的"跳出局部最小"策略:
  • 以多组不同的参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小值对应的解作为最终参数。
  • 随机梯度下降法,与标准梯度下降不同,随机梯度下降加入了随机因素,即使在局部最小时,梯度也不一定为0,这样就会跳出局部最小继续搜索。
  • 模拟退火:在每一步都以一定的概率接受比当前解更差的结果,从而有助"跳出"局部最小,在每次迭代过程中,接受"次优解"的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
    关于局部最小以及全局最小、等高图像的视频:https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1049099161&courseId=1004570029

5.5 其他常见神经网络

1.RBF网络

一种单隐层前馈神经网络,隐层使用径向基函数作为神经元激活函数,输出层是对隐层神经元输出的线性组合。RBF网络可表示为:

φ(x)就是RBF网络的表示
通常采用两步来训练RBF网络:
第一步,确定神经元中心ci常用的方式包括随机采样、聚类等;
第二步,利用 BP 算法等来确定参数wi和βi

2.ART网络

竞争型学习是神经网络中一种无监督学习策略。
在使用该策略时,遵循"胜者通吃"原则
网络的输出神经元相互竞争,每一时刻仅有一个获胜的神经元被激活,其他神经元被抑制。


ART网络是竞争型学习的代表,该网络由比较层识别层识别阈值重置模块构成。比较层负责接收输入样本,并将其传递给识别层神经元。
识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。


流程如下:
1)在接收到比较层的输入信号后识别层神经元之间相互竞争以产生获胜神经元。竞争方式是:计算输入向量与每个识别层神经元所对应模式类的代表向量之间的距离,距离最小者胜。
2)获胜神经元将向其他识别层神经元发送信号,抑制其撤活。
3)识别阈值比较:
① 若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阔值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权重将会更新(使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜)。
② 若相似度不大于识别阑值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。

从以上流程可以看出,与识别阈值比较这一步很重要。
当识别阈值较高,那么相似度将极有可能总是小于识别阈值,因此输入样本将会被分比较多和精细的模式类;
当识别阈值较低,则会产生较少、较粗略的模式类。


竞争型学习中有一个问题,即"可塑性-稳定性窘境"
可塑性:指神经网络要有学习新知识的能力。(可以理解为预习能力)
稳定性:指神经网络在学习新知识时要保持对旧知识的记忆。(复习能力)

而ART网络可以很好的缓解这个窘境,使得ART网络有个优点:
可进行增量学习或在线学习

增量学习与在线学习

3.SOM网络

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

SOM网络结构


SOM的训练目标:
为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。


SOM的流程:
在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最小的神经元获胜,称为最佳匹配单元
然后,最佳匹配单元及其邻近神经元的权向量将被调整,使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。

4.级联相关网络

  • 构造性网络:与一般神经网络不同,构造性网络不假定事先的网络结构,将网络结构也当作学习目标之一,并希望能在训练过程中找到最符合数据特点的网络结构。
  • 级联相关网络:它是构造性网络的重要代表。主要有两个部分:
    1)级联
    级联是指建立层次连接的层级结构。
    在开始训练,网络只有输入层和输出层的最小拓扑结构。
    随着训练的进行,新的隐层神经元逐渐加入,从而创建起层级结构。
    当新的隐层神经元加入时,其输入端连接权重是固定的。
    2)相关
    通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。
    级联相关网络的建立

    级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易过拟合。

5.Elman网络

  • 递归神经网络
    递归神经网络,与前馈神经网络不同,前馈神经网络是拓扑结构(不允许有回路),而递归神经网络允许出现环形结构(有回路)。
  • Elman网络
    Elman网络是常用的递归神经网络之一。它隐层神经元的输出将被反馈,与下一时刻输入层神经元的信号一起,输入到隐层。
    Elman网络

Elman网络的隐层神经元采用对率函数作为激活函数,网络的训练则常用BP算法

6.Boltzmann机

神经网络中有一类模型是为网络状态定义一个"能量",能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。
Boltzmann机就是一种"基于能量"的模型。
其神经元分为两层:显层隐层
显层用于表示数据的输入与输出;隐层则被理解为数据的内在表达。
Boltzmann 机中的神经元都是布尔型的,只能取0,1两种状态,
状态1表示激活,状态0表示抑制。

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

5.6 深度学习

随着计算能力的大幅提升,参数越多、复杂度越高的模型越来越受到关注,因为复杂度越高的模型,意味着能完成更加复杂的学习任务。以"深度学习"为代表的复杂模型开始受到人们的关注。
从上面的学习可知,模型复杂度可以通过增加单隐层中的神经元数目来实现,但从增加模型复杂度的角度来说,增加隐层的层数更加有效,从而有多隐层神经网络。多隐层的训练难以使用BP算法来训练,因为容易"发散"。
因此。无监督逐层训练是多隐层训练的有效手段。

无监督逐层训练:(预训练+微调)
1)“预训练”:每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入
2)预训练完成后,对整个网络进行“微调”训练(fine tuning)
3)"预训练+微调"可以视为将大量参数分组,每组先找到局部较好,再基于局部较优联合寻找全局最优。这样子可以节省训练开销。

权共享(节省训练开销的另一种策略)
让一组神经元使用相同的连接权,在卷积神经网络中发挥了重要作用。

卷积神经网络例子

深度学习就是通过多层处理,逐渐将初始的"低层"特征表示转化为"高层"特征表示,用"模型"完成复杂的分类等学习任务,即深度学习进行的是"特征学习"或"表示学习"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容