深度前馈网络与Xavier初始化原理

前言

基本的神经网络的知识(一般化模型、前向计算、反向传播及其本质、激活函数等)小夕已经介绍完毕,本文先讲一下深度前馈网络的BP过程,再基于此来重点讲解在前馈网络中用来初始化model参数的Xavier方法的原理。

前向

前向过程很简单,每一层与下一层的连接边(即参数)构成了一个矩阵(即线性映射),每一层的神经元构成一个激活函数阵列(即非线性映射),信号便从输入层开始反复的重复这两个过程直到输出层,也就是已经在《神经网络激活函数》中详细讲过的线性与非线性交替映射的过程:

v2-ce9f66e6afbb4cc7faeb5cb583f3f95c_b.png

反向

误差反向传播的过程也很简单,其本质就是基于链式求导+梯度下降,原因已在《BP算法的本质》中讲解,这里就重点讲解一下BP算法的过程。

首先往上翻一翻,记住之前说过的前馈网络无非就是反复的线性与非线性映射。然后:

首先,假设某个神经元的输入为z,经过激活函数f1(·)得到输出a。即函数值a=f1(z)。如果这里的输入z又是另一个函数f2的输出的话(当然啦,这里的f2就是线性映射函数,也就是连接某两层的权重矩阵),即z=f2(x),那么如果基于a来对z中的变量x求导的时候,由于

v2-8266a66c11cfc27097e8447338d47cff_b.png

显然只要乘以激活函数f1的导数,就不用操心激活函数的输出以及更后面的事儿了(这里的“后面”指的是神经网络的输出端方向),只需要将精力集中在前面的东西,即只需要关注z以及z之前的那些变量和函数就可以了。因此,误差反向传播到某非线性映射层的输出时,只需要乘上该非线性映射函数在z点的导数就算跨过这一层啦。

而由于f2(·)是个线性映射函数,即 f_2(x)=w\cdot x ,因此

v2-a0197d2fb27d22f5b484e373e0e31b25_b.png

因此,当误差反向传播到线性映射层的输出时,若想跨过该层,只需要乘以线性映射函数的参数就可以啦~即乘上w。

而这里的x,又是更前面的非线性映射层的输出,因此误差在深度前馈网络中反向传播时,无非就是反复的跨过非线性层和线性层,也就是反复的乘以非线性函数的导数(即激活函数的导数)和线性函数的导数(即神经网络的参数/权重/连接边)。

也就是下面这张图啦(从右往左看):


v2-d25b371675d618385e981334a46bb9c3_b.png


(图片来自中科院自动化所赵军老师的课件)

Xavier

前向与反向都讲解完了,下面就是更加实用的工程tricks。提起tricks,先想到参数的初始化啦。如果无脑的将model的参数初始化成全0,那训练到天荒地老也是个废猫倒了。

而为什么初始化成全0就不行了呢?这个不用讲啦,全0的时候每个神经元的输入和输出没有任何的差异,换句话说,根据前面BP算法的讲解,这样会导致误差根本无法从后一层往前传(乘以全0的w后误差就没了),这样的model当然没有任何意义。

那么我们不把参数初始化成全0,那我们该初始化成什么呢?换句话说,如何既保证输入输出的差异性,又能让model稳定而快速的收敛呢?

要描述“差异性”,首先就能想到概率统计中的方差这个基本统计量。对于每个神经元的输入z这个随机变量,根据前面讲BP时的公式,它是由线性映射函数得到的,

也就是 z=\sum\limits_{i=1}^nw_ix_i ,其中n是上一层神经元的数量。因此,根据概率统计里的两个随机变量乘积的方差展开式:

v2-d7760569461f444fca316b098c94901f_b.png

可以得到,如果E(xi)=E(wi)=0(可以通过批量归一化Batch Normalization来满足,其他大部分情况也不会差太多),那么就有:

Var(z)= \sum\limits_{i=1}^nVar(xi)Var(wi)

如果随机变量xi和wi再满足独立同分布的话:

Var(z)= \sum\limits_{i=1}^nVar(xi)Var(wi)=nVar(w)Var(x)

好了,这时重点来了。试想一下,根据文章《激活函数》,整个大型前馈神经网络无非就是一个超级大映射,将原始样本稳定的映射成它的类别。也就是将样本空间映射到类别空间。试想,如果样本空间与类别空间的分布差异很大,比如说类别空间特别稠密,样本空间特别稀疏辽阔,那么在类别空间得到的用于反向传播的误差丢给样本空间后简直变得微不足道,也就是会导致模型的训练非常缓慢。同样,如果类别空间特别稀疏,样本空间特别稠密,那么在类别空间算出来的误差丢给样本空间后简直是爆炸般的存在,即导致模型发散震荡,无法收敛。因此,我们要让样本空间与类别空间的分布差异(密度差别)不要太大,也就是要让它们的方差尽可能相等

