Xavier Initialization 的理解与推导(及实现)
在 caffe mnist tutorial 的实现中,有如下的语句:
weight_filter = {type: "xavier"};
随后的解释中指出,本实现将使用 xavier 算法通过输入和输出神经元的数目自动确定权值矩阵的初始化大小。
通过本文第三部分的推导,使用 xavier 初始化权值矩阵是为了保证输出和输入尽可能地服从相同的概率分布(注,数据预处理中已对将输入去均值)。
1. caffe 下的 xavier 实现
caffe 中,网络参数初始化通过从一个 0 均值和特定方差的分布(一般为正态分布或均匀分布)中获得:
\text{Var}(W) = \frac{1}{n_\text{in}}, \quad \text{stddev}=\frac1{\sqrt{n_{\text{in}}}}
2. Glorot & Bengio xavier 实现
在 Glorot & Bengio’s 的文章(Understanding the difficulty of training deep feedforward neural networks)中,推荐的却是如下形式:
\text{Var}(W) = \frac{2}{n_\text{in} + n_\text{out}}
3. 简单推导
nn 个成分构成的输入向量 x\boldsymbol x,经过一个随机矩阵为 ww 的线性神经元,得到输出
\boldsymbol y=w\boldsymbol x=w_1x_1+w_2x_2+\ldots+w_nx_n
已知 xix_i 是独立同分布的,且均值方差已知,此时求输出 y\boldsymbol y 的方差。
推导如下,由独立变量积的方差计算公式(Product of independent variables)可知,
\operatorname{Var}(W_iX_i)=[E(X_i)]^2\operatorname{Var}(W_i)+[E(W_i)]^2\operatorname{Var}(X_i)+\operatorname{Var}(X_i)\operatorname{Var}(W_i)
又已对输入向量去均值,输入和权值矩阵均值均为 0,则:
\operatorname{Var}(W_iX_i)=\operatorname{Var}(X_i)\operatorname{Var}(W_i)
所以进一步有:
\operatorname{Var}({\boldsymbol y})=\operatorname{Var}\left(\sum_iw_ix_i\right)=\sum_i\operatorname{Var}(w_ix_i)=\sum_i\operatorname{Var}(x_i)\operatorname{Var}(w_i)=n\operatorname{Var}(x_i)\operatorname{Var}(w_i)
因此为使得,输出 y\boldsymbol y 与输入 x\boldsymbol x 具有相同的均值和方差,权值矩阵的方差则要求:
\operatorname{Var}(w_i)=\frac{1}{n}=\frac{1}{n_{\text{in}}}
这里的 nn 指的是输入样本的维数,这即是 caffe 中关于 xavier 的实现。
Glorot & Bengio’s 论文中,在基础上,还需考虑反向传播时的情形,反向传播是正向传播的逆过程,此时的输入是前向传播的输出,则有:
\operatorname{Var}(w_i)=\frac{1}{n}=\frac{1}{n_{\text{out}}}
综合以下两点要求,则可得到满足以上两点要求的权值矩阵的方差为:
\text{Var}(W_i) = \frac{2}{n_\text{in} + n_\text{out}}
references
An Explanation of Xavier Initialization
Xavier Initialization 的理解与推导(及实现)相关推荐
- 卡尔曼滤波的理解、推导和应用
卡尔曼滤波的理解.推导和应用 1. 卡尔曼滤波简介 2. 卡尔曼滤波原理 3. 卡尔曼滤波的公式 3.1. 五个公式 3.2. 公式作用 4. 卡尔曼滤波的公式推导 4.1. 符号说明 4.2. 概念 ...
- matlab pq变换,PQ变换与DQ变换的理解与推导详解.doc
p-q变换与d-q变换的理解与推导 120变换和空间向量 120坐标系是一个静止的复数坐标系.120分量首先由莱昂(Lyon)提出,所以亦成为莱昂分量.下面以电流为例说明120变换...为三相电流瞬时 ...
- matlab pq变换,PQ变换与DQ变换的理解与推导
. . 页脚 一. p-q 变换与d-q 变换的理解与推导 1. 120变换和空间向量 120坐标系是一个静止的复数坐标系.120分量首先由莱昂(Lyon )提出,所以亦成为莱昂分量.下面以电流为例说 ...
- 误差逆传播算法公式理解及推导
前言:公式理解及推导参考自<机器学习>周志华 P101 BP网络 BP网络一般是指由 误差逆传播(error BackPropagation, BP)算法训练的多层前馈神经网络. 给定训练 ...
- 【 MATLAB 】适合初学者的 chirp 理解与推导
作为一个菜鸟,当我看到网络上有关chirp的介绍,复杂地让意志不坚定者想要放弃.为什么要花费一番力气学习chirp,对于个人而言,当然能用到,chirp在雷达上还是有一席之地的.就连我手上的那个宽带接 ...
- bp算法运行太慢_神经网络,BP算法的理解与推导
原创,转载请注明出处. (常规字母代表标量,粗体字母代表向量,大写粗体字母代表矩阵) 这里假设你已经知道了神经网络的基本概念,并且最好看过BP算法. 可能你没有看懂,或者你跟我一样被各种公式搞晕了.尤 ...
- 错排公式的理解与推导(转载)
转自: ①:https://www.cnblogs.com/ECJTUACM-873284962/p/7620370.html ②:https://www.cnblogs.com/c129940122 ...
- 机器学习之---LR理解及推导(详细)
机器学习之------LR的理解及公式推导(详细) 本文两部分内容 第一部分简单知识补充(借鉴) 第二部分LR推导(细节亲自推导并献上) 本文特点,公式推导详细,但由于本人实在木有耐心在这里面编辑公式 ...
- 信息熵的理解及推导过程
目录 信息熵的概述 离散型随机变量的信息熵公式 信息熵公式理解 编码的约束条件 信息熵公式的推导 信息熵的概述 看过很多博客,发现大多文章只是对信息熵做了一些大致的介绍,如:信息熵代表一个随机变量 ...
最新文章
- linux 窗口z order,wxPython窗口z-order设置
- Theano2.1.5-基础知识之打印出theano的图
- c++ 弧形面如何逆时针排序_环形导轨如何实现拐弯?
- 统计学习方法-第二章课后习题答案整理
- 小白的算法初识课堂(part9)--SHA及Simhash算法
- matlab的精度变量,MatLab - 变量精度算术
- HTML页面把list转成array,c# – 将Collection转换为Array或List的快速方法?
- matlab engevalstring,Matlab 執行engEvalString命令介紹 | 學步園
- java单例设计模式双重_Java 设计模式 ——单例模式(饿汉,懒汉,双重锁,静态内部类)...
- PHP随机生成指定时间段的指定个数时间
- paip.python错误解决 0x64024e96 指令引用的 0x00000135 内存。该内存不能为 read。
- Reg Organizer v8.75 注册表及系统清理优化工具
- BMFont把美术图片(汉字,数字,字母)字生成艺术字体fnt格式
- FMEA软件知识库(FMEAHunter)
- 拼多多笔试_探险家冒险和大数问题
- selenium模拟登录QQ空间
- HIVE性能调优总结
- 医院科室管理系统(IDEA开发)
- 新电脑 安装idea迁移设置和插件注意事项
- 一种能克服反光现象的围棋图谱可靠识别方法
热门文章
- 如何在游戏机制中使用AI/剧情脚本----基于LUA
- [Stage3D]GPU渲染的喷泉粒子
- 3D引擎多线程:资源异步加载
- 完成端口中的单句柄数据结构与单IO数据结构的理解与设计
- 基于MSBuild的xnb资源预生成机制
- 1.视频全屏展示(适应各种屏幕尺寸)
- 【java学习之路】(javaWeb【后端】篇)006.FilterListener
- 小程序和vue语法对比_商城小程序对比传统电商的优势如何?
- 基于nginx搭建直播,web播放视频方案
- Linux添加相对库路径,Linux C编程(8) 使用相对路径加载动态库-rpath和$ORIGIN