机器学习西瓜书学习记录-第五章 神经网络

news2024/11/24 0:33:51

第5章 神经网络

5.1神经元模型
神经网络中最基本的成分是神经元模型。
“M-P神经元模型”,又称“阈值逻辑单元”
在模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。
在这里插入图片描述
实际常用Sigmoid函数作为激活函数,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此也称“挤压函数”
在这里插入图片描述
将许多这样的神经元按一定的层次结构连接起来即可得到神经网络。我们可以将神经网络视为包含了许多参数的数学模型,该模型是若干函数(如 y j = f ( ∑ i w i x i − θ j ) y_j=f(\sum_{i}w_ix_i-\theta_j) yj=f(iwixiθj))相互嵌套带入而得。
5.2感知机与多层网络
感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层为M-P神经元。
在这里插入图片描述
感知机可实现逻辑与、或、非运算
在这里插入图片描述
在这里插入图片描述
给定训练数据集,权重 w i w_i wi及阈值 θ \theta θ通过学习得到。
将阈值 θ \theta θ看作一个固定输入为-1.0的“哑结点”,对应连接权重 w n + 1 w_{n+1} wn+1,这样权重和阈值的学习就可统一为权重的学习。
感知机的学习规则:
训练样例(x,y),若当前感知机输出为 y ^ \hat{y} y^,则感知机权重调整如下,其中 η ϵ ( 0 , 1 ) \eta \epsilon (0,1) ηϵ(0,1)为学习率
在这里插入图片描述
感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,学习能力有限。
事实,前述的与、或、非问题都是线性可分的问题。若两类模式是线性可分的,即存在一个线性超平面能将他们分开,感知机的学习过程一定会收敛求得适当的权向量 w = ( w 1 ; w 2 ; . . . ; w n + 1 ) w=(w_1;w_2;...;w_{n+1}) w=(w1;w2;...;wn+1)(如图a-c),否则感知机学习过程会发生震荡,不能求得合适解(如图d)。
在这里插入图片描述
如何解决非线性可分问题?–考虑使用多层功能神经元。
如下两层感知机解决异或问题,输出层与输入层之间的一层神经元被称为隐层或隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元
在这里插入图片描述
常见的神经网络每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为“多层前馈神经网络”。其中输入层神经元接受外界输入,隐层与输出层包含功能神经元对信号进行加工,最终结果由输出层神经元输出。
在这里插入图片描述
神经网络的学习过程即是根据训练数据调整神经元之间的“连接权”以及每个功能神经元的阈值;换言之,神经网络“学”到的东西蕴含在连接权与阈值中。
5.3误差逆传播算法
训练多层网络多用误差逆传播算法简称BP算法。
训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , x i ϵ R d , y i ϵ R l D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},x_i\epsilon R^d,y_i\epsilon R^l D={(x1,y1),(x2,y2),...,(xm,ym)},xiϵRd,yiϵRl,即输入示例有d个属性描述、输出l维实值向量。
如图一个d个输入神经元、l个输出神经元、q个隐层神经元的多层前馈网络结构。
输出层第j个神经元的阈值用 θ j \theta_j θj表示,隐层第h个神经元的阈值用 γ h \gamma_h γh表示。输入层第i个神经元与隐层第h个神经元之间的连接权为 v i h v_{ih} vih,隐层第h个神经元与输出层第j个神经元之间的连接权为 w h j w_{hj} whj
记隐层第h个神经元接收到的输入为 α h = ∑ i = 1 d v i h x i \alpha_h=\sum_{i = 1}^dv_{ih}x_i αh=i=1dvihxi,输出层第j个神经元接收到的输入为 β j = ∑ h = 1 q w h j b h \beta_j=\sum_{h = 1}^qw_{hj}b_h βj=h=1qwhjbh,其中 b h b_h bh为隐层第h个神经元的输出。设隐层和输出层神经元均使用Sigmoid函数。。
在这里插入图片描述
在BP网络中,我们需要确定的参数有:输入层到隐层d×q个权值、隐层到输出层的q×l个权值、q个隐层神经元的阈值、l个输出层神经元的阈值。
BP是迭代学习算法,在迭代每一轮对参数进行更新估计,任意参数v更新估计式子为
在这里插入图片描述
下面以隐层到输出层的连接权 w h j w_{hj} whj为例推导。
BP算法-基于梯度下降策略,以目标负梯度方向对参数进行调整。
对于误差 E k E_k Ek,给定学习率 η \eta η,则有
在这里插入图片描述
并且我们知道,对于连接权 w h j w_{hj} whj,它会先影响第j个输出层神经元的输入值 β j \beta_j βj,随后再影响到该输出层神经元的输出值 y ^ j k \hat{y}_j^k y^jk,进而影响到输出的均方误差 E k E_k Ek,因此可以这样写
在这里插入图片描述
然后由于定义输出层第j个神经元接收到的输入为 β j = ∑ h = 1 q w h j b h \beta_j=\sum_{h = 1}^qw_{hj}b_h βj=h=1qwhjbh,因此有
在这里插入图片描述
已知Sigmoid函数有性质:
在这里插入图片描述
再根据神经网络的误差式以及输出式,可以得出如下推导
在这里插入图片描述
在这里插入图片描述
同理可得 Δ θ j \Delta\theta_j Δθj Δ v i h \Delta v_{ih} Δvih Δ γ h \Delta\gamma_h Δγh。(p103)
学习率 η ϵ ( 0 , 1 ) \eta\epsilon(0,1) ηϵ(0,1)控制迭代的更新步长,太大容易震荡,太小收敛速度过慢。一般常设置为0.1
BP算法工作流程如下
先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;
然后计算输出层的误差(第 4-5 行) ,再将误差逆向传播至隐层神经元(第6行) ,最后根据隐层神经元的误差来对连接权和阈值进行调整(第7行).
该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已达到一个很小的值。
在这里插入图片描述
以上算法更新规则基于单个 E k E_k Ek推导而得,称“标准BP算法”。
类似推导出基于累积误差最小化的更新规则,得到累积误差逆传播算法。
标准BP算法参数更新非常频繁。累积BP算法直接针对累积误差最小化,在读取整个训练集D一遍后才对参数进行更新,故参数更新的频率低得多。
当包含足够多神经元的隐层,多层前馈网络能以任何精度逼近任意复杂度的连续函数。至于如何设置隐层神经元的个数,常靠“试错法”调整。
由于强大的表示能力, BP 神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。
缓解BP网络的过拟合:
1、“早停”:将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,返回具有最小验证集误差的连接权和阈值。
2、“正则化”:其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。
例如,误差目标函数改变为
在这里插入图片描述
E k E_k Ek表示第k个训练样例上的误差, w i w_i wi表示连接权和阈值。其中 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1)用于对经验误差与网络复杂度这两项进行折中。(理解:增加连接权与阈值平方和这一项后,训练过程会偏好比较小的连接权和阈值,使网络输出更加“光滑”,从而缓解过拟合)
5.4全局最小与局部最小
E表示神经网络在训练集上的误差,其显然关于连接权 w w w和阈值 θ \theta θ的函数。神经网络的训练过程相当于在参数空间中,寻找一组最优参数使得E最小。
“最优”:包括“局部极小”和“全局最小”
1、局部极小解,是参数空间中的某个点,其邻域点的误差函数值均不小于该点的函数值;
2、全局最小解则是指参数空间中所有点的误差函数值均不小于该点的误差函数值.两者对应的 E ( w ∗ ; θ ∗ ) E(w^*;\theta^*) E(w;θ)分别称为误差函数的局部极小值和全局最小值.
可能存在多个“局部极小”,但只会有一个全局最小值,在参数寻优过程中是希望找到全局最小。
常用的参数寻优方法-基于梯度的搜索:
每次迭代,我们计算误差函数在当前的梯度,然后根据梯度确定搜索方向,负梯度方向为函数值下降最快的方向,故梯度下降法即是沿着负梯度方向搜索最优解。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分分钟让你学会栈和队列

