【深度学习】超参数优化简单介绍

介绍

超参数优化也称作超参数调整。往往机器学习/深度学习的算法中包含了成千上百万的参数,这些参数有的可以通过训练来优化,例如神经网络中的权重(Weight)等,我们称为参数(Parameter),也有一部分参数不能通过训练来优化,例如学习率(Learning rate)等,我们称为超参数(Hyper parameter)。举些例子,机器学习算法中的参数是用来调整数据的。深度神经网络由许多神经元组成,输入的数据通过这些神经元来传输到输出端。在神经网络训练时候,每个神经元的权重会随着损失函数的值来优化从而减小损失函数的值。这些训练好的参数就是这个算法的模型。超参数是用来调节整个网络训练过程的,例如神经网络的隐藏层的数量,核函数的大小,数量等等。超参数并不直接参与到训练的过程中,他们只是配置变量。需要注意的是在训练过程中,参数是会更新的而超参数往往都是恒定的。

在训练神经网络的时候,调节超参数是必不可少的,这个过程可以更科学地训练出更高效的机器学习模型。一般我们都是通过观察在训练过程中的监测指标如损失函数的值或者测试/验证集上的准确率来判断这个模型的训练状态,并通过修改超参数来提高模型效率。下面列出了几个深度学习超参的例子:

  • 优化器(Optimizer):机器学习算法的参数都需要优化器来优化,比较传统的是随机梯度下降(SGD),但是它收敛较慢而且在某些情况下比较容易得到局部最优解。Adam是目前收敛速度快且常被使用的优化器,它加入了动量Momentum,可以加速收敛并且有更好的最优解。
  • 迭代次数:迭代次数是指训练网络时候同时完成前向/反向传播的次数。每次迭代都会更新网络模型的参数并且减小损失函数的值。比较合适的迭代次数为测试/训练错误错误率相差较小并且两者错误率都在能接受范围内的时候。如果此时继续训练网络,很有可能会出过拟合的情况。
  • 激活函数:在神经网络中,激活函数的作用是增加非线性因素,以至于网络可以拟合复杂的非线性函数来更高效地解决复杂的问题。因为在实际情况中,更多问题都是非线性的,所以运用非线性激活函数可以拟合实际场景问题,增加网络的泛化能力。常用的激活函数有sigmoid, relu, tanh, leaky relu等等。
  • 学习率(Learning rate)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常学习率取值为[0.01, 0.001, 0.0001]。
  • 超参的例子还有很多,他们都对网络的性能起着很大的作用,当然其中一些超参比其他参数重要我们可以以下图为参考标准来划分优先级,如学习率一般是最重要的。
    网格搜索(Grid Search)是比较常用的超参优化方法。这是一个简单粗暴的方法,就是你手动列举出合理的超参数值范围,程序自动的帮你使用穷举法来将所用的参数都运行一遍。

发展历史

比较早期的主要贡献者(在应用到机器学习非参数学习领域之前)是Frank Hutter团队,他在2009年的博士论文就是关于软件系统里面如何用非参数学习来代替人手设定参数。James Bergstra与Bengio在这个问题上也研究过几年,他们提出了网格搜索的一种简单的取代方法,称作随机采样(random sampling),实验结果非常好,也很容易实现。随后他们就将Hutter在其他领域使用过的非参数学习方法引入了深度学习,称作序列优化(sequential optimization),发表在NIPS 2011,Remi Bardenet和他的导师Balazs Kegl也参与了这个工作。

这个工作被多伦多大学的研究人员看好并继续深入,其中有Jasper Snoek(Hinton教授的学生),Hugo Larochelle 以及Ryan Adams(哈佛大学教授),他们的工作发表在NIPS2012。文中展示了他们利用自动化的方法,改进了Krizhevsky,Sutskever和Hinton教授非常著名的ImageNet物体识别神经网络算法,刷新了这个数据集的学术记录。

Snoek等人开发了一个软件,被相关学者广泛使用,叫做spearmint,Netflix在他们用深度学习做电影推荐的新项目中也用到了它

主要事件

【深度学习】超参数优化简单介绍_第1张图片

瓶颈

超参数往往影响这一个算法/网络的鲁棒性,稳定性还有泛化能力,超参的数量可多可少,但是每次调节超参数可能需要重新训练一次算法/网络,这样就需要花费很多时间。往往对于一个算法而言,想要其发挥最大的作用,那就需要在调参上面花大量的功夫,当然它也是有规律可循的,有经验的研究员/工程师往往会根据现有的信息来准确判断出所要修改的参数。但是对于大部分人而言,这是个十分费时费力的过程。

未来发展方向

调参算法在慢慢改善,科学家们开始把调参这一步交给机器来做,也就是让机器来自动调参,这种方法可能会比人为手动调参更高效。

你可能感兴趣的:(深度学习,机器学习,神经网络,超参数优化,简单介绍,超参数)