Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization(第一周)深度学习的实践层面 (Practical aspects of Deep Learning)
1. Setting up your Machine Learning Application
1.1 训练,验证,测试集(Train / Dev / Test sets)


1.2 Bias/Variance(偏差和方差)
- 高偏差(high bias)称为"欠拟合"(underfitting), 练集误差与验证集误差都高.
- 高方差(high variance)称为过拟合(overfitting), 训练集误差很低而验证集误差很高.


1.3 Basic "recipe" for Machine learning
1.31 High bias(高偏差)
- 更大的神经网络
1.32 High Variance(高方差)
- 更多数据
- 正则化
- CNN
2. Regularizing your neural network(发生过拟合—高方差)
2.1 L2正则化(权重衰减)




正则项说明,无论$w^[l]$是什么,我们都试图使之更小(趋于0)。则计算得的 $z[l]=w[l]a[l−1]+b[l]$ 更容易(以tanh例)落在激活函数 $g(z[l])$ 中间那一段接近线性的部分, 以达到简化网络的目的(线性的激活函数使得无论多少层的网络, 效果都和一层一样)。
注意:J(..)代价函数,需要加上 $\frac{\lambda}{m}w^{[l]}$

2.2 随机失活(Dropout)正则化

对每一轮的训练, Dropout 遍历网络的每一层, 设置神经网络中每一层每个节点的失活概率, 不参与本轮的训练, 于是得到一个更小的网络.
最常用的为 反向随机失活(Inverted Dropout).

该方法在向前传播时, 根据 随机失活的概率 (例如0.2), 将每一层(例如 $l$层)的 $a^{[l]}$ 矩阵($a=g(z)$)中被选中失活的元素置为0,则该层的 $a^{[l]}$ 相当于少了 20% 的元素. 为了不影响下一层 $ z^{[l+1]} $ 的期望值, 我们需要 $a^{[l]}$ /= 0.8 以修正权重.
由于训练时的 "$a^{[l]}$ /= 0.8" 修复了权重, 在测试阶段无需使用 Dropout。
注:Dropout 不能与梯度检验同时使用, 因为 Dropout 在梯度下降上的代价函数J难以计算.
3. 归一化(Normalizing)
训练神经网络,其中一个加速训练的方法就是归一化输入。假设一个训练集有两个特征,
输入特征为 2 维,归一化需要两个步骤:(一些特征0~1,一些0~1000)
零均值化:
μ $ =\frac{1}{m}\sum^m_{i=1}x^{(i)} $;
$ x:=x-μ $

归一化方差:
ρ $ ^2=\frac{1}{m}\sum^m_{i=1}x^{(i)}**2 $
x /= ρ^2

