西瓜书第五章——神经网络
作者:互联网
西瓜书第五章——神经网络
前言
一种非常广泛使用的神经网络定义:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界体所作出的交互反应。本章以机器学习三要素(模型、策略、算法)的角度介绍 感知机 和 神经网络。一、感知机
1.1、感知机模型
在介绍感知机模型之前,首先了解基本的神经元模型,感知机模型是它的拓展。
1.1.1、M-P神经元模型
在生物神经网络中,如果某神经元的电位超过了 个阈值,那么它就会被激活,即兴奋起来,向其他神经元发送化学物质。将这种场景
抽象为简单的模型,即如下图(M-P神经元模型):
在此模型中,神经元接收到来自其他神经元传递过来的输入信号 xi (i = 1,2,…,n)这些输入信号通过带权重的连接进行传递 ,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(响应函数)f 处理产生神经元的输出。把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
1.1.2、神经元激活函数
典型的神经元激活函数如上图(a)、(b)。但是阶跃函数(a)具有不连续、不光滑的性质,所以常用Sigmoid函数作为激活函数(方便之后求导,找损失函数最小值的操作)。
1.1.3、感知机模型
感知机模型由两层神经元组成,,输入层接收外界输入信号后传递给输出层, 输出层是M-P神经元。感知机模型公式可表示为:
样本向量 x∈ Rn (即 n 维向量),是感知机模型的输入;ω, θ 是感知机模型的参数,ω ∈ Rn 为权重,θ为阈值。假设 感知机的激活函数 f 为阶跃函数,则此时感知机模型为:
此时的 ωT *x - θ = 0 可看作 n 维空间的超平面,这个超平面将划分为两部分,>= 0 的那部分模型预测值为 1,< 0 的那部分模型预测值为 0。
1.2、感知机策略
给定一个线性可分的数据集 T,感知机的学习目标是求得能对数据集 T 中的正负样本完全正确划分的分离超平面:ωT *x - θ = 0。
接下来我们要找损失函数了:首先关于误分类样本,有两种情况,即正样本预测为负的,或负样本预测为正的。
- ωT *x - θ >= 0 时,预测 y^ = 1,真实标记 y = 0;
- ωT *x - θ < 0 时,预测 y^ = 0,真实标记 y = 1;
综合两种情况,下述表达式总成立:
因为上述表达式总大于 0 ,所以刚好可作为 划分错误时的 ”惩罚“。如果误分类样本集合 M ∈ T,则损失函数为:
显然,此损失函数是非负的。如果没有误分类点,损失函数值是 0。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。因此,给定数据集 T,损失函数 L(ω, θ) 是关于 ω, θ 的连续可导函数。
1.3、感知机学习算法
即求解上节得到的损失函数的极小值,未知参数为ω, θ 。依旧假设误分类样本集合 M ∈ T,则目标函数:
简化上述函数(与之前多元线性回归时操作相同),将 θ 也作为 ω权重的一个分量,即 ωn+1 = θ,此时 xn+1 恒等于 -1。化简后得向量形式:
上述损失函数 L(ω)对ω求偏导后可以得到 该函数的梯度——(1)式:
但我们的感知机学习算法不是采取的批量梯度下降算法,而是随机梯度下降算法。
随机梯度下降算法:即每次只随机选一个误分类样本去更新权重ω、 θ ,这样权重ω的更新公式即没有 Σ 符号(因为只使用一个样本),变为:
因为随机梯度下降算法中更新权重ω所使用的梯度并不是损失函数的整体的梯度,即(1)式(可以看作只使用了一部分梯度下降),所以在每次迭代时并不是向着全局最优方向(即下降最快方向),但整体肯定是向着极值方向前进的。
另外,随机梯度下降算法相比 批量梯度下降算法(每次迭代使用所有误分类样本)的优点是:这样的方法更快收敛。
二、神经网络(NN,neural network)
感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元 ,其学习能力非常有限。对于非线性可分的问题,感知机会发生振荡。要解决非线性可分问题,需要考虑多层功能神经元。例如两层感知机就能解决异或的问题,输入层和输出层之间是隐层,隐层神经元和输出神经元都是有激活函数的功能神经元。
多层前馈神经网络:每层神经元与下层神经元全互连,神经元之间不存在同层连接, 也不存在跨层连接。如下图:
神经网络的学习过程,就是根据训练数据来调整神经元之间的"连接权" (即神经元连接的权重)以及每个功能神经元的阈值;换言之,神经网络"学"到的东西,蕴涵在连接权与阈值中。
有理论证明(通用近似定理):只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。
2.1、误差逆传播算法(BP算法)
多层神经网络学习能力比单层感知机强得多,未知参数也成倍增加,所以需要更强大的学习算法,这里学习BP算法。BP 算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络。
这里的符号表示简单说明下:(xk,yk)表示第 k 个训练样本,xk为 d 维向量,yk为 d 维向量;中间含一层隐层(有 q 个神经元),输出层、隐层的阈值分别表示为 θj,γh(第 j 个输出神经元,第 h 个隐层神经元);这里输出层、隐层的激活函数都设置为 Sigmoid函数(即对数几率函数);所以这里有(d * q + l +1)+ l 个未知参数。
BP是一个迭代学习算法,每次迭代都采用广义感知机学习规则(其实就是 梯度下降 策略)。
这里的损失函数不同,只考虑一个训练样本(xk,yk)的均方误差:
按照梯度下降策略,向着目标的负梯度方向对参数调整:
根据链式法则:
可以得到
红色框中的求导后半部分是因为激活函数 f 为 Sigmoid 函数。
同理,可以依次推导其他未知参数:
上述推导各个参数的更新公式时,定义了 gj、eh 两个重要项。gj、eh其实分别表示第 j 个输出神经元的梯度项(取反)、第 h 个因隐层神经元的梯度项(取反);求得了这两项,那么 (d + l )* q 个未知权重参数的更新都可以计算出来,只差 ( q + l )个阈值,在阈值更新推导公式中,我们又可以看到:关于它们自己的梯度就等于对应的 gj 、eh,所以阈值的更新也能计算出来了。
2.2、BP算法的工作流程
工作流程:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第 4-5 行) ,再将误差逆向传播至隐层神经元(第 6 行) ,最后根据隐层神经元的误差来对连接权和|阈值进行调整(第 7 行)。该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差己达到一个很小的值。这里的停止条件和缓解 BP 过拟合的策略有关。
注意:上面我们所讲到的 BP算法(称为”标准BP算法“)是只考虑了一个训练样本 (xk,yk)的误差,而 ”累计BP算法“则考虑累计误差:
标准BP算法 和 累计BP算法 各自的一些特点:
- 一般来说,标准 BP 算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现"抵消"现象。因此,为了达到同样的累积误差极小点,标准 BP 算法往往需进行更多次数的法代。
- 累积 BP 算法直接针对累积误差最小化,它在读取整个训练集一遍后才对参数进行更新,其参数更新的频率低得多。
- 在很多任务中,累积误差下降到一定程度之后,进一步下降(即更新参数)会非常缓慢,这时标准 BP 往往会更快获得较好的解,尤其是在训练集 D 非常大时更明显。
2.3、局部最小问题
对于感知机和 BP 神经网络,它们的更新规则都是基于 梯度下降。基于梯度搜索是使用最为广泛的参数寻优方法。在此类方法中,我们从某些初始解出发,迭代寻找最优参数值。每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向;下降最快的方向显然是负梯度方向,所以参数调整都是以此方向更新。
因为只会一味的下降,所以下降到一个极小值处就停止更新。当然,这个极小值为最小值,则我们的算法就找到了全局最优;但如果 误差函数有多个极小值,则不能保证算法找到的解是全局最优了。陷入一个小坑跳不出来!
所以有了一些策略”跳出“局部最小,向全局最小前进:
- 以 不同参数值初始化多个神经网络,每组经过训练后得到的误差极小值作比较,取最小的那组作为最终参数;这相当于从不同的初始点找坑,每个初始点可能找到不一样的坑,这样最深的坑(全局最优)有可能被发掘到!
- 使用 ”模拟退火“ (simulated annealing) 技术。模拟退火在每一步都 以二定的概率接受 比当前解更差的结果,从而有助于"跳出"局部极小。这相当于参数更新的方向不是一味的向下,它有一定的概率往别处走(可能往误差增大的方向走),这样就让探索更加灵活,也就有更多可能。随着时间的推移,向着负梯度方向以外的方向走的概率越来越小,这就保证算法的稳定。
- 用随机梯度下降 。与标准梯度下降法精确计算梯度不同, 随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出仍可能不为零。这样就有机会跳出局部极小继续搜索。
总结
本章主要介绍 感知机、神经网络。神经网络相对感知机更加复杂的模型,学习能力更强,需要的学习算法也更复杂。神经网络的算法目的就是一次次迭代,不断更新权重,阈值这些参数使得误差函数(损失函数)达到一个最小值;更新参数的公式推导较为复杂,但记住主要使用梯度下降,链式求导就能够理解。神经网络既可以解决分类问题,也可以解决回归问题,应用非常广泛,所以神经网络是我们学习的重点。
标签:西瓜,函数,梯度,算法,感知机,神经网络,第五章,神经元 来源: https://blog.csdn.net/qq_42929168/article/details/121579458