ChatGPT解决这个技术问题 Extra ChatGPT

我是卷积神经网络的新手,只知道特征图以及如何对图像进行卷积以提取特征。我很高兴知道在 CNN 中应用批量标准化的一些细节。

我阅读了这篇论文 https://arxiv.org/pdf/1502.03167v3.pdf 并且可以理解应用于数据的 BN 算法,但最后他们提到在应用于 CNN 时需要稍作修改:

对于卷积层,我们还希望归一化遵循卷积特性——以便同一特征图的不同元素在不同位置以相同的方式进行归一化。为了实现这一点,我们在一个小批量中联合标准化所有位置的所有激活。在阿尔格。在图 1 中,我们让 B 是一个特征图中所有值的集合,该集合跨越小批量的元素和空间位置——因此对于大小为 m 的小批量和大小为 p × q 的特征图,我们使用 effec - 大小为 m' = |B| 的小批量= m·pq。我们为每个特征图学习一对参数 γ(k) 和 β(k),而不是每次激活。阿尔格。图 2 进行了类似的修改,因此在推理过程中,BN 变换将相同的线性变换应用于给定特征图中的每个激活。

当他们说“以便同一特征图的不同元素在不同位置以相同方式归一化”时,我完全感到困惑

我知道特征图的含义,不同的元素是每个特征图中的权重。但我不明白位置或空间位置是什么意思。

我根本无法理解下面的句子“在算法 1 中,我们让 B 成为特征图中跨小批量元素和空间位置的所有值的集合”

如果有人冷淡地用更简单的术语详细说明并解释我,我会很高兴


M
Maxim

让我们从条款开始。请记住,卷积层的输出是一个 4 秩张量 [B, H, W, C],其中 B 是批量大小,(H, W)特征图 大小,C 是渠道。一个索引 (x, y),其中 0 <= x < H0 <= y < W 是一个空间位置

通常的批处理规范

现在,这里是如何以通常的方式应用 batchnorm(在伪代码中):

# t is the incoming tensor of shape [B, H, W, C]
# mean and stddev are computed along 0 axis and have shape [H, W, C]
mean = mean(t, axis=0)
stddev = stddev(t, axis=0)
for i in 0..B-1:
  out[i,:,:,:] = norm(t[i,:,:,:], mean, stddev)

基本上,它计算 B 元素的 H*W*C 均值和 H*W*C 标准差。您可能会注意到,不同空间位置的不同元素具有自己的均值和方差,并且仅收集 B 值。

转换层中的 Batchnorm

这种方式是完全可以的。但是卷积层有一个特殊的属性:过滤器权重在输入图像中共享(您可以在 this post 中详细阅读)。这就是为什么以相同方式对输出进行归一化是合理的,以便每个输出值在不同位置取 B*H*W 值的均值和方差。

在这种情况下,代码如下所示(同样是伪代码):

# t is still the incoming tensor of shape [B, H, W, C]
# but mean and stddev are computed along (0, 1, 2) axes and have just [C] shape
mean = mean(t, axis=(0, 1, 2))
stddev = stddev(t, axis=(0, 1, 2))
for i in 0..B-1, x in 0..H-1, y in 0..W-1:
  out[i,x,y,:] = norm(t[i,x,y,:], mean, stddev)

总共只有 C 个均值和标准差,每一个都是根据 B*H*W 个值计算的。这就是他们所说的“有效小批量”的意思:两者之间的区别仅在于轴选择(或等效的“小批量选择”)。


很好的答案,但我认为您的意思是我们应该取 B*H*W 值的均值和方差,而不是 B*H*C 值。参考Batchnorm in conv layer之后的第一段。无论哪种方式,+1。
我们不能只写: out[:,:,:,:] = norm(t[:,:,:,:], mean, stddev) 没有循环吗?对整个批次计算均值和方差,然后将其分别应用于批次中的每个元素,而不是一次? @格言
关于 conv 层的 BN,可以在此处获得更多信息 - arxiv.org/pdf/1502.03167.pdf 在第 3.2 小节中。要点是我们想要保留卷积属性(例如特征的空间平移不变性),因此平均值是在 BxHxW 的轴上计算的
基本上,它计算 H*W*C 均值 :还是在第一种情况下仅计算 B 均值?举个小例子:如果我们考虑 3x2x3 i/p,dim=(0) 上的平均值是 2x3。同样在这里BxHxWxC,平均值的形状为HxWxC,并且将从该批次的每个输入中减去。请说清楚。
我是对的,通常的 batchnorm 不能应用于全卷积网络吗?在每个批次中,我们可以有不同的形状,这需要任意数量的 gammabeta,这是不可能的。那是对的吗?
M
Maverick Meerkat

