Course 2-Improving Deep Neural Networks--Week 3
来源:互联网 发布:hiddns域名注册 编辑:程序博客网 时间:2024/06/05 05:28
超参数调试 、batch normalization 、deep learning framework
3.1 tuning process
- 在调参时,有些参数会比其他参数重要的多,以下列出一些调参的guidelines:
1、最重要的参数:学习率
α
2、次重要的参数:momentum中的β (0.9就不错)、#hidden units、mini-batch size
3、再次重要的参数:#layers、learning rate decay、Adam中的β1 、β2 、ε (事实上Ng从来不调Adam中的参数,总是让他们等于0.9、0.99、1e-8)
如何系统的组织超参数搜索过程?
1、在参数空间随机选取参数,这样可以尝试不同的参数,从而确定哪一组参数最好。
2、由粗到细的搜索参数。首先在参数空间随机粗略的选取,确定哪一组性能好,然后再最优参数的周围,更密集的采样,选取参数。
3.2 using an appropriate scale to pick hyperparameters
随机采样,并不意味着随机均匀采样,而是选取合适的尺度或标尺来采样,本小节将讨论这个问题。
对于有些参数,如#hidden units、layers,它们用随机均匀采样是可以的。
但是,对于学习率
r=-4*np.random.rand()learning_rate = 10**r ##learning_rate = np.power(10,r)
3.3 调参实践
如果计算资源比较紧张,就用方法一;如果计算资源丰富,就用方法二。
方法一:每次只训练一个模型,不断地调试。
方法二:每次训练多个模型,设置不同的参数,看那个参数集合效果好。
3.4 normalizing activations in a network
batch normalization 使得参数搜索问题更简单,也使得模型更鲁棒,还会使你更容易的训练深层次网络。
batch normalization 原理:
在logistics regression中,介绍了标准化输入可以加速模型训练。那么,在深层次的网络中,我们除了标准化输入
上图左边的四个公式就是batch normalization的具体实现,这里的
3.5 fitting batch norm into a neural network
本小节描述在神经网络中怎么实现batch normalization。如下图所示,在每一个隐层中,当计算得到Z后,我们先不直接计算A,而是使用batch normalization,通过参数
当使用了batch normalization后,我们算法的参数有W、b、
在实践中,batch norm经常和训练集的mini-batch一起使用。实现时,在每一个mini-batch
在实现时,有一点要注意,因为
还有一点是,
最后再总结下在gradient descent中如何使用batch norm,如下图中所示。其中,优化算法不一定要用梯度下降法,还可以使用momentum、RMSprop、Adam等等。
3.6 why does batch norm work?
first
与标准化输入差不多,batch norm通过将隐藏层中输入的各个维度的特征调整到差不多的范围,可以加快学习速率。
second
batch norm使得神经网络中更深层的权重比前面隐层中的权重对变化更具有鲁棒性。如何理解这句话呢?举个例子:在猫脸识别问题上,我们的训练集是黑猫VS非猫,但是训练完成后,我们的测试集是包含有其他颜色猫的图像,这时候模型可能就无法工作的很好。也就是说,若我们的训练集数据只能表达出我们想要模式的一部分(其他的部分模式在测试机数据中),那么我们就无法期望在训练数据集上性能表现良好的模型在测试集上也表现的很好。如下图所示,绿色的曲线表示我们想要的模式,左图表示训练数据能表达的模式,其分界线很可能是一条直线,而右图表示测试数据的分布,它含有左图数据表达不了的模式,显然能把左图数据分开的分界线是无法正确分开右图中的数据的。
这样,从左图到右图,数据的分布变了,这种现象有个名字,叫covariate shift。思想是,如果已经学习了从X到Y的映射,但是后来X的分布改变了,那么就需要重新学习算法了,即便ground truth function没有改变(如图中绿色曲线所示)。
那么,covariate shift 问题怎样应用于神经网络呢?
对于上图所示神经网络,我们考虑第3层,它的输入是
而batch norm所做的就是减少了隐藏单元变量分布的数量。即
batch norm还有轻微的正则化的作用,
由于均值和方差不是在完整的训练集上计算的,因此,这样的结果有点小噪声,那么从
3.7 batch norm at test time
前面介绍了batch norm每次针对一个mini-batch计算均值和方差,但是,当我们在测试模型或使用模型做预测的时候,我们每次只输入一个数据点,这时候,我们怎么得到batch norm所需要的均值和方差呢?
典型的batch norm实现中,使用指数加权平均来估计均值和方差。具体的,对于mini-batch
估计batch norm中每层
batch norm的应用,使得我们可以构建更深的神经网络,也使得我们的学习算法可以学习的更快。
3.8 多类分类——softmax
softmax的计算过程如下图所示:一般在网络的最后一层,按照之前一样计算Z,然后,我们需要一个临时变量t,保存对Z逐元素进行指数操作后的结果,然后得到a
之前已经学习到,logistic regression的分类面是线性的,那么,没有隐含层的softmax分类面是什么样的呢?下图画出了多类情况下,softmax的分类面。
3.9 train a softmax classifier
softmax的实现流程如下图左部分所示。其中,与softmax相对应的是“hardmax”:将向量中最大的元素映射为1,其余映射为0。
那么,softmax的损失函数又是什么样子的呢?如下图中间部分所示。同时还要明确,如果softmax是个四类问题,那么
使用softmax层怎样实现梯度下降法?如下图所示,我们需要知道
3.10 deep learning frameworks
3.11 TensorFlow
- Course 2-Improving Deep Neural Networks--Week 3
- Course 2-Improving Deep Neural Networks--Week 2
- Course 2-Improving Deep Neural Networks--Week 1
- COURSE 2 Improving Deep Neural Networks Hyperparameter tuning, Regularization and Optimization
- Course 4-Convolutional Neural Networks--Week 3
- Course 4-Convolutional Neural Networks--Week 2
- Improving Deep Neural Networks Initialization 参考答案
- Improving Deep Neural Networks Regularization 参考答案
- Improving Deep Neural Networks Gradient Checking 参考答案
- Improving Deep Neural Networks学习笔记(一)
- Improving Deep Neural Networks学习笔记(二)
- Improving Deep Neural Networks Optimization Methods Homework
- Improving Deep Neural Networks学习笔记(三)
- Improving Deep Neural Networks Tensorflow 参考答案
- Course 4-Convolutional Neural Networks--Week 1
- Course 4-Convolutional Neural Networks--Week 4
- COURSE 1 Neural Networks and Deep Learning
- Coursera Deep Learning 第2课 Improving Deep Neural Networks 第一周 测验题 Practical aspects of deep learning
- 反射--获取和调用构造器
- Ubuntu下Laravel的开发环境安装及部署(Vagrant + Homestead)
- DB2 with的定义与用法
- HTML动画滑动图片特效
- Java 多线程 (PART XIX) 使用Condition实现线程的顺序执行
- Course 2-Improving Deep Neural Networks--Week 3
- 文章标题
- Itext7的字体导入
- 最牛干货 就问你敢不敢“看”
- 苹果首席设计师:iPhone X 耗时五年,设计要等技术赶上
- C# 正则表达式
- 如何学习自然语言处理:一本书和一门课
- 第四周项目 项目5
- Spring MVC之@RequestBody, @ResponseBody 详解