第十三章《搞懂算法:神经网络是怎么回事》笔记

目前神经网络技术受到追捧,一方面是由于数据传感设备、数据通信技术和数据存储技术 的成熟与完善,使得低成本采集和存储海量数据得以成为现实;另一方面则是由于计算能力的大幅提升,如图形处理器(Graphics Processing Unit,GPU)在神经网络算法中的应用和算法的不断改进带来的计算效率提升。

常见的神经网络模型有深度神经网络、卷积神经网络、循环神经网络,以及由这些基本网 络优化而形成的各种深度学习模型。

13.1 从一个具体任务开始:识别数字

神经网络通过对大量手写数字的训练样本的学习,从而自动找到识别手写 数字的规则,实现对手写数字的识别。神经网络手写数字识别的训练数据一般采用 MNIST 数据 集,它不但提供了大量形式各异的手写数字样本,同时也提供了各个样本的标注信息,从而便 于研究者使用。

13.2 理解神经元是什么

神经元是神经网络算法的基本单元,它本质上是一种函数,接受外部刺激并根据输入产生 对应的输出。它的内部结构可以看作线性函数和激活函数的组合,线性函数运算结果传递给激 活函数,最终产生该神经元的输出结果。神经元也经历了逐步发展并完善的过程,其中典型的神经元有感知器和 S 型神经元等。

13.2.1 感知器是什么

感知器有时也被称为感知机,是由康奈尔航空实验室的科学家弗兰克·罗森布拉特在 1957 年所提出的一种人工神经网络。它可以被视为一种形式最简单的前馈式人工神经网络,是一种 二元线性分类器。感知器接收多个二进制输入并产生一个二进制输出。

感知器工作原理如下。

(1)感知器接收多个二进制输入,每个输入对应一个权重。

(2)感知器二进制输入的加权值对输出有重大影响。

(3)通过感知器加权值与阈值比较,决定最后的二进制输出值。

上述过程可用如下代数形式表达。

有时候为了简便,我们会把感知器规则 写成另外的通用形式,如下所示。

其中,wx=Σwi xi,b 为阈值的相反数,也称为感知器的偏置。

13.2.2 S型神经元是什么

S 型神经元与感知器相比,其优点在于:权重和偏置的微小变化只会导致输出的微小变化。

S 型神经元与感知器最大的区别在于它的输入和输出不再是二进制的离散值,而是 0 ~ 1的连续值。总的来说,S 型神经元的特点如下。

(1)S 型神经元有多个输入值,这些输入值为 0 ~ 1 的任意值。
(2)S 型神经元输入的加权值经过 sigmoid 函数处理后,输出一个 0 ~ 1 的数值。

S 型神经元与感知器的不同之处在于:S 型神经元是一个平滑的函数,而感知器是一个阶跃函数。也就是说,感知器只能输出 0 或者 1,而 S 型神经元能够输出 0 ~ 1 的任何数值。

S 型神经元的表达式可以写为任何一个权重和偏置的微小变化Δw 和 Δb 都会导致 S 型神经元的输出产生一个微小变化。

13.3 理解典型神经网络多层感知器

最基本、也是最典型的神经网络— 多层感知器(Multi- Layer Perception,MLP)

13.3.1 神经网络结构是什么

一个典型的神 经元网络结构包括 3 个层:输入层、隐藏层、输出层。

(1)输入层。输入层是神经网络的第一层,图像通过数值化转换输入该层,该层接收输入 信号(值)并传递到下一层,对输入的信号(值)并不执行任何运算,没有自己的权重值和偏置值。图像将像素点信息转换为输入层神经元激活值,像素点数量等于输入层神经元数量。

(2)隐藏层。隐藏层是神经网络中介于输入层和输出层之间的合成层。一个神经网络包含 一个或多个隐藏层,隐藏层的神经元通过层层转换,不断提高和已标注图像的整体相似度,最 后一个隐藏层将值传递给输出层。

(3)输出层。输出层是神经网络的最后一层,接收最后一个隐藏层的输入而产生最终的预 测结果,得到理想范围内的期望数目的值。该层神经元可以只有一个,也可以和结果一样多。

13.3.2 搞懂MLP的工作原理是什么

手写数字的神经网络算法分类中包括如下几个主要环节,即图像数值化、神经 元相互激活传递和代价函数最小化等内容,需要我们重点把握。

1.图像数值化:将图像转化为数值

图像(手写数字)识别的第一项工作就是将 图像通过各像素点进行数值化处理,这项工作往往发生在神经网络的输入层。

