深度学习——正则化(二)

在之前的文章中深度学习——正则化(一)中,我们简单的介绍了几种常见的正则化的策略。下面我继续介绍正则化的相关策略。

1、 参数绑定与参数共享

在我们之前的叙述中,我们讨论了通过对损失函数添加惩罚项,从而对参数进行约束或者惩罚,但是我们可以发现这种方式是针对相对固定的区域或者点。比如L2正则化中是对参数偏离0的固定值进行了惩罚。然而,我们对于模型参数的值有的时候会基于一定的先验知识,也就是说,我们可能准确的知道应该使用什么样的参数。但是我们可以根据相关问题或者模型结构的方面获取到一定的先验知识来判断两个模型的参数之间应该有一定的相关性。

所谓的参数绑定指的就是,我们知道两个模型A,B具有一定的相关性,比如两个模型所做的均是分类任务,通过这种先验知识,我们可以认为模型A与模型B的参数应该相近,则我们可以通过正则化来利用这个信息,具体的来说,我们可以采用Ω(WA,WBW_A,W_B)的范数惩罚项来约束A和B的损失函数。其中范数的方式可以采用L2范数WAWB22||W_A-W_B||_2^2的多种范数的形式。

在参数绑定中,我们主要将不同但是相似的模型绑定在一起,表示两个模型之间具有一定的相关性。更近一步的,我们可以强迫这些不同但是相似的模型的部分参数是一致的,也就是不同的模型之间共享一部分的参数,这种正则化的方式通常称为参数共享

2、稀疏表示

在之前我们所叙述的正则化策略中,针对的都是模型的参数进行的正则化,下面我们来介绍下一种策略,惩罚神经网络中的**单元,这种策略间接的对模型参数施加了复杂的惩罚

其具体的形式为:
L(θ,X,Y)=L(θ,X,Y)+αΩ(h)L^*(θ,X,Y)=L(θ,X,Y)+αΩ(h)
其中Ω表示的是正则化的惩罚项,h表示的是**之后的隐藏单元,α用于权衡范数惩罚项的相对贡献。α∈[0,∞)。通常采用的也是L1范数将隐藏单元进行正则化,其他的范数方式还包括KL散度等等方式。
通过上述的方式,一般情况下隐藏单元都可以变得稀疏。

3、Dropout方式

Dropout方式可以看做是集成了大量深层神经网络的Bagging方法。具体而言,Dropout训练的集成包括从所有的基础网络中去除非输出单元后形成的子网络,具体如下图所示深度学习——正则化(二)
我们只需要将原来的深层神经网络的一些单元乘以0就能够有效的删除这些单元。我们来具体的描述一下这个过程:
1.每一次训练的过程中,当某一层的产生输出的时候,我们以一定的概率将其置为0,也就是说神经网络的结构发生了一定的改变(有一些节点失效了)。Dropout之后的神经网络的结构比原来的神经网络的结构缩小了,我们可以看成是生成了一个子网络。
2. 训练过程是多轮的,每一轮在进行Dropout操作的时候,节点的失效是随机的,也就是说每次迭代生成的子网络的结构可能是不同的,类似上面的图示。
3. 根据1,2就的过程就相当于多轮迭代生成了不同的子网络结构,而每个子网络的输入是相同的,这就类似于Bagging的方式对模型进行了训练。

在这里我们需要注意到的是:

Bagging中的所有的模型是独立的,而Dropout中所有的模型共享参数,每个模型继承父神经网络的子结构

4、DropConnect

在上面我们介绍了Dropout的主要思想,Dropout主要是对于一层的输出以一定的概率进行清零的操作,而Dropconnect的方式和Dropout的方式很类似,其主要是将输入与下一层之间的连接的权重以一定的概率进行清零操作。下面有两张图来展示一下两者的区别:
首先是Dropout
深度学习——正则化(二)
红色虚线包围的就是我们要进行清0 的输出单元。

下面是DropConnect
深度学习——正则化(二)

红色的实线表示的是对这个链接权重的清0操作。可以看到,当每一个输入单元将和第一个输出单元的链接权重清0后,第一个输出单元失效。

相关文章: