作者丨武广
学校丨合肥工业大学硕士生
研究方向丨图像生成
深度学习在算力的推动下不断的发展,随着卷积层的堆叠,模型的层数是越来越深,理论上神经网络中的参数越多这样对数据的拟合和分布描述就能越细致。然而简单的堆叠卷积层又会引起梯度消失和过拟合的问题,伴随着解决方案下残差网络、归一化和非线性层被提出。
本文将对 NVIDIA 近期的论文 Semantic Image Synthesis with Spatially-Adaptive Normalization 进行解读,这篇论文提出了适合保留语义信息的 Spatially-Adaptive Normalization(空间自适应归一化),同时文章在实现细节上也很有参考意义。
论文引入
Batch Normalization (BN) 在 Inception v2 [1] 网络中被提出,它的设计之初是为了解决 Internal Covariate Shift 问题,也就是在训练过程中,隐层的输入分布老是变来变去。因为深层神经网络在做非线性变换前的激活输入值随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,这导致了训练收敛慢,也就是数据整体分布逐渐往非线性函数的取值区间的上下限两端靠近。所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。
我们知道数据白化,是对输入数据分布变换到 0 均值,单位方差的正态分布,这样会使神经网络较快收敛。如果这种"白化处理”作用在每一个隐层上,是不是可以稳定数据分布的同时加速收敛?
这个问题的答案就是 BN 设计的根源了,BN 就是通过一定的规范化手段,对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为 0 方差为 1 的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。
比如在做图像翻译时,往往设置的 BatchSize 为 1 或者模型训练时 BatchSize 取值很小,这个时候 Batch Normalization 在对这批数据取均值和方差,而这批数据由于量不够,很难描述整体数据,此时就可以尝试使用 Layer Normalization 或者 Group Normalization。
说清这个问题前,我们要来看一下 Conditional Batch Normalization (CBN) [3],以图像和其标签为例,CBN 就是通过 BN 将图片底层信息和标签信息结合,这样处理的好处就是让图像的标签(语义信息)指导图像的特征表达。
这种标签信息往往是由热编码或者是低纬的向量通过感知层代替 BN 中的参数 γ 和 β,如果这个标签信息是一张语义分割图呢?这种输入到感知层的方式将不能充分表达图像的语义信息了,此时 Spatially-Adaptive Normalization 便派上用场了,它正是处理这种标签信息是一张语义分割图时如何让图像的标签(语义信息)指导图像的特征表达。