其次,MLP 神经网络的最后一层包含 10 个神经元,分别代表 0 ~ 9 这 10 个数字。这 10 个神经元的激活值也是 0 ~ 1 的数值,激活值越大表示输入值对应该神经元的可能性越大。

最后,神经网络的中间层为隐藏层,它可以包含多层结构和多个神经元。神经网络处理信息的 核心就在于每一层神经元的激活值的计算和上一层神经元激活值影响下一层神经元激活值的方式。

2.激活规则:神经元间如何相互影响

神经网络的大致工作过程是,图像经过数值化处理后进入输入层神经元,输入层神经元沿 着某条路径激活下一层神经元,下一层神经元又将这种激活状态传播到后续各层的神经元,最 终在输出层产生预测结果。

神经元的激活规则就是,某个神经元激活值由上一层神经元激活值的某种加权方式来决 定。例如,神经元 c1 激活值由上一层神经元激活值的某种加权形式来表达,如 σ (w1a1+w2a2+... +wnan+b),其中 ai 是上一层某个神经元的激活值;wi 是上一层该神经元激活值对神经元 ci 激活 值影响的权重;b 则是神经元 c1 被激活的难易程度,即偏置;σ 是 sigmoid 函数,主要作用是将 函数值压缩为 0 ~ 1。

3.激活规则的关键:神经网络非线性矫正

早期神经网络的非线性函数经常使用 sigmoid 函数来将数值压缩为 0 ~ 1,但现在更多使用 relu 函数或者 tanh 函数来进行处理。

总的来说,上述 3 个函数有着各自的优缺点和使用场景。

第一,sigmoid 函数和 tanh 函数亲缘关系较近,一般认为 tanh 函数是 sigmoid 函数的改造版 本。在神经网络的隐藏层中,tanh 函数的表现要优于 sigmoid 函数,因为 tanh 函数范围为 -1 ~ 1, 数据的平均值为 0,有类似数据中心化的效果。

第二,在神经网络的输出层中,sigmoid 函数的表现要优于 tanh 函数,这是因为 sigmoid 函 数输出结果为 0 ~ 1,而 tanh 函数输出结果为 -1 ~ 1。输出结果为 0 ~ 1 更符合人们的习惯认知。

第三,relu 函数不同于上述两个函数,在深层网络中使用较多。工程实践中,sigmoid 函数和 tanh 函数会在深层网络训练中出现端值饱和的现象,从而导致网络训练速度变慢。因此,一般在神经网络层次较浅时使用 sigmoid 函数和 tanh 函数,而在深层网络中使用 relu 函数。

4.代价函数与参数优化

代价函数的一个合理形式是

当分类准确时这个代 价函数值就较小,当分类错误时这个代价函数值就较大。我们可以通过不断调整参数值来优化代价函数,最终确定合适的模型参数。

13.4 MLP的代价函数与梯度下降

MLP 神经网络学习过程由信号的正向传播与误差的反向传播两个过程组成。

(1)正向传播时,输入样本从输入层传入,经各隐藏层逐层处理后传向输出层。若输出层 的输出值与实际值不符,则转入误差的反向传播阶段。

(2)误差的反向传播是将输出误差以某种形式通过隐藏层向输入层逐层反向传播,并将误差分 摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

(3)这个信号的正向传播与误差的反向传播的各层权值调整过程,是周而复始地进行的。 权值不断调整的过程,也就是神经网络的学习训练过程,此过程一直进行到神经网络输出的误 差减小到可接受的程度或进行到预先设定的学习次数为止。

13.4.1 代价函数:参数优化的依据

13.4.2 梯度下降法:求解代价函数最小值

识别手写数字的任务 中,梯度下降法的工作过程主要如下。

(1)首先,随机给定一系列的权重值与偏置值。当然,这样最后的识别效果一般来说都会 很糟糕。

(2)接下来,算法需要不断改进。改进的方向就是使代价函数的数值不断减小;代价函数是输出层神经元激活值的表达式,如

(3)代价函数越小,就表示输出层神经元激活值的真实值与预测值的差距越小,手写数字 识别效果较好。

(4)梯度下降就是随机设定参数的初始值,然后沿着负梯度方向进行迭代(可调节步长或 迭代次数改进梯度下降效率),直到达到代价函数的最小值。

一般的做法是,首先将训练样本打乱顺序并划分为许多小组,每个小组都包含若干 数量的训练样本。然后,使用某个小组数据来计算一次梯度。这种梯度下降法就是随机梯度下降法。

