动手学深度学习14 数值稳定性+模型初始化和激活函数

news2024/11/24 22:48:54

动手学深度学习14 数值稳定性+模型初始化和激活函数

  • 1. 数值稳定性
  • 2. 模型初始化和激活函数
  • 3. QA

**视频:**https://www.bilibili.com/video/BV1u64y1i75a/?spm_id_from=autoNext&vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8
**电子书:**https://zh-v2.d2l.ai/chapter_multilayer-perceptrons/numerical-stability-and-init.html
**课件:**https://courses.d2l.ai/zh-v2/assets/pdfs/part-0_18.pdf

这一章不好理解,数学推理较多。

1. 数值稳定性

在这里插入图片描述

向量关于向量的导数是矩阵
在这里插入图片描述
数值问题:做了太多次的矩阵乘法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
学习率比较难调,要在很小的范围内调整,过大过小都会给模型训练带来麻烦
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 模型初始化和激活函数

如何让训练更稳定
在这里插入图片描述
归一化:强行把梯度值到一定范围内的值
不论那一层做多深,均值方差都是固定的,保证数据都在一定范围内。
越陡的地方梯度越大
均值为0,方差为0.01的正太分布随机初始权重,对小网络可以,对很深的网络可能方差过大或过小。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

假设权重独立同分布,假设当前层权重和当前层输入是独立事件
所有项独立同分布,所以所有交叉项的和为0
在这里插入图片描述
在这里插入图片描述
假设均值都是0,方差都是一个常数值,要满足两个条件。 n t − 1 n_{t-1} nt1 第t层输入的维度 n t n_t nt 第t层的输出的个数,两个条件很难满足,除非输入等于输出才能满足两个条件。
γ t γ_t γt 是第t层权重的方差。
权重初始化的方差,是根据输入输出的维度来确定的。当输入输出维度不一致或者网络变化比较大的情况下,是根据输入输出的维度来适配权重shape,希望梯度和输出的方差在一定范围内。
在这里插入图片描述
输入均值为0,要使期望等于0,激活函数一定是过原点的
泰勒展开式,用一个多项式逼近,做低阶近似。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. QA

  1. nan inf是怎么产生的以及怎么解决呢?
    inf是lr太大导致的,梯度爆炸。nan是一个数除以0了。合理初始化权重+激活函数合理选取+lr不要太大解决问题。可以先把lr往很小调,直到不出现nan或者inf,或者权重初始值,不要让方差很大,等训练有进展再调整。
  2. 使用ReLU激活函数如何做到拟合x平方或者三次方这种曲线?
    ReLU+ 权重去拟合,relu就是取max{0,x},破坏线性。
  3. 如果训练一开始,在验证集上准确率在提升,训练两个epoch后,突然验证集准确率就变成50%左右并稳定在50%,这是为什么呢?
    一般是权重紊乱掉了,数值稳定性出现了问题。可以把学习率调小。如果学习率调小不能解决问题,可能是训练数据本身不稳定。
  4. 训练过程中,如果网络的输出的中间层特征元素的值突然变成nan,是发生了梯度爆炸吗?还是有什么其他可能的原因?唤醒训练中遇到方差有nan值,是什么原因?
    一般是发生了梯度爆炸,如果太小训练曲线是平的没有什么进展。
  5. 初学者遇到一些复杂的数学公式,看文字描述没有什么感觉,怎么突破知识壁垒呢?
    深度学习的好处不懂数学也能用很多东西。数学能力–理解能力。计算机内存和cpu频率,cpu频率决定单位时间能算多少数据–代码能力。内存决定能跑多复杂的任务–数学能力。线性代数、概率论数学课。
  6. 为什么16位浮点数影响严重?32位和64位就好了嘛?那就是说所有通过fp16加速或者减小模型的方法都存在容易梯度爆炸或者消失的防线?
    32位-64位会更好一些,Python默认64位。常用32位。vfloat16 主要是训练时梯度会遇到问题。
  7. 梯度消失可以说是因为使用了sigmoid激活函数引起的吗?可以用ReLU替换sigmoid解决梯度消失的问题?
    sigmoid容易引起梯度消失,但是梯度消失可能有别的原因引起,relu会比较好解决梯度消失,但是不一定能解决。
  8. 梯度爆炸是由什么激活函数引起的?
    梯度爆炸不是由激活函数引起的,激活函数的梯度不是很大。是因为每一层输出的值很大,每一层叠加到很大引起的。
  9. LSTM这里乘法变加法,乘法说的是梯度更新的时候用的梯度的乘法吗?
    lstm通过指数和log将其变成加法。
  10. 为什么乘法变加法可以让训练更稳定?乘法本质上不就是多个加法吗?如果加法能够起作用,我们需要怎么做?训练用的网络用resNet。
    1. 5 100 = 4 ∗ 1 0 17 1.5^{100}=4*10^{17} 1.5100=41017, 乘法让数值变很大。
  11. 让每层方差是一个常数的方法,指的是batch normalization吗? 为什么bn层要有伽马和贝塔,可以去掉吗?
    没关系。batch normalization会让方差趋向一个固定值,后续会讲到。
  12. 输出或者参数符合正太分布有益于学习,是有理论依据还是经验所得?
    有理论依据, 正太分布容易算均值和方差,其他分布也可以,只是需要输出值到一个合理的范围内。
  13. 随机初始化,有没有一种最好的最推荐的概率分布来找到初始随机值呢?
    xavier是常用方案。
  14. 梯度归一化就是batch normalization吗?
    不是。
  15. 山地图是可视化出来的吗?可以把损失函数、降维度可视化成类似的图指导训练吗?有没有什么好的方法?
    对损失函数做可视化。二维比较好画,三维不好画。比较延时。
  16. 为什么在做这些假设时都需要加入前提独立同分布?非独立同分布的计算会更复杂吗?
    为了简单起见。
  17. 为什么需要假设独立同分布,有什么作用?如果是不独立同分布呢?内部协变量偏移(ics)和独立同分布如何互相影响?
    不是独立同分布,没有太大影响。batch normalization做解耦。
  18. 为什么可以假设每层的权重都遵从同一个分布呢?
    假设的是权重初始化时遵从分布的,不是假设的中间处理的结果。
  19. 正态分布假设有什么缺陷呢?为什么看起来是万能的?
    做推导容易。大数定理表示一切的一切都是正太的。
  20. 有学者用群智能算法来初始化权值阈值,例如粒子群算法等,这种方法怎么样呢?
  21. 强制使得每一层的输出特征均值为0,方差为1,是不是损失了网络的表达能力,改变了数据的特征?会降低学到的模型的准确率吗?
    数值是在一个合适的区间表达,拉到什么区间都可以,0 1是为了数学上,硬件上计算方便。
  22. 为什么4sigmoid(x)-2可以提高稳定性?4sigmoid-2和ReLU实质是一样的吗?
    4*sigmoid-2 在零点附近,曲线近似于y=x这个函数。
  23. 能否用具体的例子讲解下xavier初始化,例如,针对一个2层线性回归模型,输入层、隐藏层、输出层维度分别是10,16,1,正太分布初始化w的参数怎么结算呢?
    后续讲怎么实现。看框架的时间。
  24. 激活函数的选择有什么建议吗?比如图像分类,或者语音识别?
    relu,简单。
  25. 一般权重都是在每个epoch结束以后更新的吗?
    每次迭代一个batch–iterate就会计算更新权重的,在每个epoch-扫完一遍数据之后,权重是更新了很多次的。
  26. 用的网络是ResNet,还是会出现数值稳定性的问题,咋办?
    所有技术是为了缓解出现数值稳定性的问题,并不是解决。整个深度学习的进展,都是为了让数值更加稳定。
  27. 数值稳定性可能是模型结构引起的,孪生网络两路输入不一样,是不是很可能引起数值不稳定?实际中,降低batchsize或者调小学习率,可以缓解数值稳定性吗?
    孪生网络两路输入不一样,会引起数值不稳定。文本进一个网络,图片进入另一个网络,数值区间不一样,会引起数值问题。可以通过权重使两个数值在差不多的范围里面。
  28. 算法移植这种工程化,怎么在模型设计和模型的精度提升方面有突破呢?
    模型背后的设计思路。
  29. 通过把每一层输出的均值和方差做限制,是否可以理解为限制各层输出值出现极大或者极小的异常值?
    也可以这样认为。方差有限制,输出值会在一定范围内,出现极大值的概率就会降低,但仍会有。

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

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

