欢迎光临散文网 会员登陆 & 注册

论文阅读2.0 OCNN 基础知识填坑

2021-03-28 20:50 作者:克莱登大学宅学博士  | 我要投稿

            Orthogonal Convolutional Neural Networks给出了正交卷积的一个等价条件,并给出了实现CNN正交卷积的有效算法,在没有额外参数和不增加很多算力情况下,拥有更好的特征表现力、更低的特征相关性、更均匀的spectrum(频谱)和增强的鲁棒性。

        算法过两天再看吧,今天先填一填基础知识坑。。。。

1.信息熵

        先给出信息熵的公式:

        其中p(xi)代表随机事件xi的概率。

        先说明什么是信息量,信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量x的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?多少信息用信息量来衡量,我们接受到的信息量跟具体发生的事件有关。

        信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大,如湖南产生的地震了;越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了。越平常的事情,信息量越小。

        注意:一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负。

        很容易知道,两个不相关的事件,同时观察获得的信息量为h(x,y) = h(x) + h(y),两件事同时发生的概率为p(x,y) = p(x)*p(y)。根据上面推导,我们很容易看出h(x)一定与p(x)的对数有关(因为只有对数形式的真数相乘之后,能够对应对数的相加形式)。

        所以信息量的公式为:

        公式解释:

①:负号的原因是,p(x)最大时1,所以h(x)不可能为负,p(x)越小,h(x)越大。

②:底数为2原因为信息量满足低概率事件x对应于高的信息量。那么对数的选择是任意的。我们只是遵循信息论的普遍传统,使用2作为对数的底。

        由此我们可以知道,信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。

        信息熵还可以作为一个系统复杂程度的度量,如果系统越复杂,出现不同情况的种类越多,那么他的信息熵是比较大的。


2.多方面理解正则化

        本质上大家都知道,加入正则项是为了避免过拟合

①数理理解

        这种处理手段到底是经验上的(比如说,我用这种方法处理了具体数据后,得到的结果确实避免了过拟合,但逻辑上我不能确定对下一个模型下一个数据集是否依然适用,以及不确定为什么会产生这样的结果)还是理论上的(比如说,不用跑具体数据,直接就能证明这种方法可以避免过拟合)。换句话说,我们还是回到了对正则项本质的讨论。

假设我们考虑一个最简单的线性模型

,我们比较两个估计结果:
(1) 最小二乘估计

(2) 岭估计

        那么我们如何说明加入这个正则项后,相较于最小二乘估计,确实避免了过拟合呢?

因为从数学上可以证明:

        注意这里的小于是严格的小于。这里的证明是要用到矩阵范数和向量范数的相容性。这个性质本身告诉了我们这样一个及其重要的本质:加入正则项后,估计出的(向量)参数的长度变短了(数学上称为shrinkage)。换句话说,长度变短了就意味着,β~其中的某些分量在总体程度上比β^的分量变小了。极端来说,向量β~中的某些分量可能(因为也可能是因为每个分量都变小一点点最后造成整体长度变小)被压缩到了0。

虽然这里其实还没有完整说明我们实现了避免过拟合,但至少从某种程度上说,加入正则项和的参数估计是符合我们之前的预定目标的,即用尽量少的变量去拟合数据。

②机器学习理解

   复制一下,参考链接再最下面。

3.CNN中的特征冗余

         ResNet50 中的 feature map,可以看到很多的 feature map 是很相似的,比如图中标出的红、绿、蓝三组,这也说明 feature map 中存在较多的冗余。有关优化的论文有GhostNet,Split to be slim,Tied Block Convolution,都是20年的,以后有时间看看。包括本文,也是对特征冗余开展工作。



4.正交矩阵和正交化操作

正交矩阵

我这也能忘了。。。

性质:

(1)等式两边取行列式,得到A的行列式值是±1

(2)正交矩阵A的行向量组以及列向量组都是标准正交的向量组