对Maxim的回答进行了一些澄清。

我在 Keras 中看到您指定的轴是通道轴,这让我感到困惑,因为对通道进行归一化是没有意义的——因为 conv-net 中的每个通道都被认为是不同的“特征”。即对所有通道进行归一化相当于对卧室数量进行归一化,以平方英尺为单位(来自 Andrew 的 ML 课程的多元回归示例)。这通常不是您想要的——您所做的就是将每个特征本身标准化。即,您将所有示例中的卧室数量标准化为 mu=0 和 std=1,并将所有示例中的平方英尺标准化为 mu=0 和 std=1。

这就是您想要 C 均值和标准的原因,因为您想要每个通道/特征的均值和标准。

在我自己检查和测试之后,我意识到了这个问题:这里有点混乱/误解。您在 Keras 中指定的轴实际上是不在计算中的轴。即,除了此参数指定的轴之外,您可以得到每个轴的平均值。这令人困惑,因为它与 NumPy 的工作方式完全相反,其中指定的轴是您执行操作的轴(例如 np.mean、np.std 等)。

我实际上只用 BN 构建了一个玩具模型,然后手动计算了 BN - 在所有 3 个第一维 [m,n_W,n_H] 上取平均值,std 并得到 n_C 结果,计算 (X-mu)/std(使用广播)并得到与 Keras 结果相同的结果。

希望这可以帮助任何像我一样困惑的人。


这太好了,谢谢!那么,在卷积通道之后正确应用批量归一化是指定对应于卷积输出特征的轴,而不是通道?但是随后将使用相同的均值和标准差来跨相同输出特征的不同通道进行归一化。这不是 100% 是否是原始论文中描述的 batchnorm(在关于将其应用于 conv nets 的部分中)。
我刚刚阅读了有关 Keras BatchNormalisation 的文档。批量规范论文建议对卷积输出中相同输出特征的所有位置使用统计数据(均值和标准差)进行归一化。如果我们将轴设置为对应于输出通道,它应该做正确的事情。 (我认为。)
G
Guillaume Chevalier

我对我说的话只有 70% 的把握,所以如果它没有意义,请在否决之前编辑或提及它。

关于 locationspatial location:它们表示图像或特征图中像素的位置。特征图类似于表示概念的稀疏修改版本的图像。

关于so that different elements of the same feature map, at different locations, are normalized in the same way:一些归一化算法是局部的,因此它们依赖于它们附近的环境(位置),而不是图像中相距较远的事物。它们可能意味着每个像素,无论它们的位置如何,都被视为一组元素,独立于它的直接特殊环境。

关于 In Alg. 1, we let B be the set of all values in a feature map across both the elements of a mini-batch and spatial locations:他们得到一个包含小批量中每个训练示例的每个值的平面列表,并且这个列表结合了它们在特征图上的位置。


只是想用一个例子来阐明我的想法。所以基本上,如果我们有 10 个大小为 5x5 的特征图和 20 个小批量大小,那么我们是否尝试单独对每个特征图进行归一化?所以新的小批量大小为 = 20 * 25。(25 因为特征图的大小为 5x5)。如果单个特征图使用其自己的均值和方差进行归一化,或者所有 10 个特征图的均值和方差都相同,我会感到困惑。如果是后者,那么新更新的小批量大小是多少?
想了一会儿,我只想说我认为你是对的。这就是 batchnorm 论文所说的应该在卷积层之后完成的方式。所以一切都很好。
M
Milo Sun

首先我们需要明确一个内核的深度是由前一个特征图的通道数决定的,而这一层的内核数决定了下一个特征图(下一层)的通道数。那么我们应该明确每个内核(通常是三个维度的)将在下一层只生成一个通道的特征图。第三,我们应该尝试接受生成的特征图中的每个点(无论它们的位置如何)都是由同一个内核通过在前一层上滑动生成的。因此,它们可以被视为由该内核生成的分布,并且可以被视为随机变量的样本。然后应该对它们进行平均以获得平均值,然后是方差。 (它不是死板,只有助于理解)这就是他们所说的“以便同一特征图的不同元素,在不同的位置,以相同的方式归一化”


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