数据结构——栈和队列 🏖️专题:数据结构 🙈作者:暴躁小程序猿 ⛺简介:双非本科大二小菜鸟一枚,希望我的博客可以对大家有所帮助 文章目录数据结构——栈和队列前言一、什么是栈?二、栈的相关概…

计算机毕设(附源码)JAVA-SSM蓟县农家乐网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

算法竞赛进阶指南 搜索 0x26 广搜变形

双端队列BFS 在最基本的广度优先搜索中,每次沿着分支的扩展都记为“一步”,我们通过逐层搜索,解决了求从起始状态到每个状态的最少步数的问题。这其实等价于在一张边权均为1的图上执行广度优先遍历,求出每个点相对于起点的最短距…

程序员的数学好难学?一切从基础开始!

数学知识对编程很有用,但是很多写给程序员的数学书都比较难。我们为什么不从基础的数学知识开始学习呢? 程序员的数学基础 Python实战 1.本书的重点不在于如何解题,而在于帮助读者在计算机世界里如何利用数学解决算法问题,让程序…

WinForm应用实战开发指南 - 教你如何实现表头的全选操作?

WinForms分页控件,在很多场合都需要用到,由于整合较多的功能操作,使用起来效果更好,界面统一性也比较一致。其中的勾选操作,在有些场合下,也是比较有用的,因此提供该功能的整合。 PS&#xff1…

