【机器学习入门 】人工神经网络(一)

系列文章目录

第1章 专家系统
第2章 决策树
第3章 神经元和感知机
识别手写数字——感知机
第4章 线性回归
第5章 逻辑斯蒂回归和分类
第5章 支持向量机


文章目录

  • 系列文章目录
  • 前言
  • 一、多层感知机
  • 二、反向传播算法
  • 三、深度神经网络


前言

人工神经网络( Artifical Neural Network, ANN)是按照联结主义思想构建的智能计算模型。生物通过相互连接的大量神经元实现了智能,人们受此启发,相信通过将人工神经元组织成相互连接的网络,也能使机器表现出智能。由此产生了一系列神经网络计算模型,比如,前馈神经网络、循环神经网络、径向基函数网络、自组织神经网络、玻耳兹曼机等。本章着重介绍前反馈神经网络。


一、多层感知机

由于感知机模型和逻辑斯蒂回归的等效性,它只能解决线性分类问题,对于非线性分类问题无能为力。例如,“异或”这种布尔运算,就是一个非常简单且非线性的分类问题,是用来展示感知机和多层神经网络的差别的经典问题。
可见上一章。
但我们可以徒手构造一个加入了“中间层”的感知机模型来解决异或问题

在这里插入图片描述

这个中间层也叫作**“隐藏层”**。当我们说“多层感知机”(Multiple Layer Perceptron,MLP),通常就是指这种只含有单个隐藏层的神经网络。

多层感知机是前馈神经网络(Feed-forward Neural Network)的一种。前馈神经网络把每一层的输出作为下一层的输入,从输入层逐层连接到输出层,因此,它可以有任意多个隐藏层。

为什么感知机在层叠之后可以具有更强的表达能力呢?设想如果感知机没有非线性激活函数,只是取输入参数的线性和,那么层叠的感知机具有非线性分类能力吗?由于线性运算的叠加依然是线性运算,我们知道这个问题的答案是否定的:没有了非线性激活函数,多层感知机叠加也无法解决非线性分类问题。可见,多层神经网络具有更强表达力的关键在于非线性的激活函数
直观解释:
我们可以把激活函数想象为陡峭的斜面,权值参数可以控制这些斜面的走向,若干个不同的斜面进行组合,可以拟合任意复杂的曲面形状。因此具有隐藏层的神经网络具有强大表达力。

二、反向传播算法

学习神经网络的权值参数,实际上采用与感知机完全相同的梯度下降法。早期感知机模型从仿生学的角度,根据人们对生物神经系统的理解,采用了赫布规则进行权值更新。我们把感知机和神经网络模型都作为最优化问题,用数值优化方法进行求解,我们会发现梯度下降法对它们都是适用的。该方法在被提出之时,被冠名为"反向传播(back propagation)算法"

这是因为对于前馈神经网络来说,权值更新的顺序与正常计算网络输出的顺序刚好相反,是从输出层向输入层反向进行传播的。梯度下降法的关键是求取误差关于模型参数(连接权值)的梯度(即导数),反向传播算法从输出层开始计算误差,并将误差沿着神经元连接反向传播。

输出层的误差是可以直接根据输出和目标值进行计算的,采用不同的损失函数可以计算出不同的误差。如果我们希望输出拟合某些期望的目标值,可以采用均方误差;如果将输出用作分类,可以采用逻辑斯蒂回归模型的交叉熵损失函数等。
在这里插入图片描述

在这里插入图片描述
也就是说,梯度下降法这里一定能找到f(x)的极小值。
接下来对于这个问题,损失函数 E E E ω \omega ω b b b的二元函数。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面回顾了一下,去年在浙大的机器学习网课中讲到的后向传播算法。
接下来看下,这本书的推导过程有何差别。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
从上面的推导可以看出,这个过程很像把误差作为输入,将神经网络的方向倒转,逐层加权求和来传播误差。

三、深度神经网络

