深度学习笔记001

      

目录

一、批量规范化

二、残差网络ResNet

三、稠密连接网络(DenseNet)

四、循环神经网络

五、信息论

六、梯度截断


本篇blog仅仅是本人在学习《动手学深度学习 Pytorch版》一书中做的一些笔记,感兴趣的读者可以去官网http://zh.gluon.ai/

        这里主要是记录个人对一些概念的理解,仅此而已。存在错误欢迎指出。

一、批量规范化

        主要是用来加速深层网络的收敛速度。因为在从输入到训练的过程中,模型的参数变化是难以预测的,这种变化在深层网络中被非正式的假设会阻碍网络的收敛,所以在每一次迭代中,我们对其进行标准化,即使用这种标准化进行补偿在训练过程中变量分布的偏移和拉伸。

BN(x)=\gamma \odot \frac{x-\mu _{B}}{\sigma _{B}}+\beta

        B为小批量样本(批量的大小设置比没有使用批量规范化更加重要),其中的\mu _{B}\sigma _{B}是小样本的样本均值和样本标准差。其中的\gamma ,\beta 是拉伸参数和偏移参数,需要和模型一同训练。

        

        使用:在全连接层中,批量规范化一般是加在仿射变换和激活函数之间;在卷积层中,一般是加在卷积层后和非线性激活函数之间,注意输入的大小是相同的。

net = nn.Sequential(nn.Conv2d(1,6,kernel_size=5),nn.BatchNorm2d(6),nn.Sigmoid(),nn.AvgPool2d(kernel_size=2,stride=2),nn.Flatten(),nn.Linear(36,10),nn.BatchNorm1d(10),nn.Sigmoid(),nn.Linear(10,2))

注意这里的BatchNorm2dBatchNorm1d。2d是针对卷积层的规范化,1d是针对全连接层的规范化。

加上规范化层的训练
未加规范化层的训练

二、残差网络ResNet

        在神经网络架构F上很难找到真正的函数f,因此想要修改通过改进F的网络架构以此来优化。但是如果F的架构并非是嵌套的,则会导致高阶F会远离目标函数。

只有当F之间是相互嵌套的才能满足。残差网络就是来解决这个问题的。

        残差网络涉及到了几个问题。对于理想的映射 f(x),在输入x后将x引入一个正反馈到输出的激活函数前,这样该网络只需要学习 f(x)-x这个残差映射就行。

        残差网络能够用来简化深层网络训练问题,是因为它通过引入残差学习框架,将网络层重新表述为相对于层输入的残差函数,而不是学习无参考的函数。这样也使得网络更加容易优化,应该它学习的不是整个映射。

        同时,残差网络也更好的解决了深层网络梯度消失的问题。在深度网络中,梯度消失是一个常见的问题,特别是在训练深层网络时。残差学习通过跳跃连接(skip connections)的方式,使得梯度能够更快地传播到浅层,从而减少了梯度消失问题的影响。

三、稠密连接网络(DenseNet)

        稠密连接网络是ResNet网络的扩展,是将每一层的信息直接传给后面的所有层。和残差网络不同的是,残差网络使用的是直接相加的方式,而稠密网络使用的是连接的方式。

        稠密连接的优势在于:

  1. 信息流更加充分:稠密连接网络中的每一层都直接连接到后面所有的层,使得信息能够从网络的前部流动到后部,避免了信息在深层网络中逐渐丢失的问题。这种密集的连接结构使得网络更加容易捕获和传递输入数据的信息,有助于提高模型的表示能力。

  2. 梯度更加稳定:由于每一层都直接连接到后面所有的层,稠密连接网络中的梯度可以更容易地通过网络反向传播。这有助于缓解梯度消失或梯度爆炸的问题,使得模型更容易训练。

  3. 参数共享:稠密连接网络中的每一层都可以访问前面所有层的特征图,因此可以在每一层中共享参数。这样可以大大减少模型的参数量,降低了过拟合的风险,并提高了模型的效率。

  4. 网络更深:稠密连接网络中的稠密连接结构使得网络更容易训练,因此可以构建更深的网络。更深的网络通常具有更强的表示能力,可以学习到更复杂和抽象的特征表示,从而提高模型的性能。

其使用情景在于:

小数据集的时候,通过参数重用和参数共享来降低过拟合的风险。

四、循环神经网络

        对于时间步 t-(n-1) 之前的数据,如果要尽可能的将其影响合并到x_{_{t}} 上,就需要增大 n 的数值,也就是拉长时间线。但是也因此模型的参数将会指数级的增长。为了解决这个问题,就使用了隐变量模型

                                        P(x_{t}|x_{t-1},x_{t-2}...x_{1}) = P(x_{t}|h_{t-1})

