第五章:神经网络

news/2024/12/22 21:33:15/

目录

5.1神经元模型

5.2感知机与多层网络

5.3 误差逆传播算法

5.4 全局最小与局部极小

5.5 其他常见神经网络

5.6 深度学习

5.1神经元模型

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

神经网络是一个很大的学科领域,本课程仅讨论神经网络与机器学习的交集,即“神经网络学习”亦称“连接主义(connectionism)”学习

M-P神经神经元模型:(如下图所示)

图5.1 M-P神经元模型

神经元会接收外界的n个输入信号,这些输入会与权重相结合,再通过“激活函数”对信号进行一定的修改,以得到我们自己想要的数据

权重:决定模型如何根据输入数据产生输出,可通过优化算法进行调整,最小化模型预测与实际结果之间的差异。

作用:

  • 提高模型性能
  • 加速训练过程
  • 改善泛化能力
  • 避免过拟合

理想激活函数:阶跃函数,0表示抑制神经元而1表示激活神经元

阶跃函数具有不连续、不光滑等不好的性质,常用的是 Sigmoid函数

图5.2.1 神经元激活函数

 (a)函数是理想情况,对于小于0的信号直接过滤掉,(b)函数则是对小于0的信号进行过滤,而在0的信号,则为一定的值。

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络.、

5.2感知机与多层网络

感知机:由两层神经元组成,如图5.2所示,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”.

图5.2 感知机

更一般地,给定训练数据集,权重w_i(i= 1,2,...,n)以及阈值\theta可通过学习得到.

感知机的学习:

                                                \Delta w_i=\eta (y-\widehat{y})x_i,  w_i\leftarrow w_i+\Delta w_i

 \eta是学习率,若感知机对训练样例(x, y)预测正确,即y=\widehat{y},则感知机不发生变化,否则将根据错误的程度进行权重调整.

感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限,只能处理线性问题,对于非线性问题,学习过程会发生振荡,w难以稳定下来,求不出解

要解决非线性可分问题,需使用多层功能神经元.

多层神经元:简单的两层感知机,输出层与输入层之间的一层神经元,被称为隐层或隐含层(hidden layer),隐含层和输出层神经元都是拥有激活函数的功能神经元.

图5.2.2 多层馈神经网络

多层前馈神经网络常见的神经网络是形如图5.2.2所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接.这样的神经网络结构通常称为“多层前馈神经网络

多层前馈网络有强大的表示能力(“万有逼近性”)

仅需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数

5.3 误差逆传播算法

误差逆传播算法(BP算法):迄今最成功、最常用的神经网络算法,可用于多种任务(不仅限于分类)

给定训练集D=\left \{(x_1,y_1),(x_2,y_2),...(x_m,,y_m), \right \},x_i\in R^d,y_i\in R^l

图5.3 BP网络及算法中的变量符号

输入:d维特征向量输出:l个输出值

隐层:假定使用q个隐层神经元

假定功能单元均使用Sigmoid函数

对于训练例(x_k,y_k),假定网络的实际输出为\widehat{y}_k=(\widehat{y}_1^k,\widehat{y}_2^k,...\widehat{y}_l^k)

\widehat{y}_j^k=f(\beta _j-\theta _j)

则网络在(x_k,y_k)上的均方误差为:

E_k=\frac{1}{2}\sum_{j=1}^{1}(\widehat{y}_j^k-y_j^k)^2

需通过学习确定的参数数目:(d+l+ 1)q+l
BP是一个迭代学习算法,在迭代的每一轮中采用广义感知机学习规则:

v\leftarrow v+\Delta v

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,以w_{hj}为例,对误差E_k给定学习率\eta,有:

\Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}}

注意到w_{hj}先影响到\beta _j,再影响到\widehat{y}_j^k,,然后才影响到E_k.,有:

\frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \widehat{y}_j^k}\cdot \frac{\partial \widehat{y}_j^k,}{\partial \beta _j}\cdot \frac{\partial \beta _j}{\partial w_{hj}}

根据\beta _j的定义,显然有

\frac{\partial \beta _j}{\partial w_{hj}}=b_h

Sigmoid函数有一个很好的性质:

f' (x)= f(x)(1 - f (x)) ,

于是有

g_j=\widehat{y}_j^k(1-\widehat{y}_j^k)({y}_j^k-\widehat{y}_j^k)

\Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}}=\eta g_jb_h

类似地,有:

\Delta \theta=- \eta g_j

\Delta v_{ih}=\eta e_hx_i

\Delta \gamma h=-\eta e_h

其中:

e_h=b_h(1-b_h)\sum_{j=1}^{1}w_{hj}g_j

学习率\eta不能太大,也不能太小。

推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播算法.

所以只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数.然而,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠“试错法”(trial-by-error)调整.

正是由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升.

缓解过拟合:

“早停”:

  • 若训练误差连续a轮的变化小于b,则停止训练
  • 使用验证集:若训练误差降低、验证误差升高,则停止训练

正则化:

  • 在误差目标函数中增加一项描述网络复杂度

