BN层计算的为什么不是协方差矩阵的理解

首先介绍一下我的博客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,样本集 χ 的协方差矩阵可以写作

C=1n1i=1n(xix^)(xix^)T
(1)
其中 x^=xin ,是所有样本维的均值,是个d*1的向量。然后把 xix^ 写作 zi ,(1)式可以重新写作
C=1n1i=1nziziT
(2)
其中 1n1 这一项并不会改变C的秩,因此就变成了 为什么 rank(ni=1ziziT)n1 的问题。

首先,求和项中每一项 ziziT 的秩均为1(一个d*1和1*d的矩阵相乘秩为1 )。根据上面的代换,易得 zi=0 ,可以重新写成如下的形式:

zn=i=1n1zi
{3}
现在将(3)代入(2)式中,可以重写为:
C=1n1{i=1n1ziziT+(i=1n1zi)znT}=1n1i=1n1zi(zizn)T
(4)
可以看出C的秩其实是由n-1个秩为1的项相加而来,同时这也解释了为什么算协方差是除的是n-1而不是n.

奇异协方差矩阵的由来

当样本数n小于样本维度d时,如果计算样本的协方差矩阵 Cdxd ,有 rank(C)min(n1,d) ,因为 n<d ,所以 rank(C)<d ,因此如果在BN层计算协方差就会产生一个奇异协方差矩阵。

<think>好的,用户问的是“什么是batch whitening,反传是什么”。首先,我需要确定这两个概念分别是什么,然后解释清楚它们的关系和应用场景。 首先,Batch Whitening。我记得在深度学习中,数据预处理中常用到白化(Whitening)操作,比如PCA白化。它的目的是去除数据之间的相关性,使得特征之间的协方差矩阵为单位矩阵,从而加速训练。而Batch Whitening应该是在批量处理数据时应用的白化方法。可能是在每个批次的数据上进行白化,类似于Batch Normalization(BN),但不仅仅是标准化,还进一步消除特征间的线性相关性。 然后,反传就是反向传播(Backpropagation),这是神经网络训练中用于计算梯度的算法。通过链式法则,从输出反向逐计算损失函数对各个参数的梯度,然后用优化算法更新参数。需要解释清楚反向传播的基本原理和作用。 接下来,用户可能想知道Batch Whitening在训练中如何与反向传播结合,比如在实现时如何计算梯度,是否存在特殊处理。可能需要注意Batch Whitening在反向传播中的可微性,以及它对梯度的影响,比如是否会影响训练的稳定性或收敛速度。 另外,需要检查是否有常见的误解。例如,Batch Normalization和Batch Whitening的区别。BN只是标准化每个特征的均值和方差,而Whitening更进一步,消除特征间的相关性。不过实际中,完全的Whitening计算成本高,可能采用近似方法,比如ZCA白化。 还要考虑用户可能的背景。可能是学生或刚入行的工程师,想了解这两个概念及其在深度学习中的应用。因此,解释时要避免过于技术化,用简单例子说明,比如数据预处理的好处,加速训练,提高模型性能等。 结构方面,先分别解释两个概念,再讨论它们的联系。确保每个部分清晰,步骤明确。比如,先定义Batch Whitening,再讲其实现和优点,然后讲反向传播的原理,最后说明在应用Batch Whitening时如何通过反向传播更新参数,可能涉及的梯度计算调整。 另外,需要验证LaTeX的使用是否正确。比如数学公式要用$...$和$$...$$,例如协方差矩阵、白化的数学表达式等。例如,白化后的数据应满足协方差矩阵为单位矩阵,即$ \Sigma = I $,而标准化可能只是均值为0,方差为1。 最后,确保回答符合系统级指令,使用中文,结构清晰,分点解释,正确应用LaTeX格式,并且内容准确可靠。可能需要查阅相关文献或资料,确认Batch Whitening的具体实现和其在反向传播中的处理方式,避免错误信息。</think>好的,我将逐步解释这两个概念及它们的关系: 1. **Batch Whitening(批量白化)** - **定义**:对神经网络中某一的输入数据进行标准化+去相关化的操作 - **数学过程**: - 输入数据:$X \in \mathbb{R}^{B \times d}$(B是batch大小,d是特征维度) - 计算均值:$\mu = \frac{1}{B}\sum_{i=1}^B x_i$ - 计算协方差:$\Sigma = \frac{1}{B}\sum_{i=1}^B (x_i-\mu)(x_i-\mu)^T$ - 白化变换:$X_{\text{white}} = \Sigma^{-1/2}(X - \mu)$ - **效果**:使数据满足: $$ \mathbb{E}[X_{\text{white}}] = 0,\quad \text{Cov}(X_{\text{white}}) = I $$ - **优点**:加速训练收敛,改善优化过程 2. **反传(反向传播)** - **定义**:通过链式法则计算神经网络参数梯度的算法 - **核心步骤**: ```mermaid graph LR A[前向传播计算输出] --> B[计算损失函数] B --> C[反向逐计算梯度] C --> D[参数更新] ``` - **数学本质**:对复合函数应用多元链式法则,例如: $$ \frac{\partial L}{\partial W} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial W} $$ 3. **两者的结合** - **关键问题**:白化操作需要计算协方差逆矩阵,在反向传播时需保持可微性 - **实现方法**: - 使用SVD分解稳定计算:$\Sigma = U\Lambda U^T \Rightarrow \Sigma^{-1/2} = U\Lambda^{-1/2}U^T$ - 通过自动微分框架自动计算梯度 - **特殊处理**: -计算图中保留中间变量(均值、协方差矩阵- 对矩阵运算进行梯度推导 **应用场景**: - 在目标检测、图像分类等任务中替代Batch Normalization - 处理特征之间存在强相关性的数据(如自然图像) - 需要特别注意:当batch size较小时,协方差矩阵估计可能不稳定 **示例**:假设某的输出为: $$ Z = WX + b $$ 经过批量白化后: $$ \hat{Z} = \Sigma^{-1/2}(Z - \mu) $$ 反向传播时需要计算$\frac{\partial \hat{Z}}{\partial W}$,这会涉及对矩阵逆和平方根运算的微分 **最新进展**: - 改进的迭代白化方法(避免显式矩阵求逆) - 与其他归一化方法的结合(如Group Whitening) - 在自监督学习中的应用探索
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值