首先介绍一下我的博客AI’Boy,刚刚搭建完成hhhh
Note that the use of minibatches is enabled by computation of per-dimension variances rather than joint covariances; in the joint case, regularization would be required since the mini-batch size is
likely to be smaller than the number of activations being
whitened, resulting in singular covariance matrices.
问题
最近在看Batch Normalization 一文中看到其中提到因为mini-batch中的样本数往往小于样本的维度(也就是图像的尺寸),因此如果求协方差得到的就是奇异协方差矩阵(singular covariance matrices),所以在BN中用的都是每个维度单独的方差。刚开始看的时候对于产生奇异协方差矩阵这一段不是很理解,通过google寻找了相关资料后才弄明白,这里简单的做一个记录。
协方差矩阵的秩
这里首先需要知道一个知识,就是一个协方差矩阵的秩永远小于等于n-1,其中n是样本数。这个知识的证明在这里。
我们首先假设样本
xi⊆χ,i=1...n
,
xi
的维度为d,样本集
χ
的协方差矩阵可以写作
其中 x^=∑xin ,是所有样本维的均值,是个d*1的向量。然后把 xi−x^ 写作 zi ,(1)式可以重新写作
其中 1n−1 这一项并不会改变C的秩,因此就变成了 为什么 rank(∑ni=1ziziT)≤n−1 的问题。
首先,求和项中每一项
ziziT
的秩均为1(一个d*1和1*d的矩阵相乘秩为1 )。根据上面的代换,易得
∑zi=0
,可以重新写成如下的形式:
现在将(3)代入(2)式中,可以重写为:
可以看出C的秩其实是由n-1个秩为1的项相加而来,同时这也解释了为什么算协方差是除的是n-1而不是n.
奇异协方差矩阵的由来
当样本数n小于样本维度d时,如果计算样本的协方差矩阵 Cdxd ,有 rank(C)≤min(n−1,d) ,因为 n<d ,所以 rank(C)<d ,因此如果在BN层计算协方差就会产生一个奇异协方差矩阵。