热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

21.合理的模型初始化和激活函数

1.让训练更加稳定2.让每层的方差是一个常数以两个变量为例,均值为零可以让变量于自己的轴对称,那么在二维上整个变量分布就是中心对称,而方差




1. 让训练更加稳定

在这里插入图片描述


2. 让每层的方差是一个常数

以两个变量为例,均值为零可以让变量于自己的轴对称,那么在二维上整个变量分布就是中心对称,而方差则可以控制各个变量离原点的离散程度,那么就可以把二维变量看成限制在某个圈内。




在梯度计算时(偏导)时,梯度方向大致是向着圆心的,那么梯度步长就有一个较大的可调范围,不会出现z字形的梯度路径。


在这里插入图片描述


3. 权重初始化

在这里插入图片描述


4. 例子:MLP

独立同分布IID(independent and identically distributed)

在这里插入图片描述


  1. 因为是正态分布随机生成的权重,因此第t层的权重矩阵的期望(均值)为0,而方差等于某个初始化的数。
  2. 对于第t层来说,这一层的输入和这一层的权重是相互独立的
  3. 最后一点我的理解如下:

在这里插入图片描述

ps: 当X和Y相互独立时,E(XY)=E(X)E(Y),第一项是0,以及之前假设了第二项是0,最后相乘结果为0


正向方差

方差D(x) = E(X^2 )- E(X) ^ 2

在这里插入图片描述

在这里插入图片描述


反向方差和均值

注意:第一行t-1和t弄反了。
在这里插入图片描述
最后的结果可知,第t层的输出的个数乘以γ要等于1.


5. Xavier初始

在这里插入图片描述
nt-1 * γt = 1保证前项的输出的方差是一致的,nt * γt = 1保证梯度是一样的。

但是nt-1是第t层输入的维度,nt是第t层输出的维度,除非输入的维度和输出的维度一样,不然的话无法同时满足两个条件。



均匀分布 var(x) = 1 / 12(a-b)^2


权重初始化时的方差是根据输入和输出维度来定的。


6. 假设线性的激活函数

在这里插入图片描述
关于期望和方差的公式


反向

在这里插入图片描述
如果希望每一层输出以及梯度的均值为0,方差为固定数的话,只有激活函数f(x)=x满足条件。


7. 检查常用激活函数

在这里插入图片描述
可以看出:tanh,relu以及调整后的sigmoid都可以选取。


8. 总结
  • 合理的权重初始值和激活函数的选取可以提升数值稳定性。

9. 一些Q&A
  1. 出现nan,inf的情况以及怎么解决?
    答:inf 是学习率调得太大了,或者权重初始的值太大了,导致梯度爆炸,nan一般是除以0,梯度已经很小了,梯度除以了0,就会得到nan。

解决:1)合理的初始化权重 2)选择正确的激活函数 3)学习率不要选太大。实际碰到了的话,就把学习率一直往小调整,知道nan或inf不出现。也可以看权重的初始,让方差的区间小一点,一直往小走,使得出现值,再慢慢调大使得训练有进展


  1. 在训练的过程中,如果网络层的输出的中间层特征元素的值突然变成nan了,是发生了梯度爆炸了吗?
    答:是的,nan一般就是梯度太大造成的,梯度太小的话,是训练不动的,没有进展。

  2. sigmoid能引起梯度消失,但是别的情况也会导致梯度消失,用relu代替sigmoid有一定的概率解决梯度消失,但不一定。

  3. 通过把每一层输出的均值和方差做限制,可以理解为限制各层输出值出现极大或极小的异常值。







推荐阅读
  • 本文介绍了如何在Spring框架中配置和使用定时任务,包括初始化配置和动态启动定时器的方法。通过示例代码展示了如何利用Spring的TaskScheduler接口来创建和管理定时任务。 ... [详细]
  • 使用 Docker 部署 MongoDB 并通过 IntelliJ IDEA 远程访问
    本文详细介绍了如何使用 Docker 部署 MongoDB,并通过 IntelliJ IDEA 实现远程连接的方法。包括 MongoDB 的基本配置、用户管理以及如何在 IDE 中配置连接。 ... [详细]
  • 本文探讨了HTA(HTML Application)环境中HTML5 IndexedDB的可用性问题,并提供了一种替代方案,即通过使用COM ActiveX对象来实现数据存储功能。 ... [详细]
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 字符、字符串和文本的处理之Char类型
    .NetFramework中处理字符和字符串的主要有以下这么几个类:(1)、System.Char类一基础字符串处理类(2)、System.String类一处理不可变的字符串(一经 ... [详细]
  • 近期,一种基于古代汉语的编程语言 WenYanLang 在开发者社区引起了广泛关注。本文将探讨这一独特编程语言的特点及其可能的影响。 ... [详细]
  • 本文详细探讨了 Java 中 com.codahale.metrics.servlets.AdminServlet.() 方法的实现与应用,并提供了多个实际项目中的代码示例,帮助开发者更好地理解和使用这一方法。 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • electronvue使用electronupdater实现自动更新
    今天呢,给大家带来一篇干货满满的electron-vue自动升级的教程,话不多说,开始我的表演!配置文件package.jsonbu ... [详细]
  • VMware 15.5.7 中文版激活方法
    本文提供了一种有效的方法来激活 VMware 15.5.7 的中文版本,同时介绍了如何利用最新的激活码进行操作,确保用户能够顺利使用。 ... [详细]
  • 本文探讨了六项Java特性,它们虽然强大,但在不当使用时可能会给应用程序带来严重问题。文章基于作者Nikita Salnikov Tarnovski多年的应用性能调优经验,提供了对这些特性的深入分析。 ... [详细]
  • 在项目实施过程中,当环境配置完成后,在进行系统集成测试时遇到了一个问题:应用程序通过网络请求访问MySQL数据库时始终处于等待状态,尽管输入了正确的用户名和密码,但仍然无法成功连接。本文将详细介绍如何解决MySQL数据库无法被其他IP地址访问的问题。 ... [详细]
  • 我的世界服务器修改圈地大小,我的世界圈地大小限制设置 ... [详细]
author-avatar
hupi12丨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有