矩阵正交化操作

        CNN的权值正交性和特征正交性,在一定程度上是和特征表达的差异性存在一定联系的。本文是是在训练中对权值添加正交正则提高训练稳定性,另外还有一篇DeCov Loss老论文,15年的。方法是对特征添加正交性的损失抑制过拟合。

        什么是正交化呢?我们知道搭建建立机器学习系统的挑战之一是,你可以尝试和改变的东西太多太多了,有很多的超参数可以调。

        以下来自吴恩达深度学习。你有一个老式电视,有很多旋钮可以用来调整图像的各种性质,所以对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个旋钮用来调整图像左右偏移,还有一个旋钮用来调图像旋转角度之类的。电视设计师花了大量时间设计电路,那时通常都是模拟电路来确保每个旋钮都有相对明确的功能。如一个旋钮来调整这个(高度),一个旋钮调整这个(宽度),一个旋钮调整这个(梯形角度),以此类推。

        相比之下,想象一下,如果你有一个旋钮调的是0.1x表示图像高度,+0.3x表示图像宽度,-1.7x表示梯形角度,+0.8x表示图像在水平轴上的坐标之类的。如果你调整这个(其中一个)旋钮,那么图像的高度、宽度、梯形角度、平移位置全部都会同时改变,如果你有这样的旋钮,那几乎不可能把电视调好,让图像显示在区域正中。

        所以在这种情况下,正交化指的是电视设计师设计这样的旋钮,使得每个旋钮都只调整一个性质,这样调整电视图像就容易得多,就可以把图像调到正中

        另外一个例子就是你想想学车的时候,一辆车有三个主要控制,第一是方向盘,方向盘决定你往左右偏多少,还有油门和刹车。就是这三个控制,其中一个控制方向,另外两个控制你的速度,这样就比较容易解读。知道不同控制的不同动作会对车子运动有什么影响。

        想象一下,如果有人这么造车,造了个游戏手柄,手柄的一个轴控制的是0.3×转向角-速度,然后还有一个轴控制的是2×转向角+0.9×车速,理论上来说,通过调整这两个旋钮你是可以将车子调整到你希望得到的角度和速度,但这样比单独控制转向角度,分开独立的速度控制要难得多。           

        正交化的概念是指,你可以想出一个维度,这个维度你想做的是控制转向角,还有另一个维度来控制你的速度,那么你就需要一个旋钮尽量只控制转向角,另一个旋钮,在这个开车的例子里其实是油门和刹车控制了你的速度。但如果你有一个控制旋钮将两者混在一起,比如说这样一个控制装置同时影响你的转向角和速度,同时改变了两个性质,那么就很难令你的车子以想要的速度和角度前进。然而正交化之后,正交意味着互成90度。设计出正交化的控制装置,最理想的情况是和你实际想控制的性质一致,这样你调整参数时就容易得多。可以单独调整转向角,还有你的油门和刹车,令车子以你想要的方式运动。

        如果你的算法在成本函数上不能很好地拟合训练集,你想要一个旋钮,或者一组特定的旋钮,这样你可以用来确保你的可以调整你的算法,让它很好地拟合训练集,所以你用来调试的旋钮是你可能可以训练更大的网络,或者可以切换到更好的优化算法,比如Adam优化算法。

        在机器学习中,如果你可以观察你的系统,然后说这一部分是错的,它在训练集上做的不好、在开发集上做的不好、它在测试集上做的不好,或者它在测试集上做的不错,但在现实世界中不好,这就很好。必须弄清楚到底是什么地方出问题了,然后我们刚好有对应的旋钮,或者一组对应的旋钮,刚好可以解决那个问题,那个限制了机器学习系统性能的问题。

        感觉后续还要再看看。

5.Gram矩阵理解

        假设A是m×n的的矩阵,列向量 Gram 矩阵用列向量A表示:

        行向量同理就不说了。

        很容易看出,便于理解,在style transfer 当中,什么是风格,存在自己特性的才叫做风格。因此如何去度量这个自己的特性呢,自己的特点越突出,别人的越不突出最好。因此论文当中这样去做:

        这样我们知道:当同一个维度上面的值相乘的时候原来越小酒变得更小,原来越大就变得越大;二不同维度上的关系也在相乘的表达当中表示出来。

这不就是gram矩阵吗^ ^。所以要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可。

5.doubly block-Toeplitz matrix矩阵理解

        首先我们可以把卷积看成:

        展开的kernel写成矩阵C的形式:

        所以矩阵卷积可以写成下面形式,flat表示将矩阵展平为一维向量。

        我们可以看出这个矩阵分割以下:

        我们看到每一个子块Hi都是一个循环矩阵(circulant matrix),而整个矩阵则是这些子块的循环矩阵。因此我们把这样的矩阵叫做双块循环矩阵(doubly block circulant matrix)

        离散卷积可以被认为是矩阵的乘法。只是,这个矩阵的元素是有限制的。例如,对于一维卷积而言,矩阵的每一行元素与上一行错位一个位置。这种矩阵叫做托普勒斯矩阵(Toeplitz matrix)。在二维卷积中,对应的则是双块循环矩阵(doubly block circulant matrix)。这些矩阵的一些元素受到相等的约束。除此之外,我们也看到这些矩阵是很稀疏的(大多数位置是0)。原因是我们的kernel通常要比input小很多。把卷积用矩阵乘法的视角来解读似乎对我们实现卷积没什么帮助,但是对我们理解卷积和设计神经网络却很有意义。


论文明天再看吧。。。


参考自:https://zhuanlan.zhihu.com/p/26486223

               https://www.zhihu.com/question/20924039/answer/45397882

               https://zhuanlan.zhihu.com/p/296870176

               https://www.jianshu.com/p/61d5b6d22799

               https://zhuanlan.zhihu.com/p/105470826

               https://www.zhihu.com/question/49805962

               https://blog.csdn.net/github_36326955/article/details/72835148



论文阅读2.0 OCNN 基础知识填坑的评论 (共 条)

分享到微博请遵守国家法律