其他分享
首页 > 其他分享> > 西瓜书第五章——神经网络

西瓜书第五章——神经网络

作者:互联网

西瓜书第五章——神经网络

前言

一种非常广泛使用的神经网络定义:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界体所作出的交互反应。本章以机器学习三要素(模型、策略、算法)的角度介绍 感知机 和 神经网络。

一、感知机

1.1、感知机模型

在介绍感知机模型之前,首先了解基本的神经元模型,感知机模型是它的拓展。

1.1.1、M-P神经元模型

在生物神经网络中,如果某神经元的电位超过了 个阈值,那么它就会被激活,即兴奋起来,向其他神经元发送化学物质。将这种场景
抽象为简单的模型,即如下图(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 为阶跃函数,则此时感知机模型为:
感知机模型2
此时的 ωT *x - θ = 0 可看作 n 维空间的超平面,这个超平面将划分为两部分,>= 0 的那部分模型预测值为 1,< 0 的那部分模型预测值为 0。

1.2、感知机策略

给定一个线性可分的数据集 T,感知机的学习目标是求得能对数据集 T 中的正负样本完全正确划分的分离超平面:ωT *x - θ = 0。
接下来我们要找损失函数了:首先关于误分类样本,有两种情况,即正样本预测为负的,或负样本预测为正的。

1.3、感知机学习算法

即求解上节得到的损失函数的极小值,未知参数为ω, θ 。依旧假设误分类样本集合 M ∈ T,则目标函数:
损失函数的极小值
简化上述函数(与之前多元线性回归时操作相同),将 θ 也作为 ω权重的一个分量,即 ωn+1 = θ,此时 xn+1 恒等于 -1。化简后得向量形式:
化简
上述损失函数 L(ω)对ω求偏导后可以得到 该函数的梯度——(1)式:
梯度
但我们的感知机学习算法不是采取的批量梯度下降算法,而是随机梯度下降算法。

随机梯度下降算法:即每次只随机选一个误分类样本去更新权重ω、 θ ,这样权重ω的更新公式即没有 Σ 符号(因为只使用一个样本),变为:
权重更新
因为随机梯度下降算法中更新权重ω所使用的梯度并不是损失函数的整体的梯度,即(1)式(可以看作只使用了一部分梯度下降),所以在每次迭代时并不是向着全局最优方向(即下降最快方向),但整体肯定是向着极值方向前进的。

另外,随机梯度下降算法相比 批量梯度下降算法(每次迭代使用所有误分类样本)的优点是:这样的方法更快收敛。

二、神经网络(NN,neural network)

感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元 ,其学习能力非常有限。对于非线性可分的问题,感知机会发生振荡。要解决非线性可分问题,需要考虑多层功能神经元。例如两层感知机就能解决异或的问题,输入层和输出层之间是隐层,隐层神经元和输出神经元都是有激活函数的功能神经元
两层感知机
多层前馈神经网络:每层神经元与下层神经元全互连,神经元之间不存在同层连接, 也不存在跨层连接。如下图:
多层前馈神经网络
神经网络的学习过程,就是根据训练数据来调整神经元之间的"连接权" (即神经元连接的权重)以及每个功能神经元的阈值;换言之,神经网络"学"到的东西,蕴涵在连接权与阈值中。

有理论证明(通用近似定理):只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。

2.1、误差逆传播算法(BP算法)

多层神经网络学习能力比单层感知机强得多,未知参数也成倍增加,所以需要更强大的学习算法,这里学习BP算法。BP 算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络。
BP神经网络
这里的符号表示简单说明下:(xkyk)表示第 k 个训练样本,xk为 d 维向量,yk为 d 维向量;中间含一层隐层(有 q 个神经元),输出层、隐层的阈值分别表示为 θj,γh(第 j 个输出神经元,第 h 个隐层神经元);这里输出层、隐层的激活函数都设置为 Sigmoid函数(即对数几率函数);所以这里有(d * q + l +1)+ l 个未知参数。

BP是一个迭代学习算法,每次迭代都采用广义感知机学习规则(其实就是 梯度下降 策略)。
这里的损失函数不同,只考虑一个训练样本(xkyk)的均方误差:
损失函数
按照梯度下降策略,向着目标的负梯度方向对参数调整:
参数调整
根据链式法则:
可以得到
参数调整2
红色框中的求导后半部分是因为激活函数 f 为 Sigmoid 函数。

同理,可以依次推导其他未知参数:
参数调整3
参数调整4
参数调整5
参数调整6

上述推导各个参数的更新公式时,定义了 gj、eh 两个重要项。gj、eh其实分别表示第 j 个输出神经元的梯度项(取反)、第 h 个因隐层神经元的梯度项(取反);求得了这两项,那么 (d + l )* q 个未知权重参数的更新都可以计算出来,只差 ( q + l )个阈值,在阈值更新推导公式中,我们又可以看到:关于它们自己的梯度就等于对应的 gj 、eh,所以阈值的更新也能计算出来了。

2.2、BP算法的工作流程

BP算法的工作流程
工作流程:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第 4-5 行) ,再将误差逆向传播至隐层神经元(第 6 行) ,最后根据隐层神经元的误差来对连接权和|阈值进行调整(第 7 行)。该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差己达到一个很小的值。这里的停止条件和缓解 BP 过拟合的策略有关。

注意:上面我们所讲到的 BP算法(称为”标准BP算法“)是只考虑了一个训练样本 (xkyk)的误差,而 ”累计BP算法“则考虑累计误差
累计误差
标准BP算法累计BP算法 各自的一些特点:

2.3、局部最小问题

对于感知机和 BP 神经网络,它们的更新规则都是基于 梯度下降。基于梯度搜索是使用最为广泛的参数寻优方法。在此类方法中,我们从某些初始解出发,迭代寻找最优参数值。每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向;下降最快的方向显然是负梯度方向,所以参数调整都是以此方向更新

因为只会一味的下降,所以下降到一个极小值处就停止更新。当然,这个极小值为最小值,则我们的算法就找到了全局最优;但如果 误差函数有多个极小值,则不能保证算法找到的解是全局最优了。陷入一个小坑跳不出来!

所以有了一些策略”跳出“局部最小,向全局最小前进:

总结

本章主要介绍 感知机、神经网络。神经网络相对感知机更加复杂的模型,学习能力更强,需要的学习算法也更复杂。神经网络的算法目的就是一次次迭代,不断更新权重,阈值这些参数使得误差函数(损失函数)达到一个最小值;更新参数的公式推导较为复杂,但记住主要使用梯度下降,链式求导就能够理解。神经网络既可以解决分类问题,也可以解决回归问题,应用非常广泛,所以神经网络是我们学习的重点。

标签:西瓜,函数,梯度,算法,感知机,神经网络,第五章,神经元
来源: https://blog.csdn.net/qq_42929168/article/details/121579458