【机器学习】神经网络介绍【转】

2023-11-15

【深度学习】神经网络介绍

   1 神经元

   2 激活函数

   3 感知机与多层网络

   4 误差反向传播

 

参考:周志华《机器学习》

 

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

1.神经元模型

    神经网络中最基本的成分是神经元 (neuron)模型,即上述中提到的"简单单元"。在生物神经网络中,每个神经元与其他神经元相连,当它"兴奋"时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位。如果某神经元的电位超过了一个"阔值"(threshold) , 那么它就会被激活,即"兴奋 "起来,向其他神经元发送化学物质。

    现在常用的是:M-P神经元模型。在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号。这些输入信号通过带权重的连接( connection)进行传递,神经元接收到的总输入值将与神经元的阀值进行比较,然后通过"激活函数" (activation function) 处理以产生神经元的输出。

      

    注意,每层有10 个神经元,两两连接,则有100个参数,其中90个连接权和10个阈值。

2.激活函数

    理想中的激活函数是图5.2(a)所示的阶跃函数,它将输入值映射为输出值0或1。显然,"1"对应于神经元兴奋,"0"对应于神经元抑制。然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。典型的 Sigmoid 函数如图5.2(b) 所示,它把可能在较大范围内变化的输入值挤压到 (0,1) 输出值范围内,因此有时也称为 "挤压函数" (squashing function)。

3.感知机与多层神经网络

    感知机(Perceptron)由两层神经元组成,如图5.3所示,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称"阈值逻辑单元" (thresholdlogic unit) 。

                

    感知机能容易地实现逻辑与、或、非运算。注意到假定f 图5.2 中的阶跃函数,有:

        

    那么,感知机是如何学习的呢?

    给定训练数据集,权重 (i =1,2,...,n) 以及阈值可通过学习得到。同时,阈值可看作一个固定输入为-1. 0的"哑结点" (dummy node) 它所对应的连接权重为,这样,权重和阈值的学习就可统一为权重的学习。

    感知机的学习规则非常简单,对训练样例(x,y),若当前感知机的输出为,则感知机权重将这样调整:

                

    其中η∈(0,1)称为学习率。从式(5.1)可看出,若感知机对训练样例 (x,y) 预测正确,即=y,则感知机不发生变化,否则将根据错误的程度进行权重调整。

    注意,感知机只有输出层神经元进行激活函数处理,即只拥有1层功能神经元,其学习能力非常有限。事实上,上述与、或、非问题都是线性可分的问题。可以证明,若两类模式是线性可分的,即存在一个线性超平面能将它们分开。

    如图5.4(a)-(c)所示,若两类模式是线性可分的, 必存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛,故而求得适当的权向量w= (;... ;)。若线性不可分,则感知机学习过程将会发生振荡难以稳定下来,不能求得合适解,例如感知机甚至不能解决如图 5.4(d)所示的异或这样简单的非线性可分问题.

                    

    那感知机的学习能力非常有限,只能解决线性可分问题,要解决非线性可分问题,怎么办呢?

    要解决非线性可分问题,需考虑使用多层功能神经元。例如图5.5中这个简单的两层感知机就能解决异或问题。图5.5 (a)中,输出层与输入居之间的一层神经元,被称为隐含层,隐含层和输出层神经元都是拥有激活函数的功能神经元。

                         

多层神经网络

    常见的神经网络多层级结构,每层神经元与下层神经元全互连。神经元之间不存在同层连接,也不存在跨层连接. 这样的神经网络结构通常称为"多层前馈神经网络",其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。

    即:输入层神经元仅是接受输入,不进行函数处理,隐居与输出层包含功能神经元.

    因此,只需包含隐层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的"连接权"以及每个功能神经元的阈值。换言之,神经网络"学"到的东西,蕴涵在连接权与阈值中。

             

4.误差反向传播

    使用神经网络时,大多是在使用 BP 算法进行训练。并且,BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如训练递归神经网络 RNN。但通常说 "BP网络"时,一般是指用BP算法训练的多层前馈神经网络。

    图5.7给出了一个拥有d个输入神经元、L个输出神经元、q个隐层神经元的多层前馈网络结构。

