深度学习笔记001

news2024/11/18 3:21:57

      

目录

一、批量规范化

二、残差网络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.coloradmin.cn/o/1657952.html

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

相关文章

英特尔StoryTTS:新数据集让文本到语音(TTS)表达更具丰富性和灵感

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 英特尔StoryTTS:新数据集让文本到语音(TTS)表达更具丰富性和灵感 引言:探索文本表达性在语音合成中的重要性 …

Imagine Flash、StyleMamba 、FlexControl、Multi-Scene T2V、TexControl

本文首发于公众号:机器感知 Imagine Flash、StyleMamba 、FlexControl、Multi-Scene T2V、TexControl You Only Cache Once: Decoder-Decoder Architectures for Language Models We introduce a decoder-decoder architecture, YOCO, for large language models, …

C++从入门到入土(二)——初步认识类与对象

目录 前言 类与对象的引入 类的定义 类的访问限定符及封装 访问限定符: 封装: 类的作用域 类的实例化 类的大小 this指针 this指针的特性 前言 各位佬们,在开始本篇文章的内容之前,我想先向大家道个歉,由于…

Linux流量分析工具 | nethogs

在应急过程中,经常会遇到应用访问缓慢,网络阻塞的情况,分析原因可能会想到存在恶意程序把带宽占满的可能。通过这样一个小工具可以快速定位异常占用带宽程序的路径、PID、占用流量大小或是排除由带宽占满导致服务器缓慢的猜想。 一、简介 Ne…

GitHub Actions 手动触发方式

目录 前言 Star Webhook 手动触发按钮 前言 GitHub Actions 是 Microsoft 收购 GitHub 后推荐的一款 CI/​CD 工具早期可能是处于初级开发阶段,它的功能非常原生,甚至没有直接提供一个手动触发按钮一般的触发方式为代码变动(push 、pull…

Linux网络-PXE高效批量网络装机(命令+截图详细版)

目录 一.部署PXE远程安装服务 1.PXE概述 1.1.PXE批量部署的优点 1.2.要搭建PXE网络体系的前提条件 2.搭建PXE远程安装服务器 2.1.修改相关网络配置(仅主机模式) 2.2.关闭防火墙(老规矩) 2.3.保证挂载上 2.4.准备好配置文…

如何使用IntelliJ IDEA SSH连接本地Linux服务器远程开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

【面经】网络

了解TCP/IP协议,了解常用的网络协议:study-area 一、TCP/IP协议 TCP/IP协议是一组网络通信协议,旨在实现不同计算机之间的信息传输。 1、TCP/IP四层模型: 网络接口层、网络层、传输层和应用层。 网络接口层:定义了数据的格式和…

C++ 基础 输入输出

一 C 的基本IO 系统中的预定义流对象cin和cout: 输入流:cin处理标准输入,即键盘输入; 输出流:cout处理标准输出,即屏幕输出; 流:从某种IO设备上读入或写出的字符系列 使用cin、cout这两个流对…

【springboot基础】如何搭建一个web项目?

正在学习springboot,还是小白,今天分享一下如何搭建一个简单的springboot的web项目,只要写一个类就能实现最基础的前后端交互,实现web版helloworld ,哈哈,虽然十分简陋,但也希望对你理解web运作…

车载测试系列:车载蓝牙测试(三)

HFP测试内容与测试方法 2.3 接听来电:测试手机来电时,能否从车载蓝牙设备和手机侧正常接听】拒接、通话是否正常。 1、预置条件:待测手机与车载车载设备处于连接状态 2、测试步骤: 1)用辅助测试机拨打待测手机&…

【JavaWeb】Servlet+JSP+EL表达式+JSTL标签库+Filter过滤器+Listener监听器

需要提前准备了哪些技术,接下来的课才能听懂? JavaSE(Java语言的标准版,Java提供的最基本的类库) Java的开发环境搭建Java的基础语法Java的面向对象数组常用类异常集合多线程IO流反射机制注解Annotation… MySQL&…

CUDA流和事件

CUDA通过流来实现网格级并发。 流和事件 CUDA流是一系列异步的CUDA操作,这些操作按照主机代码确定的顺序在设备上执行。流可以封装这些操作,保持操作的顺序,允许操作在流中排队,并使他们在先前的所有操作之后执行。 这些操作包…

【Linux】在Linux中执行命令ifconfig, 报错-bash:ifconfig: command not found解决方案

一、报错信息 ifconfig 报错-bash:ifconfig: command not found 同时,通过ip addr查看,也看不到IP信息 二、解决方案 找到ifcfg-ens0文件,此文件的目录在/etc/sysconfig/network-scripts目录下 命令:cd /etc/sysconfig/network…

Windows系统本地部署DrawDB数据库设计工具并实现无公网IP远程访问

文章目录 1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 开发中很多时候都会使用到数据库,所以选择一个好用的数据库设计工具会让工作效率翻倍。在当今数字化时代,数据库管理是许多企业和个人项目的核心。设…

buuctf-misc题目练习二

ningen 打开题目后是一张图片,放进winhex里面 发现PK,PK是压缩包ZIP 文件的文件头,下一步是想办法进行分离 Foremost可以依据文件内的文件头和文件尾对一个文件进行分离,或者识别当前的文件是什么文件。比如拓展名被删除、被附加…

Spring - 9 ( 10000 字 Spring 入门级教程 )

一: MyBatis XML 配置文件 Mybatis 的开发有两种方式: 注解XML 我们已经学习了注解的方式, 接下来我们学习 XML 的方式 MyBatis XML 的方式需要以下两步: 配置数据库连接字符串和 MyBatis写持久层代码 1.1 配置连接字符串和 MyBatis 此步骤需要进…

【经验分享】企业网站建设,不收录的原因有哪些

今天来聊一聊我们做好网站,但是网站排名不高,各大搜索引擎不收录网站的原因: 1.网站结构问题: 公司网站的结构是搜索引擎判断网站内容的关键因素之一。如果网站结构混乱、不清晰,搜索引擎可能难以准确抓取和理解网站的…

汇编--栈和寄存器

栈 栈是一种运算受限的线性表,其限定仅在表尾进行插入和删除操作的线性表,表尾也被叫做栈顶。简单概括就是我们对于元素的操作只能够在栈顶进行,也造就了其先进后出的结构特性。 栈 这种内存空间其实本质上有两种操作:将数据放入…

新款iPad Pro引领AI新纪元:M4芯片揭幕,每秒38万亿次运算惊艳业界

新款iPad Pro搭载了强大的M4芯片,拥有每秒高达38万亿次运算的神经处理单元,AI性能超越当今的AI PC。其外观设计更加接近笔记本电脑,展示了苹果对AI技术的全面拥抱。此次发布不仅是对iPad Pro的一次重大更新,更是为下个月的WWDC发布…