虽然人们早在20世纪80年代就解决了多层神经网络模型的训练问题,但是,受限于当时计算机的性能,没有充分挖掘神经网络模型的潜力。在处理图像、语言等输入维度较高的信息时,往往需要大规模的神经网络来产生足够丰富的中间表示。闵斯基等人在研究感知机模型的局限性时就指出了增加中间层对于扩展模型的表达力的重要性;鲁梅尔哈特等人在提出反向传播算法的时候,也以学习内部表示(internal representation)作为解决问题的目标。
神经网络处理信息的过程就是对输入信息中的特征进行自动提取,因此当输入很复杂时,需要有足够多的中间单元对输入的各种特征进行抽象表示,这样输出层才能够在这些中间表示的基础上产生预期的输出。
当扩展神经网络的中间表示单元时,我们有两种选择:增加网络的宽度,或者增加网络的深度。研究显示,表示同样复杂的特征,增加网络的宽度所需的神经元数量要远远大于增加网络的深度,在增加同样数量神经元的情况下,增加深度可以获得更丰富的表达力。这一点我们能够从高等动物的视觉神经系统中得到一些印证,生物神经系统也采取了增加深度的策略。
神经生物学家通过在神经系统中植入微电极,或者采取磁共振成像等方法,研究动物视觉神经系统对刺激的响应,从而理解神经系统对视觉信息的加工处理机制。研究发现,神经系统对视觉信号的处理过程是明显分层,逐层递进的。

深度神经网络面临的问题

误差在逐层传播的过程中会不断衰减,导致无法将有效的信号传入较深层的网络。

