微信扫一扫打赏支持

《python深度学习》笔记---7.3.2、超参数优化

《python深度学习》笔记---7.3.2、超参数优化

一、总结

一句话总结:

【架构层面的参数叫作超参数】:这些在架构层面的参数叫 作超参数(hyperparameter),以便将其与模型参数区分开来,后者通过反向传播进行训练。

 

 

1、神经网络中的 超参数是什么,有哪些?

应该堆叠多少层?每层应该 包含多少个单元或过滤器?激活应该使用 relu 还是其他函数?在某一层之后是否应该使用 BatchNormalization ?应该使用多大的dropout 比率?还有很多。
【架构层面的参数叫作超参数】:这些在架构层面的参数叫 作超参数(hyperparameter),以便将其与模型参数区分开来,后者通过反向传播进行训练。

 

 

2、整天调节超参数不应该是人类的工作,最好留给机器去做?

【超参数自动优化领域】:因此,你需要制定一个原则,系统性地自动探索可能的决策空间。你需要搜索架构空间, 并根据经验找到性能最佳的架构。这正是超参数自动优化领域的内容。这个领域是一个完整的 研究领域,而且很重要。

 

 

3、训练模型权重相对简单:在小批量数据上计算损失函数,然后用反向传播算法让权重向正 确的方向移动。与此相反,更新超参数则非常具有挑战性。我们来考虑以下两点?

【计算反馈信号(这组超参数在这个任务上是否得到了一个高性能的模型)的计算代价可能非常高】,它需要在数据集上创建一个新模型并从头开始训练。
【超参数必须依赖不使用梯度的优化方法】:超参数空间通常由许多离散的决定组成,因而既不是连续的,也不是可微的。因此,你 通常不能在超参数空间中做梯度下降。相反,你必须依赖不使用梯度的优化方法,而这 些方法的效率比梯度下降要低很多

 

 

4、Hyperopt?

有一种工具确实比随机搜索更好,它就是 Hyperopt。它是一个用于超参数优化的Python 库,其内部使用Parzen 估计器的树来预测哪组超 参数可能会得到好的结果。

 

 

5、在进行大规模超参数自动优化时,有一个重要的问题需要牢记,那就是验证集过拟合?

【是在验证数据上训练超参数】:因为你是使用验证数据计算出一个信号,然后根据这个信号更新超参数,所以你实际上 是在验证数据上训练超参数,很快会对验证数据过拟合。请始终记住这一点。

 

 

6、总之,超参数优化是一项强大的技术,想要在任何任务上获得最先进的模型或者赢得机器 学习竞赛,这项技术都必不可少?

【就像特征的由手动设计到深度学习自动完成特征工程,超参数的设置同样应该如此】

思考一下:曾经人们手动设计特征,然后输入到浅层机器学 习模型中,这肯定不是最优的。现在,深度学习能够自动完成分层特征工程的任务,这些特征 都是利用反馈信号学到的,而不是手动调节的,事情本来就应该如此。同样,你也不应该手动 设计模型架构,而是应该按照某种原则对其进行最优化。

 

 

二、内容在总结中

博客对应课程的视频位置:

 

 

 
posted @ 2020-10-15 17:47  范仁义  阅读(345)  评论(0编辑  收藏  举报