各参数含义如下:

    :表示输出层第j个神经元的阀值。

    :表示隐藏层第h个神经元的阈值。

    :表示输入层第i个神经元与隐藏居第h个神经元之间的连接权。

    :表示隐层第h个神经元与输出层第j个神经元之间的连接权。

     :表示隐层第h个神经元接收到的输入

    :表示输出层第j个神经元接收到的输入

    假设隐含层和输出层神经元都使用图5.2(b)中的Sigmoid函数。

                 

        

        BP 是一个法代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,与式(5.1 )类似,任意参数υ 的更新估计式为

                                            υ ← υ +Δv .                       (5.5)

        下面我们以图5.7中隐层到输出层的连接权为例来进行推导。

        BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。对式(5.4)的误差,给定学习率η,有

                 

                


        学习率η∈(0,1)控制着每一轮迭代中的更新步长,学习率太大则容易振荡,太小则收敛速度又会过慢。但有时为了精细调节,可令式(5.11)与(5.12)使用η1,式(5.13)与(5.14)使用η2 ,两者未必相等。即可在不同的层使用不同的学习率。

 

        BP算法的目标是:最小化训练集D上的累积误差。

                    

        但我们上面介绍的"标准BP算法"每次仅针对一个训练样例更新连接权和阔值,也就是说,5.8中算法的更新规则是基于单个的Ek推导而得。

        如果类似地推导出基于累积误差最小化的更新规则,就得到了累积误差反向传播算法。累积BP算法与标准BP算法都很常用。

        标准BP和累积BP算法的比较:

        一般来说,标准BP算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现"抵消"现象因此,为了达到同样的累积误差极小点,标准BP往往需进行更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新的频率低得多。但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准BP往往会更快获得较好的解,尤其是在训练集D非常大时更明显。

多层神经网络有多神奇?

        只要具有包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。

        然而,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠"试错法" (trial-by-error)调整.

 那神经网络有何缺点?

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

