深度学习笔记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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Abp框架,EF 生成迁移文件时,自动添加表和字段注释内容

在使用 abp 框架,或者ef 的时候都会遇到一个问题,就是建实体后要将实体描述生成到数据库中,就需要手动去添加 [Comment("注释内容")] 注解,这样相当于手动写两次注释(即使你是 Ctrl C)&#x…

若依集成mybatis-plus 超详细教程(亲测可用)

文章目录 简介步骤第一步第二步第三步第四步第五步第六步 使用QueryWrapperservice层impl 实现接口类层Mapper层 简介 话不多说 直接跟着下面的教程操作,如果有报错私信我,或者通过博文下面的微信名片加我微信,免费解答哦! 步骤 …

解决方案:‘Series‘ object has no attribute ‘xxxx‘

文章目录 一、现象二、解决方案 一、现象 ...... model.fit(X_train, y_train) y_pred model.predict(X_test) recall recall_score(y_test, y_pred) precision precision_score(y_test. y_pred) ......执行语句到**“precision precision_score(y_test. y_pred)”**这里发…

StarRocks 跨集群数据迁移,SDM 帮你一键搞定!

作者:严祥光,StarRocks Active Contributor,StarRocks 存算分离核心研发,在社区中主要负责数据导入、跨集群同步、数据迁移和容灾等工作。 有时候,你可能会为以下需求而苦恼,苦苦搜索更好的解决方案&#x…

记录创建项目java version 没有8的问题

问题: 解决方案 java版本选择21(21可以兼容jdk8) SpringBoot选择3.2.5 进入项目后手动在pom.xml中修改版本

基于stm32的spi从机实验HAL库编程

目录 基于stm32的spi从机实验HAL库编程前言业务场景硬件设计接线配置swd接口配置spi配置DMA配置中断配置系统时钟配置工程生成代码写点从机代码上机现象后记本文使用的测试工程 基于stm32的spi从机实验HAL库编程 前言 在微控制器的世界中,串行外设接口(SPI)是一种…

java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节,所以加了些代码,使得交互更加的具体有趣! 效果 大家可以多运行几次代码,得到不同的战况!! 代码实现 1.bean类 import java.util.Random;public class TextGame {private Strin…

ardupilot的固定翼飞行模式

飞行模式 APM所有的飞行模式都在对应的机型的文件夹下的mode.h里面有定义,针对于不同的模型,功能函数在基类中Mode中都是以纯虚函数实现了, 然后在继承的子类中重新实现它,以实现多态。 takeoff模式 参见网址在 ArduPlane 4.0 及更高版本中,自动起飞本身也是一种模式(…

文件操作

前言: 文件内容属性 要向访问文件就要打开文件——>用进程来打开——>要把文件先加载到内存中——> 一个进程可以打开多个文件,OS中也有可能多个进程打开了多个文件 文件以多,就需要进行管理,——先描述再组织 没有被打开…

【图文教程】PyCharm安装配置PyQt5+QtDesigner+PyUic+PyRcc

这里写目录标题 PyQt5、Qt Designer、PyUic、PyRcc简介(1)下载安装PyQt5(2)打开designer.exe所在位置(3)在PyCharm中配置QtDesigner(4)验证QtDesigner是否配置成功(5&…

thinkphp6使用layui分页组件做分页效果

博主用的是layui2.9.8的版本,但这个版本的分页组件是动态效果的,但我需要的是静态分页,所以我自己封装了一个生成layui的分页代码生成代码。代码如下: 1、先创建文件,路径是extent/layui/LayuiPage.php,加…

HashMap前世今生

概述 HashMap是我们常用的一种数据结构,他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树,当链表数量大于8时,将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

达梦数据库限制用户登录IP测试

达梦数据库创建用户时可以限制登录ip和时间段。 创建测试测试用户 create user test1 identified by Test_1234 ALLOW_IP "192.168.100.101"; 限定该用户只能通过192.168.100.101地址登录数据库 连接测试 上图可见,192.168.100.101客户端可以连接上19…

纯血鸿蒙APP实战开发——Grid和List内拖拽交换子组件位置

Grid和List内拖拽交换子组件位置 介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子…

搭建产品帮助体系指南干货在这里

产品的成功不仅需要它的功能强大,还要让用户对产品有一个良好的体验。一个完善全面的产品帮助体系,能够很大程度地提升用户体验,帮助用户更好地理解和使用产品。如何搭建一个高效、实用的产品帮助体系呢?下面,我将为你…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址(Tomcat官网)http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录(例如:D盘,目录不要有中文) D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 (…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中,会遇到有UI相似的结构,如果每个UI都单独声明一份,会产生大量冗余代码,不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗?在快节奏的现代生活中,思维导图作为一种高效的信息组织和表达工具,越来越受到人们的青睐。随着人工智能(AI)技术的不断发展,AI思维导图软件也应运而生,它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象: 了解需求并明确测试目的,如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据,测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述: 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源,然后重新打开打印机。 故障检修及分析: 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…