其中 h_{t-1} 是隐状态,也称之为隐藏变量。它存储了到时间步 t-1 的数据信息。一般来说,可以使用当前输入状态和上一个隐藏变量来计算当前时间步 t 处的隐藏变量。

h_{t} = f(x_{t},h_{t-1})

H_{t} = \phi (X_{t}W_{xh} + H_{t-1}W_{hh} + b_{h})                                      式1

需要注意的是,隐藏变量和隐藏层是不一样的。隐藏层指的是从输入到输出路径上的隐藏的层,而隐藏变量则是“在给定步骤所做的任何操作的输入”,并且这些状态只能通过之前时间步的数据来计算。

        由公式可知,这样就沟通了 t 时间步和 t-1 时间步对应隐藏变量之间的联系,就好像网络有记忆性。由由于隐藏转态的使用和前一个时间步中使用的定义是相同的,因此式1是循环计算的,故称之为循环循环神经网络。在网络执行中,使用式1进行计算的层也称为循环层。

输出层的定义类似于多层感知机中的计算

O_{t} = H_{t}W_{hq} + b_{q}

循环神经网络的参数有隐藏层的权重和偏置以及输出层的权重和偏移。这些变量在不同的时间步上是共用的,所以模型的参数不会随着时间的增加而增加。

        评价语言模型的指标称为“困惑度”。使用n个词元的交叉熵的平局值来衡量,其指数表达为:

e^{-\frac{1}{n}\sum _{t=1}^{n}logP(x_{t}|x_{t-1},...,x_{1})}

        其中的P由语言模型给出x_{t}是在时间步 t 从该序列中实际观测到的词元。

五、信息论

        这里只介绍几个信息论中的结论:

        ①信息是用来消除随机不定性的东西

       ②所有信息量的期望称为“熵”

       ③信息量的大小与信息发生的概率成反比

        ④交叉熵:用来衡量两个概率分布之间的差异。

交叉熵的值越小,表示真实分布与预测分布之间的差异越小,即模型的预测越准确。

        可以把交叉熵通俗的理解为:主观概率为Q的观察者在看到根据概率P生成的数据时的预期惊诧。

六、梯度截断

        在循环神经网络中,对于长度为T的序列,过大回导致反向传播产生不稳定的数值。有时候梯度很大导致优化算法无法收敛。为了缓解这些问题,可以对梯度进行截断(clipping)。梯度截断的思想是在计算梯度后,将梯度的范数(即梯度向量的长度)限制在一个给定的阈值范围内,从而避免梯度过大或过小的情况。

        具体来说,在RNN中,梯度通常是通过反向传播算法计算得到的。在反向传播过程中,可以通过计算梯度的范数,并将其与预先设定的阈值进行比较,如果梯度的范数超过了阈值,则将梯度进行缩放,使其范数等于阈值。这样做可以确保梯度的范数不会超过给定的阈值,从而避免梯度爆炸的问题。

梯度收缩公公式为:\frac{threadhold}{\left \| g \right \|}*g

        比较流行的方法是,将梯度投影到半径为 r 的球上,将半径 r 作为阈值来截断梯度。

g \leftarrow min(1,\frac{r}{\left \| g \right \|})g

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

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

相关文章

中小学校活动向媒体投稿报道宣传有哪些好方法

作为一所中小学校的教师,我肩负着向外界展示学校风采、宣传校园文化活动的重要使命。起初,每当学校举办特色活动或取得教学成果时,我都会满怀热情地撰写新闻稿,希望通过媒体的平台让更多人了解我们的故事。然而,理想丰满,现实骨感,我很快发现,通过电子邮件向媒体投稿的过程充满…

技术速递|Python in Visual Studio Code 2024年4月发布

排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展 2024 年 4 月发布! 此版本包括以下公告: 改进了 Flask 和 Django 的调试配置流程Jupyter Run Dependent Cells with Pylance 的模块和导入分析Hatch 环境发…

Vue+OpenLayers7入门到实战:OpenLayers解析通过fetch请求的GeoJson格式数据,并叠加要素文字标注,以行政区划边界为例

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上通过fetch请求geojson数据,然后通过OpenLayers解析为Feature要素叠加到图层上,并且通过动态设置标注方式显示要素属性为文字标注。 本章还是以行政区划边界为例,这个…

网工常用工具——Xshell

今天给各位介绍一下,Xshell工具 Xshell是一款功能强大的终端模拟器,主要用于Windows操作系统,用于远程访问和管理服务器,允许用户通过SSH(Secure Shell)协议安全地连接到远程Linux/Unix服务器或其他支持SS…

Linux的并发与竞争

文章目录 一、并发二、竞争三、保护内容是什么四、解决并发与竞争的几种常用方法1.原子操作原子整型API函数原子位操作 API 函数 2.自旋锁自旋锁格式如下:自旋锁 API 函数自旋锁的使用注意事项 3.信号量信号量 API 函数信号量格式如下: 4.互斥体API函数如…