相关文章

如何利用人工智能加速临床试验

如何利用人工智能加速临床试验 Matthew Hutson 著 李升伟 译 从研究设计到患者招募,研究人员正在研究如何运用AI技术加速临床试验过程。 几十年来,计算能力遵循摩尔定律(Moore’s law),以可预测的速度前进。集成电路上…

Linux:服务器间同步文件的脚本(实用)

一、功能描述 比如有三台服务器,hadoop102、hadoop103、hadoop104,且都有atguigu账号 循环复制文件到所有节点的相同目录下,且脚本可以在任何路径下使用 二、脚本实现 1、查看环境变量 echo $PATH2、进入/home/atguigu/bin目录 在该目录下…

结合创新!LSTM+Transformer新成果登Nature,精度高达95.65%

推荐一个能发表高质量论文的好方向:LSTM结合Transformer。 LSTM通过门控机制有效捕捉序列中的长期依赖关系,防止梯度消失或爆炸,在处理具有长期依赖性的时间序列数据时有显著优势。而Transformer通过自注意力和多头注意力机制全面捕捉序列依…

OpenHarmony实战开发-媒体查询 (@ohos.mediaquery)

概述 媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景: 针对设备和应用的属性信息(比如显示区域、深浅色、分辨率)&#xff0…

21.基础乐理-等音调扩展篇、为何一共十五个大调

首先 等音调 的概念是基于 等音 的概念,比如下图中的音名:因为用的按键相同,音名不同,所以被称为等音调 然后音名一共有35个,如下图:所以在理论上它会有35个大调,但是人总是倾向于选择简单、简洁…

