训练、验证、测试

划分的量

  • If size of the dataset is 100 to 1000000 ==> 60/20/20
  • If size of the dataset is 1000000 to INF ==> 98/1/1 or 99.5/0.25/0.25

要保证数据来自一个分布

偏差方差分析

如果存在high bias

  • 尝试用更大的网络
  • 尝试换一个网络模型
  • 跑更长的时间
  • 换不同的优化算法

如果存在high variance

  • 收集更多的数据
  • 尝试正则化方法
  • 尝试一个不同的模型

一般来说更大的网络更好

正则化

正则化减少过拟合的intuition

太大会导致其为0

Dropout

  • 原始的dropout

  • Inverted Dropout

    我们稍微将 Dropout 方法改进一下,使得我们只需要在训练阶段缩放激活函数的输出值,而不用在测试阶段改变什么。这个改进的 Dropout 方法就被称之为 Inverted Dropout 。比例因子将修改为是保留概率的倒数,即

dropout分析

  • 因为我们不能够过分依赖一个特征,dropout可以一定程度将权重分出去
  • 我们可以在不同的层设置不同的dropout
  • 输入层的dropout应该接近1,因为我们需要从中学习信息
  • CNN中dropout广泛应用
  • dropout带来的问题是调试困难,通常我们需要关掉dropout调试,确认无误再继续用dropout

其它正则化方法

数据增加(data augmentation)

就是通过一些变换得到新的图片(这种其实是在图像领域最为广泛应用,但是思想可以推广)

early stopping

就是在迭代中选择验证错误不再降低的点



好处是不用调超参,坏处是it makes us think about something else more than optimize W's and b's.

ensemble

训练多个模型,组合

可以带来2%左右的提升,减少泛化误差

归一化输入

归一化可以加速训练

归一化的步骤

  • 计算均值
  • 所有数据减去均值
  • 计算方差
  • x/=variance

归一化应该应用于:训练、验证、测试

梯度消失/爆炸

这是训练深度学习难的一个点

权重初始化

是解决梯度消失/爆炸的一个部分的解决方案

对于sigmoid和tanh

np.random.rand(shape)*np.sqrt(1/n[l-1]) 

对于relu

np.random.rand(shape)*np.sqrt(2/n[l-1]) #n[l-1] In the multiple layers.

一个方差是1/Nx" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">1/Nx,另一个是2/Nx" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">2/Nx

通过数值近似计算梯度

  • 注意添加正则项的损失函数

优化算法

mini-batch

  • 为了利用向量化,batch大小应该是2的指数
  • 注意CPU/GPU内存大小

momentum

计算权重的指数加权平均

RMSprop

Root mean square prop



使用这个算法可以选择较大的学习率

Adam

Adaptive Momentum Estimation。其实就是把rmsprop和momentem放一起了,另加了一个纠正

{vdW[l]=β1vdW[l]+(1−β1)∂J∂W[l]vdW[l]corrected=vdW[l]1−(β1)tsdW[l]=β2sdW[l]+(1−β2)(∂J∂W[l])2sdW[l]corrected=sdW[l]1−(β1)tW[l]=W[l]−αvdW[l]correctedsdW[l]corrected+ε" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">{vdW[l]=β1vdW[l]+(1−β1)∂J∂W[l]vdW[l]corrected=vdW[l]1−(β1)tsdW[l]=β2sdW[l]+(1−β2)(∂J∂W[l])2sdW[l]corrected=sdW[l]1−(β1)tW[l]=W[l]−αvdW[l]correctedsdW[l]corrected+ε

其中推荐β1=0.9" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">β1=0.9, β2=0.999" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">β2=0.999, ϵ=10−8" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">ϵ=10−8

深度神经网络中的主要问题不是局部最小点,因为在高维空间中出现局部最优的可能性很小,但是很容易出现鞍点,鞍点会导致训练很慢,所以上面的几个方法会很有用

调参

顺序

Learning rate.

Mini-batch size.

No. of hidden units.

Momentum beta.

No. of layers.

Use learning rate decay?

Adam beta1 & beta2

regularization lambda

Activation functions

批规范化Batch Normalization

可以加速训练

和前面的对于输入数据的处理不一样,这里考虑的是对于隐层,我们能否对A[l]进行操作,使得训练加快。



这里γ" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">γ和β" role="presentation" style="font-size: 100%; display: inline-block; position: relative;">β是参数



解决了梯度弥散的问题

批规范化其实做了一点正则化的工作,如果你希望减弱这种效果可以增大批大小。

测试用需要估计均值和方差

Reference

https://github.com/mbadry1/DeepLearning.ai-Summary

课程回顾-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization的更多相关文章

  1. 课程二(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 ...

  2. 课程二(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 ...

  3. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第一周(Practical aspects of Deep Learning) —— 4.Programming assignments:Gradient Checking

    Gradient Checking Welcome to this week's third programming assignment! You will be implementing grad ...

  4. 《Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization》课堂笔记

    Lesson 2 Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization 这篇文章其 ...

  5. 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 ...

  6. [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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader(摘)

    概述 对于每一个底层资源,比如文件系统中的一个文件,classpath上的一个文件,或者一个以URL形式表示的网络资源,Spring 统一使用 Resource 接口进行了建模抽象,相应地,对于这些资 ...

  2. asp.net 抽象方法和虚方法的用法区别,用Global类重写Application_BeginRequest等方法为例子

    不废话,直接贴代码 public abstract class LogNetGlobal : System.Web.HttpApplication { protected void Applicati ...

  3. Exp2后门原理与实践_20154305 _ 齐 帅

    Exp2后门原理与实践 20154305 _ 齐 帅 2.1简单后门 一.后门工具介绍 1.netcat(nc.ncat) 是一个底层工具,进行基本的TCP UDP数据收发.常被与其他工具结合使用,起 ...

  4. idea与maven整合

    1.官网下载 apache-maven-3.3.3 2.解压安装后配置conf-settings文件 a. <localRepository>E:\JAVA\maven_cangku< ...

  5. 如何定制 antd 的样式(theme)

    > antd 的组件样式(主题)是支持定制的,它的样式实现是基于 less.官方的订制手册参看 https://github.com/ant-design/ant-design/blob/mas ...

  6. C++中_cplusplus及Extern "C"的理解

    一.意义 Extern "C":告诉编译器,这部分代码按C语言的方式进行编译,而不是C++的.   _cplusplus:.cpp文件默认定义的宏.用来判断是否为.cpp文件. 二 ...

  7. Django积木块三——静态文件和上传文件

    静态文件和上传的文件 # 静态文件 STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) # ...

  8. MFC图片操作

    根据MFC要操作图片的来源,可分为以下两类: 一.非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) 二.动态载入图片(即只需要在程序中指定图片的路径即可载入) 一.非动态显示图片 1.传送 ...

  9. FPGA定点小数计算中截位形式的探讨

    在FPGA设计过程中难免会碰到需要进行截位,那定点小数的计算过程中我们需要注意些什么呢? 首先,我们考虑如下计算式. sin cos 数据形式是 FIX_32_30 X Y Z 数据形式是 FIX_3 ...

  10. java基础点总结

    基础知识这种东西,没注意到的永远比想象中多.大部分都是在面试中问到的... 1.static关键字 变量,方法修饰;静态代码块;静态内部类; 静态导入:import static ,静态方法省略类名, ...