【LeetCode刷题记录】994. 腐烂的橘子

994 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直…

[C/C++] -- 搜索迷宫路径

DFS(深度优先搜索)和BFS(广度优先搜索)是两种常用的图遍历算法,它们在搜索图或树中的节点时有着不同的策略和特点。 深度优先搜索 (DFS): 在DFS中,从起始节点开始,沿着一条路径尽可能深地搜索&a…

健康知识集锦

页面 页面代码 <% layout(/layouts/default.html, {title: 健康知识管理, libs: [dataGrid]}){ %> <div class"main-content"><div class"box box-main"><div class"box-header"><div class"box-title"&g…

triton之语法学习

一 基本语法 1 torch中tensor的声明 x = torch.tensor([[1,2, 1, 1, 1, 1, 1, 1],[2,2,2,2,2,2,2,2]],device=cuda) 声明的时候有的时候需要指出数据的类型,不然在kernel中数据类型无法匹配 x = torch.tensor([1,2,1,1,1,1,1,1],dtype = torch.int32,device=cuda) 2 idx id…

2024年数据安全软件排行榜:哪款守护神最值得信赖?

在数字化时代&#xff0c;数据安全已成为企业和个人不可或缺的一部分。为了确保数字资产的安全&#xff0c;市场上涌现出了众多数据安全软件。以下是数据安全软件Top 10&#xff0c;它们以卓越的性能和功能&#xff0c;为您的数字世界提供坚实的保障。 一、数据安全系统排排行…

word-快速入门

1、熟悉word界面 2、word排版习惯 3、排版文本基本格式 1、word界面 选项卡 功能组 点击功能组右下角小三角可以开启完整功能组&#xff0c;获得启动器 软件右上角有功能显示折叠按钮 2、排版好习惯 &#xff08;1&#xff09;随时保存 &#xff08;2&#xff09;规范文件命…

替换spring-boot中的组件版本

spring-boot是一个用于简化开发的框架&#xff0c;引入spring-boot后会自动包含spring框架&#xff0c;通过引入xxx-start来完成指定组件的功能。比如&#xff1a; spring-boot-starter-web(嵌入 Tomcat 和 web 开发需要的 servlet 和 jsp 支持)spring-boot-starter-data-jpa(…

AI赋能EasyCVR视频汇聚/视频监控平台加快医院安防体系数字化转型升级

近来&#xff0c;云南镇雄一医院发生持刀伤人事件持续发酵&#xff0c;目前已造成2人死亡21人受伤。此类事件在医院层出不穷&#xff0c;有的是因为医患纠纷、有的是因为打架斗殴。而且在每日大量流动的人口中&#xff0c;一些不法分子也将罪恶的手伸到了医院&#xff0c;实行扒…

使用golang实现k-means

k-means聚类算法 K-Means是一种无监督算法&#xff0c;其目标是将数据进行分类。分类个数要求已知。 k-means流程 随机确定K个点作为质心、找到离每个点最近的质心&#xff0c;将这个点分配到这个质心代表的簇里再对每个簇进行计算&#xff0c;以点簇的均值点作为新的质心如…

LeetCode343:整数拆分

题目描述 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 代码 动态规划 class Solution { public:int integerBreak(int n) {/*dp[i]&#xff1a;表示对…

vue3组件插槽

Index.vue: <script setup> import { ref, onMounted } from vue import Child from ./Child.vue import ./index.cssonMounted(() > {}) </script><template><div class"m-home-wrap"><Child>插槽</Child><div class&qu…

使用flutter开发一个U盘文件管理APP,只解析图片文件

今天教大家用flutter撸一个U盘文件管理APP,需求是这样的: 当我在Android设备上插入U盘后,我能在APP中打开U盘的文件目录,并且能进入对应目录的下一级目录,如果下级目录下有图片文件,我就对这个图片文件进行解析,并展示出来。 需求了解后,先上个效果图: 效果图看完后,…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询&#xff0c;文档及框架比较稳定半天时间加入测试使用 迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较…

Java设计模式 _行为型模式_命令模式

一、命令模式 1、命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为型模式&#xff0c;一种数据驱动的设计模式。命令模式中请求以命令的形式包裹在对象中&#xff0c;即将命令封装为类&#xff0c;从而可以使用不同的请求&#xff0c;队列等操作具体的对象…

k8s部署最新版zookeeper集群(3.9.2),并配置prometheus监控

目录 zookeeper集群部署创建zookeeper文件夹namespace.yamlscripts-configmap.yamlserviceaccount.yamlstatefulset.yamlsvc-headless.yamlsvc.yamlmetrics-svc.yaml执行部署 接入prometheus访问prometheus查看接入情况导入zookeeper监控模版监控展示 zookeeper集群部署 复制粘…