E=\lambda \frac{1}{m}\sum_{k=1}^{m}E_k+(1-\lambda)\sum_{i}w_i^2

5.4 全局最小与局部极小

神经网络的训练过程可看作一个参数寻优过程,即在参数空间中,寻找一组最优参数使得E最小.

“最优”:

  • “局部极小”(local minimum)
  • “全局最小”(global minimum)

对w*和\theta*,若存在\varepsilon >0使得

\forall (w;\theta )\in \left \{ (w;\theta)|(w;\theta)-(w^*;\theta^*) \leqslant \varepsilon \right \}

局部极小解: 都有E(w;\theta)\geqslant E(w^*;\theta^*)成立

全局最小解: 若对参数空间中的任意(w;\theta)都有E(w;\theta)\geqslant E(w^*;\theta^*)

参数寻优方法:基于梯度的搜索

  • 从某些初始解出发,迭代寻找最优参数值.每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向.
  • 例如,由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解.若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零,这意味着参数的迭代更新将在此停止.
  • 然而,如果误差函数具有多个局部极小,则不能保证找到的解是全局最小.

可以采取以下策略解决只能找到一个“局部极小”的问题:

  • 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数.这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果.
  • 使用“模拟退火”(simulated annealing)技术[Aarts and Korst,1989].模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小.在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定.
  • 使用随机梯度下降.与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素.于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索.

5.5 其他常见神经网络

  • RBF网络
  • ART网络
  • SOM网络
  • 级联相关网络
  • Elman网络
  • Boltzmann机

5.6 深度学习

复杂模型的训练效率低,易陷入过拟合,因此难以受到人们青睐.而“深度学习”是一种优秀的复杂模型

深度学习模型:深层的神经网络

通过增加隐层数量来提升模型性能,但BP算法不适用于此,不能够“收敛”

无监督逐层训练:多隐层网络训练的有效手段,

基本思想:“预训练+微调”

每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,这称为“预训练”(pre-training);在预训练全部完成后,再对整个网络进行“微调”(fine-tuning)训练.各层预训练完成后,再利用BP算法等对整个网络进行训练.

将大量参数分组,对每组先找到局部看来比较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优.这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销.

“权共享”(weight sharing):让一组神经元使用相同的连接权,另一种节省训练开销的策略

无论是DBN还是CNN,都是通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务.由此可将深度学习理解为进行“特征学习”(feature learning)或“表示学习”(representation learning).

“特征工程”:描述样本的特征由人类专家来设计,


http://www.ppmy.cn/news/1503573.html

相关文章

Qt 实战(2)搭建开发环境 | 2.4、查看 Qt 源码

文章目录 一、查看 Qt 源码1、获取 Qt 源码2、添加源码路径3、配置定位器4、查看源码 前言: Qt 是一个跨平台的 C 图形用户界面应用程序开发框架,广泛应用于开发 GUI 程序以及非 GUI 程序,如控制台工具和服务器。查看 Qt 的源码不仅可以帮助你…

基于java的人居环境整治管理系统(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝20W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

某RED书旋转验证码识别(一)

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 本文的验证码网址如下,使用base64解码获得 因为旋转验证码能够处理的方式实在太多了,我将以处理的难度和方式依次讲解最简单到最难,到精度最高的方式,本文还是延续之前使用梯度计算的方式…

Stack Rolling Shutter是什么技术?

我们常见的有卷帘快门(Rolling Shutter)与全局快门(Global Shutter),那思特威对外宣传的Stack Rolling Shutter是个什么技术? 官网查询不到相关信息。 英文百度查询结果是一些宣传性质的软文,bi…

揭秘!焦虑症不只是心理战,这些躯体化症状你中招了吗?

引言 在这个快节奏、高压力的时代,焦虑症已成为许多人难以言说的秘密。它不仅悄无声息地侵蚀着我们的心理健康,还可能以一系列令人意想不到的躯体化症状显现,让人误以为自己只是“身体出了点小毛病”。今天,就让我们一起揭开焦虑…

SpringBoot使用泛型出入参+策略模式+反射+缓存实现统一POST接口入口

简介 某些情况下需要统一入口,如:提供给第三方调用的接口等。减少接口对接时的复杂性。 代码实现 GenericController.java 统一入口,通过bean name进行调用service层invoke方法 import com.fasterxml.jackson.databind.ObjectMapper; imp…

鸿蒙父组件中如何处理子组件内点击事件

在父组件中初始化子组件时,将父组件中定义的方法,传递给子组件,在子组件中调用该方法,类似于变量传递。参考代码如下: class Model { value: string } Entry Component struct EntryComponent { test() { consol…

(面试必看!)锁策略

文章导读 引言考点一、重量级锁 VS 轻量级锁1、定义与原理2、主要区别3、适用场景 考点二、乐观锁 VS 悲观锁1、悲观锁(Pessimistic Locking)2、乐观锁(Optimistic Locking)3、总结 考点三、读写锁1、读写锁的特性2、读写锁的实现…