误差难以传播的原因之一来自广泛应用的Sigmoid激活函数本身。除了接近原点的区域之外,Sigmoid函数的两端过于平直,导数接近于0,一旦落入该区域,训练就会失去梯度的引导,进度变得极为缓慢。随着网络的加深,这种缺点尤为突出,误差在反向传播的过程中很容易衰减到太小以至于失去引导网络朝着正确方向改进的能力。这种情况叫作梯度信号衰减
修正线性单元(Rectified Linear Unit, ReLU)是一种更加适合深度网络的激活函数。它的计算过程简单, f ( t ) = m a x ( 0 , t ) f(t)=max(0,t) f(t)=max(0,t),当输入小于等于0时,输出为0;当输入大于0时,输出为自身。它的导数计算也很简单。输入小于等于0时,导数为0;输入大于0时,导数为1。也就是说,它的导数不会随着输入增大产生衰减这有效避免了Sigmoid函数所遇到的梯度信号衰减的问题。
由于ReLU函数在输入小于0的区域导数为0,有时会导致神经元陷入不活跃的状态,得不到脱离不活跃状态的梯度信号。因此,我们常采用一种带“泄露”(leaky)的变体,给小于0的部分一个较小的斜率。
带有泄露的修正线性单元(Leaky ReLU)激活函数如下 :
L e a k y R e L U ( t ) = { t , 如果  t ≥ 0 λ t , 如果  t < 0 , 其中 λ 是小于1的正数 LeakyReLU(t)=\begin{cases} t, & \text{ 如果 } t \ge 0 \\ \lambda t, & \text{ 如果 } t \lt 0,\text{其中} \lambda \text{是小于1的正数} \end{cases} LeakyReLU(t)={t,λt, 如果 t0 如果 t<0,其中λ是小于1的正数

大规模的网络又数量庞大的参数,极容易发生过拟合训练样本的问题。虽然能准确预测训练数据,但是在实际应用于未知数据时,缺乏很好的泛化能力。

深度神经网络的另一个问题是过拟合。这个问题来源于深度神经网络自身强大的表达能力,当模型所能容纳的复杂度高于样本的真实复杂度时,模型会倾向于用过于复杂的方式描述原本较为简单的问题。这类似用过于庞大的决策树对训练样本进行完全准确的分类,决策树末端分支采纳了样本间无关紧要的细微差异作为分支条件,并没有捕捉到不同类别样本的关键差异。这样的决策树就是过拟合的,无法正确分类真实样本。
为了防止深度神经网络过拟合,人们提出了很多方法。
比如,丢弃法(Dropout) 在训练时将中间层的某些输入随机设置为 0。一方面,这种方法能够在每一层输入中引入噪声,从而实现扩增训练数据的效果,相当于增加了样本的数量;另一方面,该方法迫使一部分神经连接完成之前由整个网络完成的工作,削弱了神经元之间相互适应产生的关联性,增强了神经元的独立性。
再如,批归一化(Batch Normalization) 是另一种防止过拟合的常见方法。该方法对中间层的输出进行归一化,对输出的均值和方差进行调整和约束,根据训练数据学习均值和方差调整的目标。这样可以有效限制随机噪声对中间层输出的扰动,防止梯度爆炸,同时,还可以将中间层的输出调整到更加符合真实数据分布的范围内。
这些方法都在深度神经网络的强大表达力之上附加了限制条件。这一类方法,在机器学习中被称为正则化方法。为了防止模型过拟合,正则化方法给模型的优化目标加入了额外的约束,这就像把肆意乱窜的猛兽关进了笼子。
在这里插入图片描述
在这里插入图片描述

然而,数量充足而且丰富均衡的训练样本才是深度神经网络模型训练成功的关键正则化方法引入的约束通常是与具体问题和真实数据无关的先验约束,并不能保证引导模型拟合数据的真实分布。真实分布永远存在于真实数据之中。真正能够防止过拟合,使模型反映真实数据分布的,是充足、丰富、平衡的训练样本。充足是说训练样本的规模要与目标网络模型的参数规模相匹配;而丰富、平衡是说各种类别、各种情况的样本都要有,并且数量要尽可能平衡,因为模型很难在稀缺的样本中学习统计规律。


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

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

相关文章

蓝桥杯-02-2023蓝桥杯c/c++省赛B组题目

参考 2023 年第十四届蓝桥杯 C/C B组省赛题解 2023蓝桥杯c/c省赛B组题目(最全版)&#xff1a; A&#xff1a;日期统计 这题方法应该很多&#xff0c;没有和别人讨论想法。我的解法思路是&#xff1a;先 load 函数生成所有这一年的合法日期&#xff0c;然后枚举所有可以从数据…

node和npm yarn包管理工具

node和包管理工具 今日目标&#xff1a; 1.dos常用指令 2.node的模块化 3.npm包管理工具 4.yarn的常用指令 5.node的内置模块 00-回顾 # Promose:作用&#xff1a;解决ajax请求响应顺序不可控的问题特性&#xff1a;1. Promise是一个构造函数&#xff0c;需要通过new关…

uni-app打包证书android

Android平台打包发布apk应用&#xff0c;需要使用数字证书&#xff08;.keystore文件&#xff09;进行签名&#xff0c;用于表明开发者身份。 Android证书的生成是自助和免费的&#xff0c;不需要审批或付费。 可以使用JRE环境中的keytool命令生成。 以下是windows平台生成证…

MySQL、Oracle的时间类型字段自动更新:insert插入、update更新时,自动更新时间戳。设置自增主键id,oracle创建自增id序列和触发器

1. MySQL 支持设置自增id的字段类型&#xff1a;int、bigint、double等数值类型&#xff0c;一般用int、bigint支持设置自动更新时间的字段类型&#xff1a;datetime、timestamp下面sql中的now()函数可以用current_timestamp()替代 1.1. 不指定秒精度 drop table if exists …

Ollama 在本地快速部署大型语言模型,可进行定制并创建属于您自己的模型

# Ollama 在本地快速部署并运行大型语言模型。 macOS 点击下载 Windows 预览版 点击下载 Linux curl -fsSL https://ollama.com/install.sh | sh手动安装指南 Docker 官方的 Ollama Docker 镜像 ollama/ollama 已经在 Docker Hub 上发布。 库 ollama-pythonollama-js…

超详细测试项目——Web电商项目测试点整理.....

虽然说近些年来&#xff0c;软件测试找工作的时候&#xff0c;简历中如果写着电商项目被认为是烂大街的项目&#xff0c;甚至受到根本不了解行情的HR或者部分公司的技术人员的刁难&#xff0c;但是&#xff1a;电商这么流行普遍的项目和应用&#xff0c;这不是很正常么&#xf…

阿里云2核4G云服务器165元一年,ECS u1优惠价格199元一年

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

浅谈数据治理之道 数据采集(二)

数据采集是数据治理过程中的一个非常关键和重要地环节&#xff0c;不仅关系到数据的及时性、准确性、完整性和有效性等&#xff0c;还涉及到数据的安全和隐私。其次&#xff0c;涉及到从各种数据源获取原始数据&#xff0c;并将其转换为适合进一步处理和分析的格式。今天 咱们就…

如何从小白,到掌握Python

作为前端开发人员想要掌握Python编程语言&#xff0c;以下是一个学习路径建议&#xff1a; ### 初级阶段&#xff1a; 1. **学习Python基础&#xff1a;** - 学习Python的基本语法、数据类型、流程控制等基础知识。 - 可以通过在线教程、书籍或视频课程来学习&#xff…

Android单片机硬件通信《GPIO通信》

一、什么是GPIO? GPIO&#xff08;英语&#xff1a;General-purpose input/output&#xff09;&#xff0c;通用型输入输出端口&#xff0c;在单片机上一般是通过一个GND引脚和若干个io引脚配合工作。 单片机可以配置GPIO输入输出模式,与外界环境进行通信交互。在输入环境下&…

网络传输(3):TFTP客户端使用

1. 简要说明 在前面的文章中已经讲述了如何安装TFTP客户端和TFTP服务器。其中&#xff1a; tftp-hpa为客户端 tftpd-hpa为服务器。 2. 启动TFTP服务器 我们在设置好相关的TFTP根路径&#xff0c;运行模式以后&#xff0c;可以通过如下指令重启TFTP服务器&#xff0c;使设置生…

【Node.js】events

EventEmitter 像是 Vue2 的event bus&#xff0c;或者Vue3 的 mitt。主要采用了发布订阅模式来处理事件。 const EventEmitter require(events);const event new EventEmitter() // 监听(订阅)事件 event.on(test,(data)>{console.log(data) })event.emit(test,testtt) /…

Visual Studio 2013 - 高亮设置突出显示的引用

Visual Studio 2013 - 高亮设置突出显示的引用 1. 高亮设置 突出显示的引用References 1. 高亮设置 突出显示的引用 工具 -> 选项… -> 环境 -> 字体和颜色 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Flutter 事件传递简单概述、事件冒泡、事件穿透

前言 当前案例 Flutter SDK版本&#xff1a;3.13.2 本文对 事件传递只做 简单概述&#xff0c;主要讲解&#xff0c;事件传递过程中可能遇到的问题解决&#xff0c;比如 事件冒泡、事件穿透&#xff1b; 不是我偷懒&#xff0c;是自认为没有这几位写的详细、仔细&#xff0c…

xss漏洞总结

学了好久的漏洞&#xff0c;现在来做个小总结。 目录 一、xss简要概述 二、同源策略 三、主要危害 四、存在的场景 五、攻击类型 反射型、储存型、DOM型 六、绕过技巧 七、payload标签 八、防御 一、xss简要概述 概述&#xff1a; xxs全称&#xff1a;跨站脚本&#xff08;cr…

乐优商城(九)数据同步RabbitMQ

1. 项目问题分析 现在项目中有三个独立的微服务&#xff1a; 商品微服务&#xff1a;原始数据保存在 MySQL 中&#xff0c;从 MySQL 中增删改查商品数据。搜索微服务&#xff1a;原始数据保存在 ES 的索引库中&#xff0c;从 ES 中查询商品数据。商品详情微服务&#xff1a;做…

【力扣hot100】128.最长连续序列

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4 解…

JavaSE:类与对象

目录 一、前言 二、类与对象的介绍 1.类的定义格式 三、类的实例化 1.类的实例化介绍 2.成员初始化 3.类中方法的实现 四、封装 1.private实现封装 2.getter和setter方法 五、构造方法的使用 1.构造方法的介绍 2.构造方法的特性 六、this引用 1.this的介绍 2.th…

win10在更新黑屏(火绒查杀explorer.exe)屏幕只有鼠标

win10在更新黑屏&#xff08;火绒查杀explorer.exe&#xff09;屏幕只有鼠标 黑屏产生的原因修机过程方法1方法2方法3方法4总结 黑屏产生的原因 微软在Win10系统的最近更新中&#xff0c;为了和360抢夺搜索框的资源&#xff0c;微软进行特定的代码判断&#xff0c;如果在中国地…

rfc793-page36

rfc793原文 If the connection is in any non-synchronized state (LISTEN,SYN-SENT, SYN-RECEIVED), and the incoming segment acknowledgessomething not yet sent (the segment carries an unacceptable ACK), orif an incoming segment has a security level or compart…