| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深度学习参数初始化(一)Xavier初始化 含代码 -> 正文阅读 |
|
[人工智能]深度学习参数初始化(一)Xavier初始化 含代码 |
目录 一、简介????????Xavier初始化也称为Glorot初始化,因为发明人为Xavier Glorot。Xavier initialization是 Glorot 等人为了解决随机初始化的问题提出来的另一种初始化方法,他们的思想就是尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的激活函数的输出值趋向于0。 ? ? ? ? 因为权重多使用高斯或均匀分布初始化,而两者不会有太大区别,只要保证两者的方差一样就可以了,所以高斯和均匀分布我们一起说。 ? ? ? ? Pytorch中已经有实现,下面会详细介绍:
二、基础知识? ? ? ?1. 均匀分布的方差: ???????? ? ? ? ?2.假设随机变量X和随机变量Y相互独立,则有 ? ? ? ?3.假设随机变量X和随机变量Y相互独立,且E(X)=E(Y)=0,则有 ???????? 三、标准初始化方法? ? ? ? ?权重初始化满足均匀分布时: ? ? ????????因为上式的方差是:,所以对应的高斯分布写作: ?? ????????对于全连接网络,我们把输入X的每一维度x看做一个随机变量,并且假设E(x)=0,Var(x)=1。假设权重W和输入X相互独立,则隐层状态的方差为: ? ? ? ? 可以看出标准初始化方法得到一个非常好的特性:隐层的状态的均值为0,方差为常量1/3,和网络的层数无关,这意味着对于sigmoid这样的函数来说,自变量落在有梯度的范围内。 ????????但是因为sigmoid激活值都是大于0的,会导致下一层的输入不满足E(x)=0。其实标准初始化也只适用于满足下面将要提到的Glorot假设的激活函数,比如tanh。 四、Xavier初始化的假设条件????????在文章开始部分我们给出了参数初始化的必要条件。但是这两个条件只保证了训练过程中可以学到有用的信息——参数梯度不为0(因为参数被控制在激活函数的有效区域)。而Glorot认为:优秀的初始化应该使得各层的激活值和状态梯度的方差在传播过程中的方差保持一致。也就是说我们要保证前向传播各层参数的方差和反向传播时各层参数的方差一致?: 我们把这两个条件称为Glorot条件。 综合起来,现在我们做如下假设: 1.输入的每个特征方差一样:Var(x); 五、Xavier初始化的简单的公式推导:首先给出关于状态的梯度和关于参数的梯度的表达式:
其中ni表示输入个数。 根据概率统计知识我们有下面的方差公式:
假设输入x和权重w独立同分布,为了保证输入与输出方差一致,则应该有:
所以Xavier初始化的高斯分布公式: 根据均匀分布的方差公式: ?又因为这里|a|=|b|,所以Xavier初始化的实现就是下面的均匀分布: ?六、Pytorch实现:
?七、对比实验实验使用tanh为激活函数 1.各层激活值直方图????????上图是原始的初始化,下图是Xavier初始化。Xavier初始化的网络的各层的激活值较为一致,且取值均比原始的标准初始化要小。 2.各层反向传播的梯度(关于状态的梯度)的分布情况上图是原始的初始化,下图是Xavier初始化。Xavier初始化的网络的各层的梯度较为一致,且取值均比原始的标准初始化要小。作者怀疑不同层上具有不同的梯度可能会导致病态或训练较慢 。 3.各层参数梯度的分布情况????????式子(3)已经证明各层参数梯度的方差和层数基本无关。上图是原始的初始化,下图是Xavier初始化。我们发现下图的标准初始化参数梯度小了一个数量级。 4.各层权重梯度方差的分布情况上图是原始的初始化,下图是Xavier初始化。Xavier初始化权重梯度的方差比较一致。 八、总结1.Xavier初始化的高斯分布公式: 2.Xavier初始化的均匀分布公式: 3.Xavier初始化是在标准初始化方法的基础上,兼顾了各层在前向传播和分享传播时的参数方差。 4.Xavier初始的缺点:因为Xavier的推导过程是基于几个假设的,其中一个是激活函数是线性的。这并不适用于ReLU激活函数。另一个是激活值关于0对称,这个不适用于sigmoid函数和ReLU函数。在使用sigmoid函数和ReLU函数时,标准初始化和Xavier初始化得到的初始激活、参数梯度特性是一样的。激活值的方差逐层递减,参数梯度的方差也逐层递减。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:25:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |