深度学习与神经网络-吴恩达(Part2Week3)-超参数调试、Batch正则化和程序框架

本文深入探讨了深度学习中超参数的选择和调试,详细讲解了Batch正则化的概念、实现方式及其在神经网络中的应用。同时,介绍了测试时的Batch归一化策略,并对Softmax回归进行了简要阐述,最后提到了深度学习框架在实践中的重要性。

一、前言


通过前面的学习我们了解到神经网络的优化和改变会涉及到许多不同的超参数,例如:与神经网络结构相关的层数、每层节点数,与优化算法相关的学习效率以及Momentum、RMSprop、Adam中的指数权重项,学习效率衰减中的衰减系数,Mini-batch中的batch size等等。那么对于超参数而言,我们要如何找到一套好的设定了,下面来介绍一些关于如何系统组织超参数调试过程的技巧。

二、调试处理


值得注意的是,这些所列举的超参数优先级别却是不一样的,学习效率一般是需要调试的最重要的超参数,有时也会调试mini-batch的大小、隐层节点数以及Momentum优化算法中的指数权重,这三个是比较重要的超参数,神经网络层数和学习率衰减系数则是其次比较重要的超参数。另外,在Adam优化算法中一般很少去调试两个指数权重和分母校正项,总是选定为0.9,0.999和10e-8。
接下来我们介绍具体的调试方法,在早一代的机器学习算法中,如果有两个超参数,这里我们称之为超参一,超参二,常见的做法是在网格中取样点,然后系统的研究这些数值。如下例中的左图所示,可以尝试这所有的25个点,然后选择效果最好的参数。当参数的数量相对较少时,这个方法很实用。而在我们的深度学习领域,我们通常随机选择点,对于下面的例子(右图)我们随机选择25个点,用这些随机取得点试验超参数的效果,这样做的原因在于对于要解决的问题而言,我们很难知道哪个超参数最重要。我们假设超参一为学习率,假设超参二为Adam算法中分母校正项,这种情况下学习率的取值很重要,而分母校正项的取值则无关紧要。我们首先基于传统网格方法,在左图中给超参一取五个值,我们会发现无论分母校正项无论取何值结果基本上都是一样的。对比而言,如果随机取值,我们会尝试25个独立的学习率值,所以我们会更容易发现最好的那个。

实践中,我们可能搜索的超参数不止两个,如果有三个超参数,那么我们搜索空间就不再是一个方格,而是一个立方体。随机取值相对网格取值而言,能够让我们探究更多重要超参数的潜在值。当我们给超参数取值时,另一个惯例是采用粗糙到精细的策略,例如在上面二维的例子中,我们进行了取值并发现效果最好的某个点,也许这个点周围的其他一些点效果也很好,那么接下来要做的就是放大这块小区域(蓝色小方块所示),然后在其中更密集的取值。




三、为超参数选择合适的范围

上面已经介绍了网格取值和随机取值,但随机取值并不是在有效值范围内的随机均匀取值,而是选择合适的标尺用于探究这些超参数。例如我们要选取隐藏单元的数量n[l],对于给定层 l 而言,假设我们选择的取值范围是从50到100中某点,我们可以在这个范围内随机取点,这是一个搜索特定超参数很直观的方式。又或者我们呢要选取神经网络的层数L,也许我们会选择层数2-4中的某个值,顺着2,3,4随机均匀取样会比较合理,你还可以应用网格搜索。这是几个在我们的考虑范围内随机均匀取值的例子,这些取值似乎还挺合理。但对于某些超参数而言则不适用,假设我们在搜索超参数-学习率alpha,我们怀疑其值最小是0.0001,最大是1,如果画一条从0.0001到1的数轴,延其随机均匀取值,那么90%的值都会落在0.1到1之间,结果就是在0.1到1之间应用了90%的资源,显然这是极不均匀的。反而我们用对数标尺搜索超参数的方式会更合理,因此这里的线性数轴也就变成了对数数轴,在0.0001到0.001之间就会有更多的搜索资源可用。我们所要做的就是在[-4,0]的区间随机均匀的给r取值,最终的学习率alpha值也就为10^r。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值