我们可以对具有不同数据分布的实例使用带有迁移学习的批量归一化吗?
Can we use batch normalization with transfer learning for an instance with different data distribution?
此 tutorial 具有用于训练和测试阶段的批量法线层的张量流实现。
我们在使用迁移学习的时候可以使用batch normalization层吗?特别是当数据分布不同时。
因为在推理阶段BN层只是使用固定的mini batch均值和方差(这是在训练分布的帮助下计算的)。
所以如果我们的模型有不同的数据分布,它会给出错误的结果吗?
通过迁移学习,您可以将学到的参数从一个域迁移到另一个域。
通常,这意味着您要保持固定的卷积层的学习值,同时添加新的全连接层来学习对 CNN 提取的特征进行分类。
当您向每一层添加批量归一化时,您将从输入分布中采样的值注入该层,以强制输出层呈正态分布。
为此,您计算层输出的指数移动平均值,然后在测试阶段,从层输出中减去该值。
尽管依赖于数据,但这个平均值(对于每个卷积层)是在层的 输出 上计算的,因此是在学习到的转换上计算的。
因此,在我看来,BN 层从其卷积层输出中减去的各种平均值足够通用,可以传输:它们是在 transformed 数据上计算的,而不是在原始数据上。
此外,卷积层学习提取局部模式,因此它们更加稳健且难以影响。
因此,简而言之在我看来:
您可以应用批量规范的卷积层迁移学习。但是在完全连接的层上,计算值的影响(看到整个输入而不仅仅是局部补丁)可能会依赖太多数据,因此我会避免它。
但是,作为一个经验法则:如果您对某些事情没有安全感,请尝试一下,看看它是否有效!
此 tutorial 具有用于训练和测试阶段的批量法线层的张量流实现。
我们在使用迁移学习的时候可以使用batch normalization层吗?特别是当数据分布不同时。
因为在推理阶段BN层只是使用固定的mini batch均值和方差(这是在训练分布的帮助下计算的)。 所以如果我们的模型有不同的数据分布,它会给出错误的结果吗?
通过迁移学习,您可以将学到的参数从一个域迁移到另一个域。 通常,这意味着您要保持固定的卷积层的学习值,同时添加新的全连接层来学习对 CNN 提取的特征进行分类。
当您向每一层添加批量归一化时,您将从输入分布中采样的值注入该层,以强制输出层呈正态分布。 为此,您计算层输出的指数移动平均值,然后在测试阶段,从层输出中减去该值。
尽管依赖于数据,但这个平均值(对于每个卷积层)是在层的 输出 上计算的,因此是在学习到的转换上计算的。
因此,在我看来,BN 层从其卷积层输出中减去的各种平均值足够通用,可以传输:它们是在 transformed 数据上计算的,而不是在原始数据上。 此外,卷积层学习提取局部模式,因此它们更加稳健且难以影响。
因此,简而言之在我看来:
您可以应用批量规范的卷积层迁移学习。但是在完全连接的层上,计算值的影响(看到整个输入而不仅仅是局部补丁)可能会依赖太多数据,因此我会避免它。
但是,作为一个经验法则:如果您对某些事情没有安全感,请尝试一下,看看它是否有效!