一个不太好用的弹出层jquery.colorbox第二次点击不出来的解决方法

使用jquery.colorbox的时候第一次正常显示,但第二次的时候不显示。 需要先移除,再重新点击即可,代码如下 $.colorbox.remove();$.colorbox({href: url,iframe: true,width: options.width || 800,height: options.height || 600 });

企业应该如何选择适合的ERP?

今天跟大家聊一点不一样的。一直写了很多关于企业内部系统集成的文章和案例,很多人私信我又或者是很多客户在做数字化选型的时候会问到我一个问题,那就是“ERP改如何去选择,金蝶跟用友该怎么选?”。因为做集成这个领域也有十多年了…

宁盾2FA双因子认证助力某城商行TCE平台达到密评要求

《密码法》规定,法律、行政法规和国家有关规定要求使用商用密码进行保护的关键信息基础设施,其运营者应当使用商用密码进行保护,自行或者委托商用密码检测机构开展商用密码应用安全性评估。商用密码应用安全性评估(简称&#xff1…

小红书KOL推广应该注意什么?

小红书上的KOL往往具有极大影响力,可以协助品牌快速构建产品形象,并短时间内为品牌带来大量热度和搜索量,引导消费。品牌通过与达人进行合作推广,也可以借鉴达人的影响力,提高品牌的信任度和转化率。 不过网红达人推广…

SpringBoot源码阅读2-自动配置

SpringBoot源码阅读2-自动配置 在传统的Spring应用中,开发者需要手动配置一系列Web应用的核心组件,例如DispatcherServlet用于处理请求分发、ViewResolver用于视图解析、CharacterEncodingFilter用于字符编码过滤等。 然而在SpringBoot中只要引入了spr…

4 -26

4-26 1 英语单词100个一篇六级翻译 2 div 4 补题目 3 概率论期中卷子一张,复习复习。 4 备课ing 晚上出去炫饭,串串香,无敌了。 中间一些模拟题是真的恶心,思维题是真的想不到,感觉自己就是一个废物呢。 1.是将一个数…

Neo-reGeorg明文流量

Neo-reGeorg 1 同IP对,同一个URI,第一个TCP流是“GET”请求,随后的TCP流请求为“POST”。(jsp\jspx\php) 2 第一个TCP流中,GET只有一个会话。(jsp\jspx\php),响应body79…

本地体验最强开源模型Llama3+Qnw(支持Windows和Mac)

一键运行大模型本地软件(含模型):点击下载 Meta放出Llama3模型了,也应该是这段时间里的一个科技大新闻了。 Llama一直都是开源大语言模型的领头羊驼。 而Llama3又是所有羊驼中最新的领头羊。 可以简单地来看一下官方的对比数据…

03_Scala变量和数据类型

文章目录 [toc] **变量和数据类型****1.注释****2.变量和常量****3. 标识符的命名规范****4.scala的字符串****5.键盘输入****5.1 StdIn.readLine()****5.2 从文件中读取数据****5.3 Scala向外写数据** 变量和数据类型 1.注释 和Java完全一样 ** ** 2.变量和常量 var name…

Gin的中间件执行流程与用法

一、背景 我们在使用Gin框架进行Web开发的时候,基本上都会遇到登录拦截的场景。 例如某些接口必须在登录以后才能访问,根据登录用户的信息以及权限,拿到属于自己的数据, 反之,没登录过则直接拒绝访问。 那么我们怎么做到这些登录…

实现SpringMVC底层机制(二)

文章目录 1. 动态获取spring配置文件1.修改SunWebApplicationContext.java2.修改SunDispatcherServlet.java 2.自定义Service注解1.需求分析2.编写Monster.java3.自定义Service注解4.编写Service接口MonsterService.java5.编写Service实现类MonsterServiceImpl.java6.修改SunWe…

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符,盘符下可以存放目录与文件,而在Ubantu中没有盘符的概念,只有目录结构。实际上不同的目录可能挂载在不同的分区之下,如果想要查看当前目录位于磁盘的哪个分区…

代码随想录算法训练营Day9 | 双指针总结归纳:

截止目前为止,已经刷过十道有关于双指针的题了: 1.对于数组而言,数组上的元素不能做到删除,只能进行覆盖,通过两个指针在一个for循环下完成两个for循环的工作,提升了效率 2.字符串中定义两个指针&#xff…

第三篇:Python编程基础:掌握核心语法与开发技巧

Python编程基础:掌握核心语法与开发技巧 1 引言 在这个信息化迅速蔓延的世界中,Python语言如同钥匙一般开启了通往各种可能性的大门。无论你是数据科学家、网络工程师、机器学习专家,还是仅仅对自动化办公感兴趣的办公室人员,Pyt…

汽车驾驶3D模拟仿真展示系统更立体直观

随着新能源汽车的普及,它已成为现代生活中不可或缺的交通工具。并且国产车的崛起,其设计与零部件制造水平已能与合资车相媲美,因此汽车维修技能的学习变得尤为重要。汽车维修3D仿真教学软件应运而生,为广大学员提供了一个直观、高…