吴恩达深度学习笔记之改善神经网络(一)

本文介绍了改善神经网络的策略,包括训练/验证/测试集的划分,偏差和方差的概念,正则化的重要性,以及Dropout正则化的理解。讨论了归一化输入对加速训练的影响,梯度消失与梯度爆炸的问题,以及梯度检验在调试神经网络中的作用。
摘要由CSDN通过智能技术生成

1.1 Train/dev/test sets

在配置训练,验证,和测试数据集的过程中做出正确决策,会在很大程度上帮助大家创建高效的神经网络。训练神经网络的时候,我们需要做出很多决策。例如:神经网络分多少层,每层包含多少神经元,以及学习速率是多少。
实际上,应用型机器学习是一个高度迭代的过程,下面的示例图可以表示我们训练一个神经网路的过程。

这里写图片描述

当然最佳决策取决于我们拥有的数据量,应用深度学习是一个典型的迭代过程,需要很多次循环往复,才能为应用程序找到一个称心的神经网络,因此循环过程的效率是决定项目进度的关键因素,创建高质量的训练集,验证集,测试集有助于提高循环效率。
在机器 学习的小数据时代,通常做法是将所有数据三七分。如下所示:

这里写图片描述

但是在大数据时代,那么验证集合测试集数据总量的比例会变得更小。

总结一下:

在机器学习中,我们通常将样本分成训练集,验证集和测试集三部分,数据规模相对较小的,适用传统的划分比例,数据规模较大的,验证集合测试集就可以占到20%或10%以下。其次要确保验证集和测试集的数据来自同意分布。

1.2 偏差和方差(bias and variance)

这一节我们对偏差和方差做一个简单的介绍。以一个简单的二分类为例。如下图所示:

这里写图片描述

上图中,第一种就是一种高偏差的情况,我们称之为欠拟合,第二种刚刚好,第三种是高方差的情况,我们称之为过拟合。
我们可以通过以下几个指标来研究偏差和方差,理解偏差和方差的两个关键数据是训练集误差和验证集误差。如下所示:

这里写图片描述

假设训练集误差为1%,但是验证集为误差为11%,此时,我们可能过度拟合了训练集,在某种程度上,验证集并没有充分利用交叉验证集的作用,像这种情况,称为高方差,如果训练集测试集误差都很高,则称为高偏差。也就是说,我们可以通过衡量训练集和验证集误差,我们可以得出不同结论。

注意

以上分析都是假设基本误差很小的情况下,其次训练集数据和测试集数据来自同一分布。

1.3 机器学习基础(Basic “recipe” for machine learning)

训练神经网络时可以用以下的基本方法,即初始模型训练完成后,我们首先妖之道算法的偏差高不高,如果偏差较高,试着评估训练集或训练数据的性能,如果偏差的确很高,甚至无法拟合训练集,那么我们要做的是选择一个新网络,比如含有更多隐藏层或者隐藏单元的网络,或者尝试更先进的优化算法。通常采用规模更大的网络会有用。进行不断尝试,直到解决偏差问题。一旦偏差降低到可以接受的程度,检查一下方差是否有问题,如果方差高,最好的方法是采用更多的数据,其次,我们可以通过正则化来减少过拟合

1.4 正则化(Regularization)

如果我们怀疑神经网络过度拟合了数据,即存在高方差问题,此时又没有更多的数据,那么最先想到的方法是通过正则化来减少过拟合。这也是非常可靠的方法,下面我们来看看正则化的原理。
我们以逻辑回归为例,求成本函数的最小值,如下:

J(w,b)=1mi=1mL(y^(i),y(i))+λ2mw22

加上后面的 λ2mw22 我们称之为L2正则化,L2正则化是最常见的正则化类型,还有一种L1正则化,如下所示:
J(w,b)=1mi=1mL(y^(i),y(i))+λ2mw1

如果用L1正则化,W最终会是稀疏的,也就是说w向量中有很多0,虽然这样与利于压缩模型,因为集合中参数均为0,存储中所占用的内存更少,实际上,却没有降低太多存储内存。
λ 是正则化参数,我们通常使用验证集来配置这个参数,需要尝试各种各样的数据,寻找最好的参数,以上是在逻辑回归上实现正则化,那么如何在神经网络上实现正则化呢?

神经网络实现正则化

神经网络的成本函数如下:

J(w[1],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值