因此为了得到Var(z)=Var(x),只能让n*Var(w)=1,也就是Var(w)=1/n。

同样的道理,正向传播时是从前往后计算的,因此 Var(w)=1/(n_{in}) ,反向传播时是从后往前计算的,因此 Var(w)=1/(n_{out}) 。然而 n_{in}n_{out} 往往不相等啊,怎么办呢?所以就取他们的均值就好啦~即:

Var(w)=\frac{2}{n_{in}+n_{out}}

假设w为均匀分布的话,由w在区间[a,b]内均匀分布时的方差为

v2-4dd80d7788308caf0f2c0deeeb5b4fb4_b.png

代码前面的Var(w)公式解得参数a和b,即得:

w\sim U[-\frac{\sqrt 6}{\sqrt {n_{in}+n_{out}}},\frac{\sqrt6}{\sqrt {n_{in}+n_{out}}}]

(让w在这个区间里均匀采样就好啦)

得到的这个结论就是Xavier初始化方法。这就是为什么使用Xavier初始化这个trick经常可以让model的训练速度和分类性能取得大幅提高啦~所以在使用前馈网络时,除非你的网络设计的明显不满足xavier的假设,否则使用xavier往往不会出错。当然,另一方面来说,也很少有场合可以完全迎合xavier假设,因此时间充裕的话,改改分子,甚至去掉n_out都有可能带来意想不到的效果。

参考文献:Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks[J]. Journal of Machine Learning Research, 2010, 9:249-256.

本文转载自【夕小瑶的卖萌屋】,据说每个想学机器学习的人到这里都停不下来了~

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

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

相关文章

线性代数应该这样讲(三)-向量2范数与模型泛化

在线性代数(一)中,小夕主要讲解了映射与矩阵的关系;在线性代数(二)中,小夕讲解了映射视角下的特征值与特征向量的物理意义。本文与下一篇会较为透彻的解析一下向量的二范数与一范数,…

SOA基础

一、架构的演化: 结构化 客户端-服务端 三层 N层 分布式对象 组件 服务:是应用程序或者企业的不同功能单元,每个功能单元作为实例存在,并与应用程序和其他组件交互。通过基于消息的松散耦合的通信模型提供服务。 二、体系结…

从点到线:逻辑回归到条件随机场

开篇高能预警!本文前置知识:1、理解特征函数/能量函数、配分函数的概念及其无向图表示,见《逻辑回归到受限玻尔兹曼机》和《解开玻尔兹曼机的封印》;2、理解特征函数形式的逻辑回归模型,见《逻辑回归到最大熵模型》。从…

WSDL基础知识

一、WSDL的定义 将网络服务描述为对包含面向文档或过程的信息进行操作的一组端点的XML格式 服务接口 访问规范 服务地点 定义Web服务的公共接口(包括功能、如何调用) 定义与目录中列出的Web服务交互所需的协议绑定和消息格式 抽象地描述了支持的操…

【NLP】Google BERT详解

版权声明&#xff1a;博文千万条&#xff0c;版权第一条。转载不规范&#xff0c;博主两行泪 https://blog.csdn.net/qq_39521554/article/details/83062188 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/cs…

有时候,也想过回到过去

人的一生中&#xff0c;总要走走停停。一面向着诗和远方&#xff0c;一面转过身&#xff0c;缅怀过去。她喜欢女生&#xff0c;帅气的女生。我觉得她也很帅&#xff0c;帅气又可爱。初入大学&#xff0c;竞选班委。上台的人中&#xff0c;有阳光幽默的男生&#xff0c;有温柔甜…

SOAP基础知识

一、SOAP是什么&#xff1f; SOAP是一种轻量级协议&#xff0c;旨在在分散的分布式环境中交换结构化信息。 SOAP使用XML技术来定义可扩展的消息传递框架&#xff0c;该框架提供了可以在各种基础协议之间交换的消息构造。 通信协议 用于应用程序之间的通信 发送消息的格式 设…

UDDI基础知识

