【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch

目录

 深度学习偏差与方差

L2范数正则化(权重衰减),减少方差

Dropout regularrization(随机失活正则化)

 数据扩增可以作为一种正则化方法使用

 提前终止训练

数据归一化 :

梯度消失/梯度爆炸

梯度检测

 Batch vs mini-batch 

 深度学习偏差与方差

  • 对于大量数据,训练集,验证集,测试集的划分为   8:1:1或99.5:0.25:0.25、99.5:0.4:0.1
  • 如果不需要无偏评估算法性能,没有测试集也可以,将数据集只划分为训练集和交叉验证集。

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第1张图片 【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第2张图片

  •  在高维数据中采用“高偏差且高方差的分类器”

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第3张图片

训练一个大型神经网络的主要代价是计算时间 ,对于深度学习,可以采用减少方差而不影响偏差的方法

  • L2范数正则化(权重衰减),减少方差

在损失函数后加上L2正则项

J(w^{1},b^{1}...,w^{l},b^{l}) = \frac{1}{m}\sum_{i = 1}^{m}L(\hat{y}^{(i)},y) + \frac{\lambda }{2m}\sum_{l = 1}^{L}\left \| w^{l} \right \|^{2}_{F}

\left \| w ^{l}\right \|^{2} _{F}= \sum_{i = 1}^{n^{l-1}}\sum_{j = 1}^{n^{l}}(w_{ij}^{l})^{2}

反向传播得到的梯度也进行L2正则化

dw^{l} = (from backprop) +\frac{\lambda }{m}w^{l},    w^{l}经过L2范数正则化

对权重进行梯度下降迭代

w^{l} = w^{l} - \alpha dw^{l}

  • Dropout regularrization(随机失活正则化)

 对于样本进行抛硬币的方式设置概率

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第4张图片

 keep-prob = 0.8

d3 = np.random.rand(a3.shape[0],a3.shape[1]) < keep-prob)

 np.random.rand() 随机样本取值是(0,1]

a3 = np.multiply(a3,d3)

首先生成跟a3隐藏层相同shape的随机数,小于0.8的等于1,大于0.8等于0,再生成一个0-1矩阵d3,与a3相乘,将a3中的系数剔除20%(遇到0的系数归零)

a3/keep-prob

随机丢掉20%数据,除以0.8使a3大体保持不变

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第5张图片

  •  数据扩增可以作为一种正则化方法使用

  •  提前终止训练

训练集和验证集的误差曲线都比较低时可以提前终止学习

  • 数据归一化 :

确保所有特征都在相似范围内,帮助学习算法运算的更快,减少震荡和波动,迭代到最优结果的速度更快

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第6张图片

梯度消失/梯度爆炸

  • 初始化参数太小,在网络训练过程中前馈和反馈的信号可能会丢失,导致神经元之间没有区分。
  • 参数过大,会导致梯度失控爆炸等问题,影响模型的收敛性 

梯度检测

 双边误差梯度逼近导数

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第7张图片

 【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第8张图片

 用双边误差逼近导数的值d\theta _{approx}^{[i]}与神经网络的梯度d\theta ^{[i]}作差求范数

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第9张图片

  • 梯度检测不能用在训练中,只用于debug
  • 算法在梯度检测中出现问题,检查算法的组成部分 
  • 梯度检测不要忘了添加正则化项

J(w^{1},b^{1}...,w^{l},b^{l}) = \frac{1}{m}\sum_{i = 1}^{m}L(\hat{y}^{(i)},y) + \frac{\lambda }{2m}\sum_{l = 1}^{L}\left \| w^{l} \right \|^{2}_{F}

 w^{1},b^{1}...,w^{l},b^{l} = \theta

  •  梯度检测不要与dropout一起用,关闭dropout用梯度检验进行双重检查
  •  反复训练网络后,再重新运行梯度检验

 Batch vs mini-batch 

向量化可以有效率的同时计算多个样本 

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第10张图片

【深度学习】吴恩达-学习笔记 偏差与方差、正则化、梯度检测、mini-batch_第11张图片

 如果训练集中样本数量m = 5000000,每个mini_batch包含5000个样本,则一共有1000个mini_batch,每次同时处理的是这5000个mini_batch中的X和y。mini_batch进行一次遍历训练集迭代,可以进行5000次梯度下降,得到5000个梯度。

选择mini_batch的size:

mini_batch size = m,其实就是批量梯度下降( Batch),迭代一次耗费时间太长

mini_batch size = 1,则为随机梯度下降,失去向量化带来的加速,效率低下

mini_batch size应该处于1-m之间。

你可能感兴趣的:(深度学习,算法,机器学习,人工智能)