那如何避免过拟合?

        有两种策略常用来缓解BP网络的过拟合。

        第一种策略是"早停" : 将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差。若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

        第二种策略是"正则化",其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。仍令Ek表示第k个训练样例上的误差,Wi表示连接权和阙值,则误差目标函数(5.16) 变为:

        

    其中λ∈(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

    增加连接权与阈值平方和这一项后,训练过程将会偏好比较小的连接权和阈值,使网络输出更加"光滑"从而对过拟合有所缓解。

 为何选择梯度下降法?

        基于梯度的搜索是使用最为广泛的参数寻优方法。在此类方法中,我们从某些初始解出发,迭代寻找最优参数值。每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向。例如,由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解。

        若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零,这意味着参数的迭代更新将在此停止。显然,如果误差函数仅有一个局部极小,那么此时找到的局部极小就是全局最小;然而,如果误差函数具有多个局部极小,则不能保证找到的解是全局最小。对后一种情形,我们称参数寻优陷入了局部极小,这显然不是我们所希望的。                 

                      

如何跳出局部极小?

           

 -------------------------------------------         END      -------------------------------------

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】神经网络介绍【转】 的相关文章

  • mysql求两个表的不同记录

    问题是 现在有两个表 一个是记录昨天的记录 一个是记录今天的记录 如何求 1 新增的记录 今天有 昨天没有的记录 2 减少的记录 今天没有 昨天有的记录 求解该类问题 需要用到sql的连接查询 为了简单起见 使用user1表和user2表来
  • 更新linux内核方法

    背景 买了块网件的A6210无线网卡 用的是mt7612u芯片 插到deepin下不能识别 ubuntu 18 04下同样不能识别 查过内核版本号 用的都是4 15的内核 去Github查了Linux内核仓库 确认4 15内核里没有mt76

随机推荐

  • PHP网上花店管理系统 毕业设计源码21170

    目 录 摘要 1 绪论 1 1研究背景 1 2项目背景 1 3 Thinkphp框架介绍 1 4论文结构与章节安排 2 网上花店管理系统系统分析 2 1 可行性分析 2 2 系统流程分析 2 2 1数据增加流程 2 2 2数据修改流程 2
  • C++ STL编程轻松入门基础

    来源 天极网 作为C 标准不可缺少的一部分 STL应该是渗透在C 程序的角角落落里的 STL不是实验室里的宠儿 也不是程序员桌上的摆设 她的激动人心并非昙花一现 本教程旨在传播和普及STL的基础知识 若能借此机会为STL的推广做些力所能及的
  • 【华为OD机试真题2023B卷 JAVA&JS】解压报文

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 解压报文 知识点栈 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为了提升数据传输的效率 会对传输的报文进行压缩处理 输入一个压缩后的报文 请返回它解压后的原始报文
  • 讯飞版大模型来了,现场发布四大行业应用成果

    文章目录 人工智能福利文章 前言 SparkDesk讯飞星火认知大模型简介 语言理解 知识问答 逻辑推理 数学题解答 代码理解与编写 亲自体验 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿
  • 梯度下降的作用及分类

    一 介绍 梯度下降法是一个最优化算法 通常也称 最速下降法 常用于机器学习和人工智能中递归性逼近最小偏差模型 梯度下降的方向就是用负梯度方向为搜索方向 沿着梯度下降的方向求解极小值 在训练过程中 每次的正向传播都会得到输出值和真实值的损失值
  • keras使用callbacks后报错:tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a direct

    参考 https stackoverflow com questions 59439124 keras tuner search function throws failed to create a newwriteablefile err
  • Maven引入本地jar包的方法分享

    转自 maven中如何包含本地jar包呢 有时候我们的jar包来源于maven仓库 有时候来源于本地仓库 有时候来源于本地文件 来源于仓库的文件 我们只需输入相应的坐标即可 那么jar包来源于本地文件 如何处理呢 下文笔者讲述maven中包
  • 二十三种设计模式第二十一篇--解释器模式

    解释器模式 Interpreter Pattern 是一种行为设计模式 它用于定义一种语言的语法结构和解释器 使得可以解释并执行特定的语法规则 该模式可以将复杂的语言表达式分解为更小的语法单元 并定义其解释过程 解释器模式的核心组成部分包括
  • NameError: global name ‘***‘ is not defined

    错误示范 class Solution object def fib self n type n int rtype int while n gt 0 if n 1 or n 2 return 1 else return fib n 1 f
  • 手把手带你实现Linux内核编译步骤及配置

    linux 系统体系结构 linux kernel体系结构 arm有7种工作模式 x86也实现了4个不同级别RING0 RING3 RING0级别最高 这样linux用户代码运行在RING3下 内核运行在RING0 这样系统本身就得到了 充
  • linux中把一个文件的内容复制到(或覆盖)另一个文件的末尾

    转载自 https blog csdn net u013991521 article details 80528647 问题描述 比如11的文件内容是 hello 22的文件内容是 world 将22的文件内容复制到11文件的末尾 11文件
  • python类的属性和实例的属性有什么区别

    在 Python 中 类属性和实例属性是两种不同类型的属性 它们在用途和作用域上有所不同 下面是关于它们的区别的详细解释 定义位置 类属性 定义在类的主体中 但在任何类方法之外 实例属性 通常在 init 方法或其他类方法中使用 self
  • 自动化测试工具软测界的不二之选,还不快速来了解

    目录 引言 前言 一 龙测AI TestOps云平台使用教程 1 如何登录龙测AI TestOps云平台 登录方法 登录方法 2 龙测AI TestOps云平台界面布局 3 龙测AI TestOps云平台菜单功能 创建项目 应用管理 设备管
  • 若依框架针对不同用户使用不同样式判断

    在开发中 有时候会针对不同用户使用不同样式 如果使用权限判断符的话会出现 请设置权限的问题 这样我们可以导入若依框架原本的权限判断函数 import checkPermi checkRole from utils permission 权限
  • Hibernate4与hibernate3主要区别与版本不一致导致的错误

    Hibernate版本改动 Hibernate4的改动较大只有spring3 1以上版本能够支持 Spring3 1取消了HibernateTemplate 因为Hibernate4的事务管理已经很好了 不用Spring再扩展了 这里简单介
  • 为何大量网站不能抓取?爬虫突破封禁的6种常见方法

    转载自 https www cnblogs com junrong624 p 5533655 html 在互联网上进行自动数据采集 抓取 这件事和互联网存在的时间差不多一样长 今天大众好像更倾向于用 网络数据采集 有时会把网络数据采集程序称
  • FileZilla - The free FTP solution

    FileZilla The free FTP solution https filezilla project org index php https www filezilla cn 1 Overview The FileZilla Cl
  • JavaScript重写Symbol(Symbol.iterator)实现迭代器(2)

    重写数组for of底层用的迭代器 for of 底层用Symbol Symbol iterator 迭代器 arr 底层用Symbol Symbol iterator 迭代器 示例图 代码 h1 对象遍历重写iterator接口2 h1
  • python中class用法实例

    python中class用法实例 https blog csdn net u010551600 article details 79126911 该程序的作用是找到studet txt文件中 GPA最高的那名同学 并打印出他的信息 程序运行
  • 【机器学习】神经网络介绍【转】

    深度学习 神经网络介绍 1 神经元 2 激活函数 3 感知机与多层网络 4 误差反向传播 参考 周志华 机器学习 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络 它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应 Koho