基于改进神经网络的风电功率预测(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

【K8S系列】Kubernetes 之kubectl 常用命令汇总

目录 一、kubetcl简单介绍 二、命令介绍 详细介绍: 三、部分命令详细介绍 3.1 create 3.2 get 3.3 describe 3.4 rolling-update 3.5 exec 3.6 log kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes 集群。 日常在使用 Kuber…

Swift 周报 第十六期

前言 本期是 Swift 编辑组自主整理周报的第七期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 当你来到双水村以外的大世界&#xff…

操作系统实验二死锁避免之银行家算法的模拟

文章目录 死锁 (1)定义 (2)死锁产生的原因 (3)死锁产生的必要条件 (4)死锁的处理策略 银行家算法 (1)核心思想 (2)数据结构 &#x…

2.2 Pycharm 的使用

文章目录1. PyCharm 安装2. Python 项目3. 外貌设置4. 配色方案5. 字体大小6. 自动换行7. 汉化8. 翻译插件9. 添加多个解释器10. Pycharm 常用快捷键11. 自定义文件模板内容12. 前端代码运行浏览器13. 关闭 with open 提示14. 双击shift查找15. 导出配置导入配置1. PyCharm 安装…

Gwas实战分析3_群体结构增加

1.sh plink 格式转化 plink1.map/plink1.ped ------plink2.bim/fam/bed plink --file 1001genomes_snps_only_ACGTN1 --make-bed --out plink2 2.sh 群体结构分析 时间过久: for K in 2 3 4 5 6 7 8 9 10; do admixture --cv plink2.bed K∣teeadmixtrueK | tee…

HTML小游戏4 —— 简易版英雄联盟(附完整源码)

💂 网站推荐:【神级源码资源网】【摸鱼小游戏】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且实用的计算机相关知…

基于C#实现的在线聊天室的桌面系统软件

资源下载地址:https://download.csdn.net/download/sheziqiong/86863237 资源下载地址:https://download.csdn.net/download/sheziqiong/86863237 目录 个人聊天室软件 1 需求分析与概要设计 1 项目说明 1 1.1. 项目目标: 1 1.2. 软硬件环境…

庖丁解牛 指针的高端操作

本章重点 写在前面 1.字符指针 2.指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 二维数组与数组指针 4.数组参数和指指针参数 4.1一维数组传参 4.2 二维数组传参 4.3一级指针传参 4.4二级指针传参 5.函数指针 5.1函数指针的…

SSM基于小程序的医院预约挂号系统 毕业设计-附源码260839

SSM医院预约挂号小程序的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对医院排…

Prometheus系列(2)之EC2安装Node端

目标 为Prometheus安装Node程序。 步骤 node exporter程序 wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz tar xvzf node_exporter-1.4.0.linux-amd64.tar.gz cd node_exporter-1.4.0.linux-amd64/s…

技术分享 | 专项测试技术初识Hook

本文节选自霍格沃兹测试学院内部教材Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。 Hook的…

汇编语言指令

文章目录算术运算指令ADDADDISUB伪指令LUILIAUIPCLA逻辑运算指令内存读写指令条件分支指令无条件跳转指令算术运算指令 ADD 语法ADD RD,RS1,RS2例子add x5,x6,x7x5x6x7编码格式:R-type opcode(7):0110011(OP) 从RS里面取出数据,把里面的数据…

【MyBatis框架】关联映射

关系映射1. 关联映射概述2. 环境搭建3.处理字段名和属性名不一致的情况4. 处理一对一映射5. 处理多对一映射5.1 级联方式处理5.2 使用association处理映射关系5.3 分步查询6. 处理一对多查询7. 小结1. 关联映射概述 在关系型数据库中,多表之间存在着三种关联关系&a…

Linux文件打包及压缩、解包及解压

目录 前言 什么是压缩? tar的介绍与使用 简介 打包压缩文件 打包文件(不压缩) gzip压缩类型压缩文件 bzip压缩类型压缩文件 xzip压缩类型压缩文件 解包解压文件 简介 解压缩(解压到当前目录) 解压缩&#x…