改善深层神经网络(一)深度学习的实用层面

1、L 层神经网络正则化:

(1)L2 正则化:

(2)为什么正则化可以避免过拟合?

当 lambda 足够大时,最小化 J 时,就会使得权重矩阵 w 趋近于0,神经网络简化为高偏差状态:

lambda 较大,w 较小,由 z = w * a + b,z 也较小,以 tanh 函数为例:

当 z 在较小的阶段,函数 g(z) 趋近于线性. 如果每一层都趋近线性,该网络为线性网络,不会产生过拟合的情况.

(3)dropout正则化(随机失活):

神经网络的每一个节点都含有 p 的概率失活,如下图:

简化连线,得到一个节点更少,规模更小的网络:

实现代码如下:

对于第3层进行随机失活,keep_prob = 0.8(保留某个隐藏单元的概率,即消除一个隐藏单元的概率为0.2),不同层的keep_prob可以不同.

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

a3 = np.multiply(a3, d3)  #过滤掉失活的节点

a3 = a3 / keep_prob  #弥补过滤掉的20%,使得 a3 的期望值不变

(4)其它正则化方法:

① 扩大数据集;

② 提早结束迭代:

(5)正则化输入:

① 零均值化:

μ = 1 / m * ∑x(i)

x = x - μ

② 方差归一化:

σ² = 1 / m * ∑(x(i)

x = x / σ²

③ 为什么要正则化输入?

非正则化的输入可能导致代价函数的图像偏于细长,如 x1 的取值1-1000,而 x2 的取值仅有0-1. 正则化输入后,代价函数看起来更对称.

下图可以看到非正则化的梯度下降较为曲折,而正则化的梯度下降较快.

2、Vanishing / Exploding gradients(梯度消散与梯度爆炸):

(1)举例描述:

假设:g(z) = z; b[l] = 0.

y = w[L]w[L-1]w[L-2] ... w[2]w[1]x

(2)解决方案:权重初始化

由 z = w1x1 + w2x2 + ... + wnxn

随着 n 的增大,期望的 w[l] 越小,由此设置 Var(w[l]) = 1/n 或者 2/n(效果更好),即:

w[l] = np.random.randn(shape) * np.sqrt(2/n[l-1])

3、梯度检验:

(1)梯度的数值逼近:

双边误差公式更准确,可以用来判断 g(θ) 是否实现了函数 f 的偏导.

(2)神经网络的梯度检验:

① 将 W[1],b[1],...,W[L],b[L] 从矩阵转为一个向量 θ;

② 将 dW[1],db[1],...,dW[L],db[L] 从矩阵转为一个向量 dθ;

③ J = J(θ1, θ2, ..., θi, ...)

for each i :

  dθapprox[i] = (J(θ1, θ2, ..., θ+ ε, ...) - J(θ1, θ2, ..., θ- ε, ...)) / (2 * ε)

  check dθapprox[i] ≈ dθ[i] by calculate || dθapprox[i] - dθ[i] ||2  / (|| dθapprox[i] ||2 + || dθ[i] ||2)  < 10^-7(或其他误差阈值)

(3)梯度检验注意点:

① 检测完关闭梯度检验;

② 检查是否完成了正则化;

③ 不适用于dropout;

④ 检查是否进行了随机初始化.

原文地址:https://www.cnblogs.com/orangecyh/p/11810840.html

时间: 2024-07-31 01:33:34

改善深层神经网络(一)深度学习的实用层面的相关文章

吴恩达-深度学习-课程笔记-6: 深度学习的实用层面( Week 1 )

1 训练/验证/测试集( Train/Dev/test sets ) 构建神经网络的时候有些参数需要选择,比如层数,单元数,学习率,激活函数.这些参数可以通过在验证集上的表现好坏来进行选择. 前几年机器学习普遍的做法: 把数据分成60%训练集,20%验证集,20%测试集.如果有指明的测试集,那就用把数据分成70%训练集,30%验证集. 现在数据量大了,那么验证集和数据集的比例会变小.比如我们有100w的数据,取1w条数据来评估就可以了,取1w做验证集,1w做测试集,剩下的用来训练,即98%的训练

吴恩达深度学习课程第二课-改善深层神经网络

第一周 深度学习的实用层面 1.1 训练,配置,测试训练集 学习完如何构建神经网络,接下来学习如何高效运行神经网络 数据集划分: train,dev,test: 在train中训练模型,利用dev选择最佳模型,利用test测试最终模型 1.2 偏差Bias,方差Variance 欠拟合(高偏差),过拟合(高方差) 1.3 处理欠拟合,过拟合方案 1.4 正则化Regularization 原文地址:https://www.cnblogs.com/nrocky/p/12114269.html

改善深层神经网络:超参数调试、正则化及优化

第一周   深度学习的实用层面 1.1 训练.验证.测试集 应用机器学习是个高度迭代的过程:想法--->编码--->实验 (1)神经网络的层数 (2)隐含层神经元个数 (3)学习率 (4)激励函数 小规模数据:训练集70%,验证集30%   或者 训练60% 验证20% 测试20% 大规模数据:训练90%以上 注:可以没有测试集,验证集用于检测各种算法模型,选出最好的,验证集和测试集必须来源于同一分布 1.2 偏差.方差 人眼识别错误率(最优误差,贝叶斯误差)0%左右,训练集验证集来源于同一分

(转)神经网络和深度学习简史(第一部分):从感知机到BP算法

深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chenxiaoqing.范娜Fiona.杨超.微胖.汪汪.赵巍 导读:这是<神经网络和深度学习简史>第一部分.这一部分,我们会介绍1958年感知机神经网络的诞生,70年代人工智能寒冬以及1986年BP算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,

神经网络与深度学习——《机器学习及应用》汪荣贵 机械工业出版社

摘录自<机器学习及应用>汪荣贵 机械工业出版社 总结了一些神经网络与深度学习中的一些网络介绍. 1.神经元与感知机 (1)关于激活函数 (2)MLP MLP模型的网络结构没有环路或回路,故是一类前馈网络模型.MLP模型中隐含层的层数可为一层也可为多层.对于MLP模型和BP神经网络这样包含多个数据处理层的前馈网络模型而言,其参数更新过程通常较为复杂.这是因为这类模型的最终输出与之前多层的连接权重相关,相当于多层嵌套的函数.若直接使用类似于梯度下降的优化方法对模型进行训练,则无法直接求得各结点所对

神经网络和深度学习-学习总结

1. 简介 神经网络和深度学习是由Michael Nielsen所写,其特色是:兼顾理论和实战,是一本供初学者深入理解Deep Learning的好书. 2. 感知器与sigmoid神经元 2.1 感知器(Perceptrons) 感知器工作原理:接收一系列二进制输入,经过特定的规则计算之后,输出一个简单的二进制. 计算规则:通过引入权重(weights)表示每个输入对于输出的重要性,则有 记w?x=∑jwjxj,b=-threshold,则有 其w是权重,b是偏差. 2.2 Sigmoid神经

吴恩达 DeepLearning.ai课程笔记(1-3)神经网络和深度学习 --- 浅层神经网络

以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第一部分<神经网络和深度学习>第二周课程部分关键点的笔记.笔记并不包含全部小视频课程的记录,如需学习笔记中舍弃的内容请至 Coursera 或者 网易云课堂.同时在阅读以下笔记之前,强烈建议先学习吴恩达老师的视频课程. 1. 二分类问题 对于二分类问题,大牛给出了一个小的Notation. 样本:  ,训练样本包含  个: 其中  ,表示样本 包含 个特征:  ,目标值属于0.1分类: 训练数据:  输入神经网络时

《神经网络与深度学习》(四) 受限玻尔兹曼机

转自:http://blog.csdn.net/qiao1245/article/details/50932519 谈到神经网络,就不得不提到最近非常火的深度学习.那么什么是深度学习?它与神经网络的关系是什么?深度学习的基本原理和常用算法是什么?我将在这篇中详细解答. 什么是深度学习 深度学习来源于人工神经网络,它的思想是组合低层次的特征从而构建出更加抽象的深层次特征.深度学习的概念由Hinton等人于2006年提出, 它是一个新的机器学习领域,通过更"深"层次的训练,它可以更加良好的

数据分析、数据挖掘、机器学习、神经网络、深度学习和人工智能概念区别(入门级别)

数据分析, 就是对数据进行分析, 得出一些结论性的内容, 用于决策. 分析什么哪? 根据分析现状. 分析原因. 预测未来. 分析现状和分析原因, 需要结合业务才能解释清楚. 用到的技术比较简单, 最简单的数据分析工具就是 Excel. 预测未来指的是分析未来一段时间的销售额之类的. 在预测未来方面, 一般用到数据挖掘的技术了. 数据挖掘, 从字面意思上看, 是从数据中挖掘出有价值的信息. 比如, 超市通过对一段时间的客户消费记录能发现, 哪些物品经常被顾客一起购买. 那么, 就可以把这些物品摆放