一、什么是UDDI UDDI基于一组常见的行业标准&#xff0c;包括HTTP&#xff0c;XML&#xff0c;XML Schema和SOAP&#xff0c;为基于Web服务的软件环境提供了一个可互操作的基础基础结构&#xff0c;用于可公开使用的服务和仅在组织内部公开的服务。 仅当潜在用户发现足以允许其…

机器学习算法GBDT的面试总结

def findLossAndSplit(x,y): # 我们用 x 来表示训练数据 # 我们用 y 来表示训练数据的label # x[i]表示训练数据的第i个特征 # x_i 表示第i个训练样本 # minLoss 表示最小的损失 minLoss Integet.max_value # feature 表示是训练的数据第几纬度的特征 feature 0 # split 表示…

线性代数应该这样讲(四)-奇异值分解与主成分分析

在《线性代数这样讲&#xff08;二&#xff09;》&#xff08;以下简称「二」&#xff09;中&#xff0c;小夕详细讲解了特征值与特征向量的意义&#xff0c;并且简单描述了一下矩阵的特征值分解的意义和原理。本文便基于对这几个重要概念的理解来进一步讲解SVD分解。回顾一下&…

BPEL4WS基础知识

一、为什么选择BPEL4WS 可以使用行业范围内的规范来广告、发现和调用Web服务 开发人员和用户可以通过组合和订购可用的基本服务来解决复杂问题 服务组合允许服务重用并加速复杂的服务开发 提供一种表示法&#xff0c;用于将Web服务的交互描述为业务流程 编写使用Web服务的程…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!

文章转载自订阅号「夕小瑶的卖萌屋」中的文章《不要再纠结卷积的公式啦&#xff01;0公式深度解析全连接前馈网络与卷积神经网络》。 Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络

Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)_关于卷积神经网&#xff0c;小夕就不从卷积讲啦。以前不止一个粉丝问我卷积神经网络中卷积的意义&#xff0c;甚至在知乎上被邀请回答…

研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法

其实风险评估就是在充分掌握资料的基础之上&#xff0c;采用合适的方法对已识别风险进行系统分析和研究&#xff0c;评估风险发生的可能性&#xff08;概率&#xff09;、造成损失的范围和严重程度&#xff08;强度&#xff09;&#xff0c;为接下来选择适当的风险处理方法提供…

从前馈到反馈:解析循环神经网络(RNN)及其tricks

好像已经有两周没有更新啦。最后这几天都不敢打开订阅号后台了&#xff0c;怕一打开发现掉了几百个粉丝的话就难过死了T_T。然而小夕发现你们并没有离开&#xff0c;感动的差点哭出来&#xff0c;都感觉再不认真写一篇文章就太对不起大家的等待啦。而这两周&#xff0c;经历的事…

多因子风险建模-协方差矩阵、投资组合风险

一、为什么要了解投资风险 在探讨投资风险前&#xff0c;我们不妨思考一个问题&#xff1a;好的投资&#xff0c;取决于哪些因素&#xff1f; 其实&#xff0c;卓越的投资回报&#xff0c;主要来源于四个因素&#xff1a; 收益预测&#xff1a;能形成合力的收益预期&#xff…

啊啊忍不住了,更!新!!!

你萌都还在&#xff0c;好开心 o(≧v≦)o在2017年9月21日这个特殊的日子&#xff0c;小夕在长达30天的沉默后&#xff0c;终于冒泡了&#xff01;有木有很激动&#xff0c;很期待&#xff1f;&#xff01;&#xff08;小夕&#xff0c;你不说我都忘了还有这订阅号了&#xff09…

【数据挖掘】数据挖掘和数据分析基础

参考文献&#xff1a;《Python数据分析与挖掘实战》张良均等 数据挖掘建模过程 定义挖掘目标&#xff1a;理解任务&#xff0c;确定指标数据采样&#xff1a;注意数据的完整性和有效性数据探索&#xff1a;异常值分析、缺失值分析、相关性分析、周期性分析数据预处理&#xff…

Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

米筐科技&#xff08;RiceQuant&#xff09;策略研究报告&#xff1a;Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析 江嘉键1 年前1 概述Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具。最近一段时间&#xff0c;我们米筐科技量化策略研究团…

深度学习资料挑的眼花啦?小夕帮你做选择!

小夕还记得几年前刚入坑的时候&#xff0c;老师给的入门资料就是一堆论文&#xff01;害的小夕差点放弃。。。如今深度学习应用的开发成本越来越低&#xff0c;学习资料越来越多&#xff0c;于是对初学者来说进入了另一个相反的困境——资料过多&#xff0c;让人眼花缭乱&#…