深度学习——超参数调试

1. 超参数的重要性级别:红->桔->紫

2. 如何调整参数

2.1 不要用grid来设置选择,因为不同参数的重要性不同

参数的选择范围从一个比较大的,到后来一个较小的

3. 为超参数选择合适的范围

3.1 uniform选择:如每层的节点数或网络层数。但并不是适用于所有超参数

3.2 scale的方法:比如选择学习率

如果在[0.0001,1]之间均匀选择,那么其实90%的数据是来自于[0.1,1],10%是来自[0.0001,0.1]。所以,更合理的方法应该是

把[0.0001,1]转换成[-4,0] (10^-4 = 0.0001),然后在[-4,0]间取样,这样在[0.0001,0.001]和[0.1,1]间取到的数的概率更平均

更一般地,取对数,然后把区间写成[a,b]

3.3. 指数权重均值的调整

- 为什么直接取[0.9,0.999]是均匀分布不好?因为当b越接近1时,它很小的变化都会对1/(1-b)结果造成更大的影响,下面举了个例子

- 把对b的选择,变成对1-b的考虑,然后再进行approximate scale

4. 超参数的实践:pandas VS canviar

因为数据等各种条件变化,需要经常对参数进行调整

第一种是:pandas( babysitting one model)

一次就关注一个model,然后频繁地进行修改

系统比较复杂时选这个

第二种是:canviar(training many models in parrel)

一次可以并行调试多个model

有比较多的计算资源时选这个

5. 正则化激活函数

对隐藏层的输入进行正则化(而不止是第一个输入层)

实现方式:batch归一化算法。这里默认对z值而不是对a

计算出znorm后,再求一个式子(有两个参数),最后是用z~来计算,而z~的均值和方差可以通过两个参数来控制

6.2 在nn中使用batch-norm 一般框架中会把这个实现好,如tf,只要一个函数即可

6.3 在mini-batch中使用bn:对z值求平均再减去均值,这样b[l]不论是什么值,最后都不会对结果有影响,因此这里可以把b[l]这个参数去掉

6.4

6.5 为什么bn会有用?加速学习

- 归一化:与输入归一化的作用一致

- 就某一层来说,它的上一层对它的输入会发生变化,但是通过归一化,可以使得这个变化被限制在一定的范围内,使得层与层之间可以稍微独立一点

下面这个例子是说对黑色的猫进行训练,然后以有色猫作为输入进行测试(covariance shift)

- 会产生一些噪音,会有正则化的效果?

6.6 在测试中使用bn

训练时,bn是需要在整个mini-batch上执行,但测试时可能不能一次同时执行整个mini-batch(样本数量比较大),因此需要另外的方法进行估算

方法:指数权重平均值

7. softmax回归

分类的类型有多种(二分分类就两种)

使用softmax激活函数:和前面不同的是,它的输入和输出都是向量,前面只是实数;对输出结果归一化,输出的概率之和为1

当只有一个层(没有隐藏层时),任何两个分类间的决策都是线性的

7.2 训练一个softmax网络

相对于hard max,是把最可能的结果标记为1,其它为0, softmax是通过概率大小来体现

损失函数的定义

为什么back是这样的? dz = yhat - y???

原文地址:https://www.cnblogs.com/coolqiyu/p/8598150.html

时间: 2024-08-25 14:56:20

深度学习——超参数调试的相关文章

深度学习之超参数调试

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 超参数调试 在深度学习中,超参数有很多,比如学习率α.使用momentum或Adam优化算法的参数(β1,β2,ε).层数layers.不同层隐藏 单元数hidden units.学习率衰退.mini=batch的大小等.其中一些超参数比其他参数重要,其优先级可以分为以下几级,如图,红色 框最优先,橙色次之,紫色再次之,最后没有框住的一般直接取经验值(当然你也可以自己取). 那么如何来调试超参数呢? 以下图的2维超参数为

吴恩达《深度学习》第二门课(3)超参数调试、Batch正则化和程序框架

3.1调试处理 (1)不同超参数调试的优先级是不一样的,如下图中的一些超参数,首先最重要的应该是学习率α(红色圈出),然后是Momentum算法的β.隐藏层单元数.mini-batch size(黄色圈出).再之后是Layer.learning rate decay(紫色圈出).最后是Adam算法中的β1.β2.ε. (2)用随机取值代替网格点取值.下图左边是网格点取值,如果二维参数中,一个参数调试的影响特别小,那么虽然取了25个点,其实只相当于取了5个不同的点:而右图中随机取值取了多少个点就代

吴恩达-深度学习-课程笔记-8: 超参数调试、Batch正则化和softmax( Week 3 )

1 调试处理( tuning process ) 如下图所示,ng认为学习速率α是需要调试的最重要的超参数. 其次重要的是momentum算法的β参数(一般设为0.9),隐藏单元数和mini-batch的大小. 第三重要的是神经网络的层数和学习率衰减 adam算法的三个参数一般不调整,设定为0.9, 0.999, 10^-8. 注意这些直觉是ng的经验,ng自己说了,可能其它的深度学习研究者是不这么认为的. 那么如何选择参数呢?下面介绍两个策略,随机搜索和精细搜索. 早一代的机器学习算法中,如下

第九节,改善深层神经网络:超参数调试、正则化以优化(下)

一 批标准化 (batch normalization)        部分内容来自: Batch Normalization 批标准化 深度学习Deep Learning(05):Batch Normalization(BN)批标准化 参考论文:http://jmlr.org/proceedings/papers/v37/ioffe15.pdf 2015年Google提出的Batch Normalization 训练深层的神经网络很复杂,因为训练时每一层输入的分布在变化,导致训练过程中的饱和,

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

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

]DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法

1. Mini batch梯度下降法 介绍 假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理: 如图所示,我们以1000为单位,将数据进行划分,令$x^{\{1\}}=\{x^{(1)},x^{(2)}……x http://pic.cnhubei.com/space.php?uid=1132&do=album&id=825921http://pic.cnhubei.com/space.php?uid

深度学习的GDB调试命令和经验记录

调试的指令很简单: cd $CAFFE_ROOT, 1. gdb ./build/tools/caffe 2. 设置运行参数 set args train --solver=xxxxsolver.prototxt 3. 设置断点, 比如b solver.cpp:59 , 此时会出现"Make breakpoint pending on future shared library load? (y or [n]) ", 选择y即可,因为断点设置在.so文件中 4. run 即可

File类的深度学习(超简易文件管理器)——《Thinking in Java》随笔028

1 //: MakeDirectories.java 2 package c10; 3 4 import java.io.File; 5 import java.text.SimpleDateFormat; 6 import java.util.Date; 7 8 /** 9 * @time: 下午7:59:23 10 * @date: 2017年4月29日 11 * @auther: skyfffire 12 * @version: v0.1 13 */ 14 public class Mak

超参数调试、Batch正则化和编程框架

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9846510.html