归一化直观的理解就是使得代价函数更圆, 更容易优化代价函数.
4. 梯度消失/爆炸(Vanishing / Exploding Gradients
为了方便理解,假设使用了线性激活函数 g(z)=z , 且:

可知若 $W$ 中有元素权重为 1.5 , 则最终得到 $1.5^{L-1}$ , 若层数很深, 计算得 $yˆ \hat{y}$ 也很大; 同理,若权重为 0.5 , 进行 $L−1$次幂运算后值会很小. 这便是梯度爆炸与梯度消失.
有效的解决方案:由于 $z=w1x1+w2x2+...+wnxn$ (忽略 b), 为了预防 $z$太大或太小, 则$n$ 越大时, 期望 $w_i$ 越小, 则在随机(0~1)初始化$W$ 时, 我们对其乘上一个小于1的倍数, 使之更小。
对于Tanh, 权重乘上 $\sqrt{\frac{1}{n^{[l-1]}}} $, 或者 $ \sqrt{\frac{2}{n^{[l-1]}+n^{[l]}}}$
对于Relu, 权重乘上 $\sqrt{\frac{2}{n^{[l-1]}}} $
5. 梯度检验
在反向传播的时候, 如果怕自己 $d\theta[i] = \frac{\partial J}{\partial \theta_i}$ 等算错, 可以用导数的定义, 计算:
$d\theta_{approx}[i] = \frac{J(\theta_1, \theta_2,..., \theta_i + \varepsilon, ...) - J(\theta_1, \theta_2, ..., \theta_i - \varepsilon, ...)}{2\varepsilon}$
然后根据两者误差估计自己是否算错. 该方法仅用来调试, 且不能同 Dropout 同时使用.
Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization(第一周)深度学习的实践层面 (Practical aspects of Deep Learning)的更多相关文章
- 吴恩达《深度学习》-第二门课 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)-第一周:深度学习的实践层面 (Practical aspects of Deep Learning) -课程笔记
第一周:深度学习的实践层面 (Practical aspects of Deep Learning) 1.1 训练,验证,测试集(Train / Dev / Test sets) 创建新应用的过程中, ...
- 《Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization》课堂笔记
Lesson 2 Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization 这篇文章其 ...
- [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
About this Course This course will teach you the "magic" of getting deep learning to work ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Initialization)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. Initialization Welcome to the first assignment of "Improving D ...
- 吴恩达《深度学习》-课后测验-第二门课 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)-Week 1 - Practical aspects of deep learning(第一周测验 - 深度学习的实践)
Week 1 Quiz - Practical aspects of deep learning(第一周测验 - 深度学习的实践) \1. If you have 10,000,000 example ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Assignment(Optimization Methods)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. 请不要ctrl+c/ctrl+v作业. Optimization Methods Until now, you've always u ...
- Coursera, Deep Learning 2, Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Course
Train/Dev/Test set Bias/Variance Regularization 有下面一些regularization的方法. L2 regularation drop out da ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments
Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第二周(Optimization algorithms) —— 2.Programming assignments:Optimization
Optimization Welcome to the optimization's programming assignment of the hyper-parameters tuning spe ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Gradient Checking)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. Gradient Checking Welcome to the final assignment for this week! In ...
随机推荐
- mysql 导入sql 2006 - mysql server has gone away 导入
解决办法:找到你的mysql目录下的my.ini配置文件,加入以下代码 max_allowed_packet=500M wait_timeout=288000 interactive_timeout ...
- 洛谷CF264D Colorful Stones(子序列匹配,思维)
洛谷题目传送门 神仙思维题. 对于两个字符串的匹配问题,似乎之前蒟蒻写的HAOI2010最长公共子序列题解中提到的建网格图模型是一种套路? 给一个稍微强一点的样例(把字母换成了ABC) AABCB B ...
- NOIP经典基础模板总结
date: 20180820 spj: 距离NOIP还有81天 目录 STL模板: priority_queue 的用法:重载<,struct cmpqueue 的用法 stack 的用法vec ...
- 一种使用 emwin 绘制图片的方法
@2018-12-10 [小记] 使用官方 <GUIBuilder.exe> 软件里的 Image 控件,注意格式为 .bmp,这种方式是将图片数据直接转为十六进制数据存储至静态区 具体使 ...
- DHU--1247 Hat’s Words && HiHocder--1014 Trie树 (字典树模版题)
题目链接 DHU--1247 Hat’s Words HiHocder--1014 Trie树 两个一个递归方式一个非递归 HiHocoder #include<bits/stdc++.h> ...
- P1966 火柴排队
这道题需要小小的思考一波 (然而我思考了两节课) 好,我们先得出一个结论:a中第k大的与b中第k大的一定要排在一起,才能保证最小. 然后发现:挪a,b其实没有区别,故我们固定a,挪b. 然后我们就思考 ...
- 【CF263D】Cycle in Graph
题目大意:给定一个 N 个点,M 条边的无向图,保证图中每个节点的度数大于等于 K,求图中一条长度至少大于 K 的简单路径,输出长度和路径包含的点. 题解:依旧采用记录父节点的方式进行找环,不过需要记 ...
- Vue中data返回对象和返回值的区别
速记:粗浅的理解是,事件的结果是影响单个组件还是多个组件.因为大部分组件是要共享的,但他们的data是私有的,所以每个组件都要return一个新的data对象 返回对象的时候 <!DOCTYPE ...
- Codeforces Round #525 (Div. 2)
Codeforces Round #525 (Div. 2) 哎,忍不住想吐槽一下,又要准备训练,又要做些无聊的事,弄得我都想退出了. 好好的训练不好么???? 只能做出两道水题,其实C题,感觉做出来 ...
- HTML5(FileRdeader)
主要作用: 异步读取存储在用户计算机上的文件(或原始缓冲区的内容),使用File或Blob对象指定要读取的文件或数据.其中File是input元素上选择文件后返回的FileList对象,也可以是拖放操 ...