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

news2024/11/17 22:25:20

目前神经网络技术受到追捧,一方面是由于数据传感设备、数据通信技术和数据存储技术 的成熟与完善,使得低成本采集和存储海量数据得以成为现实;另一方面则是由于计算能力的大幅提升,如图形处理器(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.coloradmin.cn/o/1196813.html

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

相关文章

人工智能基础_机器学习023_理解套索回归_认识L1正则---人工智能工作笔记0063

然后上一节我们说了L1,L2正则是为了提高,模型的泛化能力, 提高泛化能力,实际上就是把模型的公式的w,权重值,变小对吧. 然后我们这里首先看第一个L1正则,是怎么做到把w权重变小的 可以看到最上面是线性回归的损失函数,然后 L1可以看到,这个正则,就是在损失函数的基础上给损失…

3D模型人物换装系统

3D模型人物换装系统 介绍遇到的问题问题修复具体实现换装1.准备所有模型部位和模型骨骼部位准备材质准备模型根骨骼准备创建文件夹将上述模型拖成预制体创建一个动画状态机给他们附上待机动画 2.脚本驱动Mesh合并代码 UCombineSkinnedMgr.cs创建Mesh以及实例化对象的代码 UChar…

CSS特效第一弹:右上角tag标志纯代码前端实现(非图片)

😎效果: 🤷‍♂️思路: 分为2个部分: 1.文字方块右下角折角 文字方块用绝对定位z-index让文字方块悬浮在右上角的位置 2.右下角折角通过before伪元素border属性实现(三角形实现方法) 👍核心代…

人工智能基础_机器学习024_梯度下降进阶_L1正则可视化图形---人工智能工作笔记0064

然后我们就来用代码实现一下L1正则的可视化,我们来看看 首先导入 import numpy as np 数学计算 import matplotlib.pyplot as plt 画图用的 然后我们把L1正则的公式写出来 可以看到L1的正则 其实就是w1和w2的绝对值相加对吧 然后这里我们写一个公式: f(x,y) = |x|+|y| …

12. 定时器按键消抖

12. 定时器按键消抖 定时器按键消抖简介定时器消抖配置步骤程序编写bsp_keyfilter.hbsp_keyfilter.cmain 定时器按键消抖简介 使用延时函数消抖会浪费 CPU 性能,因为延时函数就是空跑。如果按键是使用中断的方式实现的,就更不能在中断服务函数中使用延时…

【基础算法模板梳理】再也不想学算法了!(待更新)

目录 1、【二分】 (1)rmid —— 大于等于某数的最小值 (2)lmid —— 小于等于某数的最大值 2、【前缀和】 (1)一维前缀和 (2)二维前缀和 3、【差分】 (1&#x…

嵌入式中常见的显示屏接口有哪些?

显示屏接口一般有I2C、SPI、UART、RGB、LVDS、MIPI、EDP和DP等。下面简要总结一下。 01 中小屏接口I2C、SPI、UAR 一般3.5寸以下的小尺寸LCD屏,显示数据量比较少,普遍采用低速串口,如I2C、SPI、UART。 I2C: I2C总线是半双工&…

游戏公司数据分析师必备知识(持续补充中...)

1.如何撰写专题报告? ①原则 只有一个主题:即使不讲ppt,业务方也能看得懂行文通俗简单易懂:学习产品经理平常是如何写报告的明确的数据结论和落地项先行:跟业务方多沟通数据结论,让他们给出落地项 ②结构…

BMVC 23丨多模态CLIP:用于3D场景问答任务的对比视觉语言预训练

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2306.02329 摘要: 训练模型将常识性语言知识和视觉概念从 2D 图像应用到 3D 场景理解是研究人员最近才开始探索的一个有前景的方向。然而&#xff0c…

C语言--定义一个包含年月日的结构体Day,实现一个函数,根据传入的结构体指针计算,该日期是当年的第几天?

一.题目要求 输入2000年6月5日,输出:这是2000年的第157天。 二.思路分析 首先定义一个包含年月日的结构体 年份:要判断是否是闰年,闰年的二月有29天,平年的二月有28天。 月份:一个月份分大月和小月&#…

如何用sklearn对随机森林调参

文章目录 一、概述二、实操1、导入相关包2、导入乳腺癌数据集,建立模型3、调参 三、总结 Link:https://zhuanlan.zhihu.com/p/126288078 Author:陈罐头 一、概述 sklearn是目前python中十分流行的用来实现机器学习的第三方包,其中…

一篇文章初步学习Python基础知识+结构+数据类型,Python零基础入门~

文章目录 前言一、编程基础1.基本的输入输出2.变量3.基本运算符 二、控制流程1.选择结构2.循环结构 三、数据类型1.字符串关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战…

传奇GOM引擎微端连接不上如何解决

Gom传奇引擎的微端连不上的原因可能有很多,比如网络问题、服务器配置问题、版本兼容性问题等。1.检查网络连接:首先要确保你的网络连接稳定。如果遇到网络问题,比如网络延迟过高,可能会导致你无法连接到服务器。建议使用稳定的网络…

Win11专业版安装Docker Desktop,并支持映射主机的gpu

一、Windows环境下安装 Docker 必须满足: 1. 64位Windows 11 Pro(专业版和企业版都可以) 2. Microsoft Hyper-V,Hyper-V是微软的虚拟机,在win11上是自带的,我们只需要启动就可以了 二、下载Docker Desktop安装包 方式一:进入官网下载 https://docs.docker.com/desktop…

6.存储器概述,主存储器

目录 一. 存储系统基本概念 (1)存储系统的层次结构 (2)分类 (3)存储器的性能指标 二. 主存储器的基本组成 三. SRAM和DRAM 四. 只读存储器ROM 五. 提升主存速度的方法 (1)双…

matplotlib 设置标签和图例

常用标签 xlabel:x轴标签名称。 ylabel:y轴标签名称。 title:图像标题。 设置x和y轴的刻度:xticks和yticks。 nums np.arange(0, 1.3, 0.01)# 设置标题 plt.title("title") # 设置横坐标信息 plt.xlabel("x-…

Spark的转换算子和操作算子

1 Transformation转换算子 1.1 Value类型 1)创建包名:com.shangjack.value 1.1.1 map()映射 参数f是一个函数可以写作匿名子类,它可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函…

中低收入群体能在“双十一”购物狂欢吗?

今天这个“双十一”购物狂欢节,在各大网站的报道的确蜂拥而上,显得很有点儿“狂欢”的景象,可读罢内容却听到哀鸿遍野。 笔者仅只接力“腾迅新闻”和“今日头条”几小时前分别发表的《 双11十五年,价格战还能打多久?》…

乡村振兴 品牌引领 “盘锦碱地柿子”亮相第二十届中国国际农产品交易会

2023年11月9日,为期4天的第二十届中国国际农产品交易会在山东青岛成功举办。本次大会以“奋进新征程强农促振兴”为主题。农交会是经党中央、国务院批准,农业农村部主办的大型农业行业盛会,在宣传“三农”政策、展示农业农村发展成就、活跃农…

58基于matlab的采样的运动规划算法-RRT(Rapidly-exploring Random Trees)

基于matlab的采样的运动规划算法-RRT(Rapidly-exploring Random Trees),3D和2D,原始的RRT算法中将搜索的起点位置作为根节点,然后通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树的叶子节点进入目标区域,…