这个方法现在被很多文章应用。本文就讲讲这个orthogonal regularization, 可以翻译成正交规范化。
这个方法首先出现在这篇文章里:LCLR2017文章,2018年,也出现于BigGAN。
最开始,2014年只是在初始化的时候让卷积核参数都是正交的。 而orthogonal regularization认为参数如果一直保持正交特性将会发挥作用。
为什么要用正交规范化?
在神经网络中,我们都会有矩阵乘法,即使是卷积神经网络CNN中。
正交阵的好处是,如果一个矩阵与一个正交阵相乘,这个矩阵的范数不会变化。(这里不证明)
正交阵的这个特性在梯度反向传播时有一定好处,特别是梯度爆炸和梯度消散的情况。
为什么矩阵范数不变会有助于梯度爆炸或梯度消散呢?
我们举个例子,就拿L2范数来说,L2范数等于矩阵所有元素的平方和的平方根。
我们如果能让卷积核这个矩阵是正交阵,那么特征图这个矩阵的范数就不变了。于是特征图的L2范数不变化,进而使得前后特征图的最大值都不会很大。而梯度反向传播时权重的梯度会用到输入并与之相乘,当然这有助于梯度爆炸。输入值也不会变得越来越小,这样也有助于梯度的保持(不考虑梯度越往后本身就越小,只考虑因为要与输入相乘这个因素)
关于为何保证范数就可以缓解梯度消失和爆炸,现在也还没有完全分析透彻。BigGAN文章中就试图用谱范数来追踪GAN的模型塌陷。
因此,**我们希望在运行过程中,卷积核是一个正交阵。**保持特征图的范数。
如何运用?
正交阵的一个条件是: 其中,就是正交阵,
但是,实际过程中,卷积核 并不是一个正交阵,因此等式 是一个非0矩阵。可以认为非0元素越多,我们越不喜欢这个卷积核。因此,我们求这个等式的某一范数,并认为这个范数是损失,加到总的损失中。
如上面给出的链接中2017年LCLR文章就是使用了L1范数作为损失。就是对每个元素取绝对值,然后求和。
BigGAN做了一些改进。它不使用L1范数,而是L2范数。并且认为对角线上有其他约束。下式中,矩阵 表示每个元素都为1.
参考链接:
- 正交阵保证范数的不变性
- 关于正交规范化的讨论-英文网址
- 关于矩阵范数的一些知识