在 caffe mnist tutorial 的实现中,有如下的语句:
weight_filter = {type: "xavier"};
随后的解释中指出,本实现将使用 xavier 算法通过输入和输出神经元的数目自动确定权值矩阵的初始化大小。
通过本文第三部分的推导,使用 xavier 初始化权值矩阵是为了保证输出和输入尽可能地服从相同的概率分布(注,数据预处理中已对将输入去均值)。
1. caffe 下的 xavier 实现
caffe 中,网络参数初始化通过从一个 0 均值和特定方差的分布(一般为正态分布或均匀分布)中获得:
2. Glorot & Bengio xavier 实现
在 Glorot & Bengio’s 的文章(Understanding the difficulty of training deep feedforward neural networks)中,推荐的却是如下形式:
3. 简单推导
已知
推导如下,由独立变量积的方差计算公式(Product of independent variables)可知,
又已对输入向量去均值,输入和权值矩阵均值均为 0,则:
所以进一步有:
因此为使得,输出
这里的
Glorot & Bengio’s 论文中,在基础上,还需考虑反向传播时的情形,反向传播是正向传播的逆过程,此时的输入是前向传播的输出,则有:
综合以下两点要求,则可得到满足以上两点要求的权值矩阵的方差为: