04-(第二课)第一周笔记:深度学习的实用层面

1. 训练,验证,测试集

iteration
创建新应用的过程中,我们不可能从一开始就准确预测出这些信息和其他超参数。实际上,应用型机器学习是一个高度迭代的过程,通常在项目启动时,我们会先有一个初步想法,比如构建一个含有特定层数,隐藏单元数量或数据集个数等等的神经网络,然后编码,并尝试运行这些代码。根据输出结果重新完善自己的想法,改变策略,为了找到更好的神经网络不断迭代更新自己的方案。

因此循环该过程的效率是决定项目进展速度的一个关键因素,而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率。

set
我们通常将数据划分成几部分,一部分作为训练集(training set),一部分作为简单交叉验证集(Hold-out cross validation),有时也称为验证集(development set),方便起见就叫它验证集(dev set),其实都是同一个概念,最后一部分则作为测试集(test set)
工作流程: 1、首先对训练集执行训练算法(训练集会运行在不同的模型上, 得到不同模型的W,b参数). 2、通过验证集选择不同模型中表现最好的. 3、最后在测试集上对最好的模型进行无偏评估(步骤1、2是反复的尝试不同得到模型,最后得到最好的模型).
数据划分: 数据集规模相对较小,适用传统的划分比例,数据集规模较大的,验证集和测试集要小于数据总量的20%或10%。

distribution
现代深度学习的一个趋势是越来越多的人在训练集和测试集分布不匹配的情况下进行训练。针对这种情况,根据经验,建议大家要确保验证集和测试集的数据来自同一分布。

最后一点,就算没有测试集也不要紧,测试集的目的是对最终所选定的神经网络系统做出无偏估计,如果不需要无偏估计,就可不设置测试集。所以我们要做的就是,在训练集上训练,尝试不同的模型框架,在验证集上评估这些模型,然后迭代并选出适用的模型。
在机器学习中,如果只有一个训练集和一个验证集,而没有独立的测试集,遇到这种情况,训练集还被人们称为训练集,而验证集则被称为测试集,不过在实际应用中,人们只是把测试集当成简单交叉验证集使用,并没有完全实现该术语的功能,因为他们把验证集数据过度拟合到了测试集中。

2. 偏差,方差

biasvariance
在多维空间数据中,绘制数据和可视化分割边界无法实现,但我们可以通过几个指标,来研究偏差和方差。
cat
以上分析的前提都是假设基本误差(贝叶斯误差)很小,训练集和验证集数据来自相同分布(如果不是来自相同分布即使不存在过拟合它们之间的差距依然可能很大),如果没有这些假设作为前提,分析过程更加复杂。

3. 机器学习基础

recipe
初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高(训练集或训练数据的性能)。甚至无法拟合训练集,那么就要选择一个新的网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多时间来训练网络,或者尝试更先进的优化算法。直到解决掉偏差问题,这是最低标准,反复尝试,直到可以拟合(或者过拟合)训练集。

一旦偏差降低到可以接受的数值,检查一下方差有没有问题,为了评估方差,我们要查看验证集性能。如果方差高,最好的解决办法就是采用更多数据,但有时候,无法获得更多数据,可以尝试通过正则化来减少过拟合。

4. 正则化

logistic
L2 正则化: w 欧几里德范数的平方等于wj j 从1到nx)平方的和.
L1 正则化:求所有 w 绝对值之和.
λ是正则化参数,我们通常使用验证集或交叉验证集来配置这个参数,尝试各种各样的数据,寻找最好的参数.
fnorm
矩阵范数 W[l]2F :定义为矩阵中所有元素的平方求和.矩阵范数被称作“弗罗贝尼乌斯范数”,用下标 F 标注.

该如何使用该范数实现梯度下降呢?
gd norm
增加正则项后,就需要在dW[l]后面加上这一项 λmW[l] . 这也是 L2 正则化有时被称为“权重衰减”的原因.

5. 为什么正则化有利于预防过拟合呢?

regular
直观上理解就是如果正则化参数 λ 设置得足够大,权重矩阵 W 被设置为接近于0的值,于是基本上消除了这些隐藏单元的许多影响。这样更不容易发生过拟合。

6. dropout 正则化

drop
工作流程: dropout会遍历网络中每一层,并设置消除神经网络中节点的概率(可为不同层设置不同保留率,也可同一设置)。对于每个训练样本,都将采用一个精简后神经网络来训练它。

如何实施dropout呢?
invert
有几种方法,我们讲最常用的的方法反向随机失活(inverted dropout) keep-prob它表示保留某个隐藏单元的概率;在l=3的层上演示这个技术如何实现单层的随机失活。向量 d3 用来决定第三层中哪些单元归零( d3 是一个随机矩阵,代表每个样本在 l=3 层上的每个隐藏单元随机值)。接下来要做的就是从第三层获得激活值,我们称为 a3 a3 d3 逐元素相乘这样的作用是对于 d3 中值为0的元素(每个元素有20%的几率取值为0)通过点乘将 a3 中0值对应位置的元素一一清零。 a3 除以keep-prob的作用:为了不影响z[4]的期望值,除以keep-prob它会修正我们所需的那20%, a3 的期望值不会变。反向随机失活(inverted dropout)通过除以keep-prob确保 a3 的期望值不变.
你会发现对于不同的训练样本,在清除某层的神经元也不同。事实上如果你通过相同训练集多次传递数据,那么训练集每次的梯度都将不同。

如何对使用了dropout已训练好的模型进行测试呢?
testdrop
在测试阶段我们不用dropout,如上图所示。这是因为在测试阶段进行预测时不希望输出结果是随机的。

7. 理解 dropout

whywork
让我们看单个神经元,由于特征都有可能被随机清除,所以不能给任何一个输入加上太多权重,对于单元的四个输入只给一点权重;dropout将产生收缩权重的平方范数的效果,和之前的L2正则化类似。
对于不同的层我们可能有不同的dropout率,对于参数比较多的层我们可以把keep_prob设置比较小的值,这个有点像处理L2的正则化参数 λ ;对于输入层我们的keep_prob会接近1。

8. 其他正则化方法

data
early
工作流程: 每执行n次梯度下降后观察验证集误差,如果多个n次验证集误差都没有下降就停止训练。

9. 归一化输入

10. 神经网络的权重初始化

single
relu
tanh激活函数(Xavier初始化): 方差 Var(wi)=1n[l1]
Relu激活函数:方差 Var(wi)=2n[l1]
Yoshua Bengio提出:方差 Var(wi)=2n[l1]n[l]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值