Hin*_*ton 10 python parameters optimization scikit-learn
有没有办法通过梯度下降来执行scikit中的超参数调整?虽然可能难以计算超参数梯度的公式,但通过评估超参数空间中的两个关闭点来对超参数梯度进行数值计算应该相当容易.这种方法是否存在实施?为什么这种方法或不是一个好主意?
sas*_*cha 19
梯度的计算是最少的问题.至少在先进的自动分化软件中.(当然,对所有sklearn分类器实现这一点并不容易)
虽然有些人使用过这种想法,但他们只是针对一些特定且精心设计的问题(例如SVM调整).此外,可能有很多假设,因为:
为什么这不是一个好主意?
我可以补充一点,你的一般问题是可以考虑的最糟糕的优化问题,因为它是:
最后一部分是为什么sklearn中提供的方法如此简单:
np.logspace分析更多大数字)虽然有很多贝叶斯方法,包括像hyperopt和留兰香等可用的python软件,很多人都认为,随机搜索一般来说是最好的方法(可能会令人惊讶,但强调上述问题).
以下是一些描述基于梯度的超参数优化的论文:
我们通过在整个训练过程中向后链接导数来计算所有超参数的交叉验证性能的精确梯度。这些梯度使我们能够优化数千个超参数,包括步长和动量计划、权重初始化分布、丰富的参数化正则化方案和神经网络架构。我们通过用动量精确地反转随机梯度下降的动力学来计算超参数梯度。
我们研究了两种过程(反向模式和正向模式),用于计算相对于任何迭代学习算法(例如随机梯度下降)的超参数的验证误差的梯度。这些过程反映了计算循环神经网络梯度的两种方法,并且在运行时间和空间要求方面具有不同的权衡。我们对反向模式程序的制定与 Maclaurin 等人之前的工作相关。[2015]但不需要可逆动力学。前向模式过程适用于实时超参数更新,这可以显着加快大型数据集上的超参数优化速度。
使用任何基于梯度的机器学习算法都涉及调整优化器超参数(例如学习率)的繁琐任务。存在许多用于自动超参数优化的技术,但它们通常引入更多的超参数来控制超参数优化过程。我们建议通过梯度下降来学习超参数本身,并且还通过梯度下降来学习超超参数,如此下去。随着这些基于梯度的优化器塔的增长,它们对顶级超参数的选择变得越来越不敏感,从而减轻了用户搜索最佳值的负担。
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |