学习目标
利用Numpy实现L2 正则化和 dropout的设置。
笔记
1. 前置知识
可知,正则化是解决高方差(过拟合)问题的技术。
2. 正则化技术
2.1 正则化——L2范数
注:
λ
\lambda
λ是一个超参数,
λ
\lambda
λ越大,正则化越强;
L2正则化使得决策边界变得smoother,但是如果
λ
\lambda
λ过大,会导致模型高误差。
2.2 随机失活(Dropout)
2.2.1 理解Dropout
在每一次迭代时,以(1-keep_prob)的几率随机关闭或以keep_prob的几率保留每一层的每一个神经元,被关闭的神经元不参与此次迭代的正向和反向传播的计算。
2.2.2 Dropout的思想
在每一次迭代中,用整个模型的神经元子集构成的新模型进行训练,这样的话神经元们就会对具体某个神经元的激活不那么敏感,因为具体某个神经元随时会失活。
2.2.3 对第l层设置dropout
正向传播中设置dropout:
#第一步:创建Dl,Dl是一个与Al(第l层的激活函数)形状相同的服从均匀分布的随机矩阵
Dl = np.random.rand(Al.shape[0],Al.shape[1])
#第二步:将Dl变成一个0-1矩阵,其中1对应留存的神经元,0对应失活的神经元
Dl = (Dl < keep_prob).astype(int)
#第三步:将Dl看作掩膜,将Al上对应失活神经元位置的值设为0
Al = Al * Dl
#第四步:最好是将Al / keep_prob 一下
Al = Al / keep_prob
对应的反向传播中设置dropout:
# 第一步:将正向传播中得到的Dl看作掩膜,将dAl上对应失活神经元位置的值设为0
dAl = dAl * Dl
# 第二步:将dAl / keep_prob 一下
dAl = dAl / keep_prob
注:随机失活不会用在输入和输出层。
2.3 其他正则化技术
2.3.1 数据增强
一般指通过图像的翻转、裁剪等操作扩充训练数据集。
2.3.2 Early stopping
学习时间
2022.6.26
总结
- 正则化是减少过拟合的一种技术;
- 正则化会使权重的值更低;
- L2正则化和Dropout是两种有效的正则化技术(用的多)。
需要注意的地方
- 之后有时间补充一下L1正则化和early stopping的内容;
- 本文中提到的误差方差分析不够全面,之后补充。