1.训练集和测试集的划分:
以前7:3,因为数据量比较少,现在上million后可以8:2甚至更少
采用的测试集和训练集最好来自同一分布(比如都是用户上传的而不是包含用户上传和网上爬取)
2. bias/Variance 偏差、方差
蓝色、紫色和虚线部分:
3. 机器学习的基本方法
4.正则化
可以解决过拟合(高方差),另一个解决方法是准备更多数据
一般使用L2正则化(L1使得数据变稀疏但是却没有减少多少存储空间)
又被称为“权重缩减(weight decay)”,因为推导公式可见确实是在缩小w
5.为什么正则化可以减少过拟合(高方差)?
隐藏单元的权重变小了,使得一个过度拟合的网络向欠拟合逼近,在过程中接近“just right”
举例:假如使用tanh函数:加L2正则化可以使非线性变得线性(因为z始终很小)
6.Dropout正则化(随机失活)
使用最多的:反向随机失活(inverse dropout)
反向随机失活:绿色部分,通过除以相应的prob来使得期望不变
7.为什么dropout有用
第一个直观的理解:dropout以后会使得网络变小从而由复杂变简单
第二个直观的理解:使得后面的单元对于某一单一前置单元的依赖减小
不同的层可以使用不同的dropout参数。
缺点:使得代价函数J不再确定,每次做随机删除使得复查变得困难,在除了图像之外的领域应用较少(因为图像的数据较少,较容易过拟合)
8.其他正则化的方法
1)对图片来说,数据不足时可以:
翻转图片、随意裁剪(放大后旋转一定角度)
对于数字:旋转、扭曲直线
2)early stop:提前停止训练神经网络,通过绘制代价函数曲线(在验证集和训练集上),观察一个点提前结束(验证集会先下降后上升);缺点:必须同时处理两个问题,不能独立处理
9. 正则化输入(normalizing training set)
为什么要归一化:代价函数能够更好地下降,更快达到最优解,缩短时间
10. 梯度消失与梯度爆炸
什么是梯度消失与梯度爆炸:与层数有关的变量随着层数的加深而指数级的增长或者减小。
假设以下函数是线性的,b=0,w随着层数增加越来越大(小),导致yhat急剧变化。实际上,只要w稍微大于或小于1,就会出现层数加深而梯度出现问题。
11.初始化权重
不完全的解决梯度爆炸、梯度消失
12. 梯度的数值逼近
使用双边误差比使用单边更准确,判断是否使用了f(a)的偏导,检查反向传播是否正确
单边:
双边:
误差0.0001 < 0.03
13.梯度检查
检查近似值与实际值的欧几里得距离,如果在10^-7次方应该没问题,如果在10^-5可能有问题,如果是10^-3次方就应该认真检查每一个反向传播函数。
14.梯度检查的使用技巧和注意事项
主要由以下五点: