李沐-动手学深度学习(3)权重衰退和dropout

【总结】

权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度。

正则项权重是控制模型复杂度的超参数。

丢弃法将一些输出项随机置0来控制模型复杂度。

常作用在多层感知机的隐藏层输出上。

丢弃概率是控制模型复杂度的超参数。(取0.5、0.9、0.1比较常见)


一、权重衰退Weight Decay

一种常见的处理过拟合的方法。

(1)如何控制模型容量:把模型变的比较小,控制其中的参数比较少,或者控制参数值的选择范围。

意味着w的每个值的都要小于θ开根号。

通常不会直接用上面这个优化函数,因为优化起来相对麻烦一些。常用下面这个。

λ不再是硬性的,要求某个值一定要小于某个值,而是会平滑一些的。

假设l是二次函数,绿色那个线,那么w~*的最优解就是中心点(绿色圈中间那个绿点)。加上正则项(惩罚项)后,后面那个正则项也是二次函数,对应黄色线。所以w*最优解会在黄绿交界点。

Q:为啥要把w往小拉,如果真的最优解解释在绿点,会不会起反效果?A:假设绿点是真的最优解,但是因为里面有噪音,所以去学的时候,学不到绿色的点,所以学到的可能很大。模型看到的是噪音,就会去学习记住噪音,所以必然过大。所以需要λ去往回拉,并控制往回拉多少。

(2)梯度更新

更新参数时,后一项是没有变化的,就是前面那个w_t多减了个ηλ。

(3)代码实现和简洁实现

chapter_multilayer-perceptrons/weight-decay.ipynb

(4)问答

(1)Q:实践中权重衰减的值一般设置多少为好呢,总觉得权重衰退的效果并不那么好?

A:一般e-2(0.01)、2-3(0.001)、e-4(0.0001),权重消退并不会带来特别特别好的效果。

(2)Q:范数的上下标

A:其实这里有个下标的,加了下标2就是L2范数,但是他是默认,所以下标2不写也没关系。上标2表示的是平方。

二、Dropout

1、Dropout

正则就是使权重范围不要过于大,防止过拟合的方法

在数据中加入噪音,等价于正则,这跟之前的噪音不一样,之前是固定噪音,这个是随机加噪音。丢弃法是在层之间加噪音。

假设x是一层到下一层的输出:虽然加了噪音,但是不要改变期望

因为每次随机丢,所以也可以理解为,每次随机采样一些子神经网络来做训练,也就是拿到了一堆小的神经网络来训练来做平均。但是实验上跟正则效果很像的,所以现在主流把它当做正则。

隐藏层设大一点,然后dropout也大一点,可能比没有dropout但隐藏层小效果要好。

2、问答

(1)Q:dropout随机置0对求梯度和反向传播的影响是什么

A:置0的地方,梯度也会置0,对应的权重这一轮不会更新;没有置0的地方,梯度也会相对的乘以一个数。

(2)Q:dropout随机丢弃,如何保证结果的可重复性?

A:如果把dropout随机种子固定住的话,可以重复性。但是神经网络的随机性很大,还有初始权重随机、cuda中(因为做并行,一些数加的顺序不一样导致结果不一样,要重复就要禁掉cudnn)。

(3)丢弃法每个batch都会丢弃一次

(4)dropout主要对全连接层用,weight decay对卷积层、之后的transforma都可以用。

dropout调起来也很方便。

(5)dropout是有可能使收敛变慢的。

你可能感兴趣的:(李沐-动手学深度学习(3)权重衰退和dropout)