13.5 反向传播算法的本质与推导过程

13.5.1 反向传播算法:神经网络的训练算法

反向传播(Back Propagation,BP)算法是一种重要的神经网络训练算法,“反向”的含义主要是指误差的反向传播。

1.反向传播算法有什么用

反向传播算法可以看成梯度下降法在神经网络中的变形版本,它的原理主要是利用链式法 则通过递归的方式求解微分,从而简化对神经网络梯度下降优化参数时的计算。在输入数据固 定的情况下,反向传播算法利用神经网络的输出敏感度来快速计算神经网络中的各种超参数, 从而大大减少训练所需时间。

2.反向传播算法是什么

提升激活值可以采用的方法为改变权重 wi 和偏置 b、改变上层神经元激活值 ai。不 过,我们并不能改变上一层神经元激活值,我们能够改变的只是权重和偏置。

上一层神经元权重和偏置的变化情况会综合考虑输出层各神 经元的“要求”。这就是反向传播算法的核心思想,通过调整上一层各神经元的权重和偏置来实 现下一层各神经元激活值的“期待”,重复这个过程到神经网络的所有层。

13.5.2 寻根究底:搞懂反向传播算法的数学原理

1. 代价函数如何表达

2.代价函数偏导链式传递规律

上述代价函数对权重的偏导数只是一个训练样本的结果。由于总代价函数是 n 个训练样本 代价函数的均值,因此总代价函数对权重的偏导数为

虽然神经网络算法强大,应用广泛,但是它有个比较明显的不足就是可解释性较差。

13.6 编程实践:手把手教你写代码

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

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

相关文章

【数据结构】拓扑序列求法

概念不多说了,有疑问的搜一下,这里直接放求法: 找到入度为0的节点输出并删除该节点,并删除与该点链接的边重复第一步 例子 输出a,删除a输出b,删除b输出c,删除c 最终结果为abcdef 注意 拓扑排…

实战Leetcode(四)

Practice makes perfect! 实战一: 这个题由于我们不知道两个链表的长度我们也不知道它是否有相交的节点,所以我们的方法是先求出两个链表的长度,长度长的先走相差的步数,使得两个链表处于同一起点,两个链…

杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

文章目录 01 需求与回顾02 下载程序包03 编辑.toml文件3.1 编辑frps.toml3.2 编辑frpc.toml 04 启动服务4.1 启动服务端4.2 启动客户端 05 配置反向代理(可选)06 windows设置为默认启动(可选)6.1 创建启动脚本6.2 设置为开机自启 …

Liunx命令汇总

一.用户相关命令 1.1账号管理 创建用户: useradd (选项) 用户名用户口令: passwd (选项) 用户名修改用户: usermod 选项 用户名删除用户: userdel (选项) 用…

加班把数据库重构完毕

加班把数据库重构完毕 本文的数据库重构是基于 clickhouse 时序非关系型的数据库。该数据库适合存储股票数据,速度快,一般查询都是 ms 级别,不需要异步查询更新界面 ui。 达到目标效果:数据表随便删除,重新拉数据以及指…

elastic-job 完结篇

一 elastic-job 1.1 案例场景分析 1.设置4个分片,10秒执行一次。 分片弹性扩容缩容机制测试: 测试1:测试窗口1不关闭,再次运行main方法查看控制台日志,注意修改application.properties中的 server.port&#xf…

Vant 移动端UI 组件自动引入

Vue项目中安装Vant # Vue 3 项目,安装最新版 Vant npm i vant 组件按需引入配置 Vant按需引入- - -安装:unplugin-vue-components 插件 unplugin-vue-components 插件可以在Vue文件中自动引入组件(包括项目自身的组件和各种组件库中的组件&…

7.运算符

目录 一.算数运算符 1、算术运算符 2、比较运算符 1、等号()用来判断数字、字符串和表达式是否相等。 2、安全等于运算符(<>) 3、不等于运算符(<>或者!) 4、小于或等于运算符(<) 5、小于运算符(<) 6、IS NULL(IS NULL)&#xff0c;IS NOT NULL 运算…

2352 智能社区医院管理系统JSP【程序源码+文档+调试运行】

摘要 本文介绍了一个智能社区医院管理系统的设计和实现。该系统包括管理员、护工和医生三种用户&#xff0c;具有社区资料管理、药品管理、挂号管理和系统管理等功能。通过数据库设计和界面设计&#xff0c;实现了用户友好的操作体验和数据管理。经过测试和优化&#xff0c;系…

WorkPlus Meet:局域网内部使用的高效视频会议系统

随着全球化和远程办公的趋势&#xff0c;视频会议已成为现代企业和机构不可或缺的沟通工具。而现在&#xff0c;大多数政企单位或者涉密强的企业&#xff0c;都会使用局域网部署的音视频会议系统&#xff0c;提供更高的安全性和隐私保护。因为音视频会议中可能涉及到公司机密和…

程序员的护城河:职业发展的关键元素

目录 1. 技术深度与广度 2. 项目经验与实际操作 3. 沟通与团队协作 4. 持续学习与自我更新 5. 社区参与与开源贡献 6. 创新思维与解决问题的能力 7. 职业规划与自我管理 结语 在科技日新月异的今天&#xff0c;程序员的竞争已经不再仅仅依赖于技术水平&#xff0c;而是…

C++: 内存管理 (new / delete)

文章目录 一. C/C 内存分布二. C 语言中动态内存管理方式: malloc/calloc/realloc/free三. C内存管理方式1. new / delete 操作内置类型2. new / delete 操作自定义类型 四. operator new 与 operator delete 函数五. new 和 delete 的实现原理1. 内置类型2. 自定义类型 六. 定…

【中间件篇-Redis缓存数据库02】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

Redis高级特性和应用(慢查询、Pipeline、事务、Lua) Redis的慢查询 许多存储系统&#xff08;例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间&#xff0c;当超过预设阀值,就将这条命令的相关…

互联网大厂招兵买马开发鸿蒙应用,移动开发的春天又来了?

日前&#xff0c;美团拟开发鸿蒙系统APP的多个相关岗位正招聘开发人员引发业内关注。事实上&#xff0c;鸿蒙开发者已经成为京东、WPS、凤凰新闻、微博等互联网大厂争相招聘的人才&#xff0c;且招聘岗位众多。也就是说&#xff0c;这些公司正在加快鸿蒙化开发&#xff0c;为鸿…

基于C#+WPF编写的调用讯飞星火大模型工具

工具源码&#xff1a;https://github.com/lishuangquan1987/XFYun.SparkChat 工具效果截图&#xff1a; 支持流式输出: 其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请&#xff0c;免费的。 申请地址&#xff1a;https://xinghuo.xfyun.cn/ 注册之…

【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法2】

文章目录 概要Gray-world AlgotithmGround Truth Algorithm结论&#xff1a; 概要 随着数字图像处理技术的不断发展&#xff0c;白平衡算法成为了图像处理中一个关键的环节。白平衡的目标是校正图像中的颜色偏差&#xff0c;使得白色在图像中呈现真实的白色&#xff0c;从而提…

利用MSF设置代理

1、介绍&#xff1a; 通过MSF拿到一个机器的权限后&#xff0c;通过MSF搭建socks代理&#xff0c;然后通内网。 拿到目标权限&#xff0c;有很多方法&#xff0c;比如&#xff1a;①ms17-010 ②补丁漏洞 ③MSF生成后门 在此直接使用MSF生成后门 MSF中有三个代理模块&#x…

【ATTCK】MITRE Caldera - 测试数据泄露技巧

CALDERA是一个由python语言编写的红蓝对抗工具&#xff08;攻击模拟工具&#xff09;。它是MITRE公司发起的一个研究项目&#xff0c;该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的&#xff0c;能够较真实地APT攻击行为模式。 通过CALDERA工具&#xff0c;安全…

【函数讲解】pygmo中的函数 fast_non_dominated_sorting() + 利用支配关系,学习一个SVM分类器,将解分为两类

这个函数是用来执行非支配排序的&#xff0c;可以分层构建Pareto&#xff0c;并返回每一层的解以及每个解支配其他解的索引、解被其他解支配的次数、解所在的非支配层级。这个函数对这些解进行非支配排序&#xff0c;并返回四个数组&#xff1a;ndf, dl, dc, 和 ndr。 ndf (Non…

基于单片机设计的智能风扇(红外线无线控制开关调速定时)

一、项目介绍 在炎热的夏季&#xff0c;风扇成为人们室内生活中必不可少的电器产品。然而&#xff0c;传统的风扇控制方式存在一些不便之处&#xff0c;比如需要手动操作开关、无法远程控制和调速&#xff0c;以及缺乏定时功能等。为了解决这些问题&#xff0c;设计了一款基于…