吴恩达DL lesson2 week3

3.1 调试处理(Tuning process)

关于训练深度最难的事情之一是你要处理的参数的数量
1学习速率α
2Momentum(动量梯度下降法)的参数β
3如果使用Adam 优化算法的参数β1,β2,ε,但是通常使用默认值:0.9,0.999,10−8
4mini-batch 的大小
5不同层中隐藏单元的数量
6层数
7学习率衰减率

常用超参数搜索
https://www.cnblogs.com/tianqizhi/p/9738688.html
网格搜索(Grid Search)
随机搜索(Random Search)
贝叶斯优化(Bayesian Optimization)

3.2 为超参数选择合适的范围(Using an appropriate scale to pick hyperparameters)

采用对数取值而不是线性取值

在超参数范围中,随机取值可以提升你的搜索效率。但随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺.
看个例子,假设你在搜索超参数α(学习速率),假设你怀疑其值最小是0.0001或最大是1。如果你画一条从0.0001到1的数轴,沿其随机均匀取值,那90%的数值将会落在0.1到1之间,结果就是,在0.1到1之间,应用了90%的资源,而在0.0001到0.1之间,只有10%的搜索资源。而用对数标尺搜索超参数的方式会更合理,因此这里不使用线性轴,分别依次取0.0001,0.001,0.01,0.1,1,在对数轴上均匀随机取点,这样,在0.0001到0.001之间,就会有更多的搜索资源可用,还有在0.001到0.01之间等等。

再看一个例子
在这里插入图片描述

3.3 超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in practice: Pandas vs. Caviar)

一种是你照看一个模型,通常是有庞大的数据组,但没有许多计算资源或足够的CPU和GPU的前提下,基本而言,你只可以一次负担起试验一个模型或一小批模型,在这种情况下,即使当它在试验时,你也可以逐渐改良。

另一种方法则是同时试验多种模型,你设置了一些超参数,尽管让它自己运行,你可以有着不同超参数设定的不同模型.

3.4 归一化网络的激活函数(Normalizing activations in a network)

其实就是批归一化Batch Normalization

归一化输入特征是怎样有助于神经网络中的学习,Batch归一化的作用是它适用的归一化过程,不只是输入层,甚至同样适用于神经网络中的深度隐藏层
你应用Batch归一化了一些隐藏单元值中的平均值和方差,不过训练输入和这些隐藏单元值的一个区别是,你也许隐藏单元值不一定必须是平均值0和方差1(因为要避免网络进入线性区)。

3.5 将 Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural network)

在这里插入图片描述
在这里插入图片描述

3.6 Batch Norm 为什么奏效?(Why does Batch Norm work?)

第一个原因是:
 你已经看到如何归一化输入特征值X,使其均值为0,方差1,它又是怎样加速学习的,有一些从0到1而不是从1到1000的特征值,通过归一化所有的输入特征值X,以获得类似范围的值,可以加速学习。

第二个原因是:
 Batch归一化减少了输入值改变的问题,它的确使这些值变得更稳定,神经网络的之后层就会有更坚实的基础。即使使输入分布改变了一些,它会改变得更少。它做的是当前层保持学习,当改变时,迫使后层适应的程度减小了,你可以这样想,它减弱了前层参数的作用与后层参数的作用之间的联系,它使得网络每层都可以自己学习,稍稍独立于其它层,这有助于加速整个网络的学习。

Batch归一化还有一个作用,它有轻微的正则化效果
对比而言,Batch归一化含几重噪音,因为标准偏差的缩放和减去均值带来的额外噪音。这里的均值和标准差的估计值也是有噪音的,所以类似于dropout,Batch归一化有轻微的正则化效果,因为给隐藏单元添加了噪音,这迫使后部单元不过分依赖任何一个隐藏单元,类似于dropout,它给隐藏层增加了噪音,因此有轻微的正则化效果。因为添加的噪音很微小,所以并不是巨大的正则化效果,你可以将Batch归一化和dropout一起使用,如果你想得到dropout更强大的正则化效果。

3.7 测试时的 Batch Norm(Batch Norm at test time)

在训练时,μ和σ²是在整个 mini-batch 上计算出来的,包含了像是 64 或 28 或其他一定数量的样本,但在测试时,你可能需要逐一处理样本,方法是根据你的训练集估算μ和σ²。

估算的方式有很多种,理论上你可以在最终的网络中运行整个训练集,来得到 μ和σ²,但在实际操作中 我们通常运用指数加权平均,来追踪在训练过程中你看到的μ和σ²的值,还可以用指数加权平均,有时也叫做流动平均,来粗略估算μ和σ²,然后用测试中μ和σ²的值,来进行你所需的隐藏单元zz值的调整。

3.8 Softmax 回归(Softmax regression)

Softmax用来解决多分类问题
在这里插入图片描述
Softmax与Logstic区别
(1)对于分类中存在概念交叉的分类,使用多个Logistic回归
(2)对于分类中不存在概念交叉的分类,使用多分类的Softmax回归

之前,我们的激活函数都是接受单行数值输入,例如Sigmoid和ReLu激活函数,输入一个实数,输出一个实数。Softmax激活函数的特殊之处在于,因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量

3.10 深度学习框架(Deep Learning frameworks)

在这里插入图片描述

3.11 TensorFlow

猜你喜欢

转载自blog.csdn.net/weixin_43513123/article/details/87818218