机器学习基础-模型调参

模型调参

大多数据科学家或算法工程师会在模型调参上面花费很多时间,时间的花费和你模型的参数成正比关系,所以,我们的模型想在一个数据集上获得一个好的结果是一个非常花费时间的过程。

  • 一般来讲,大家在模型调参之初,都会有官方模型设定的一系列默认超参数,它会给予你一个不错的初始点,然后在其上面慢慢地作调整。另一方面,我们可以通过读取论文,看看大神面对类似问题会使用哪些范围的超参数。
  • 在每次调整过一个超参数后,你需要重新训练一下你的模型,观察它在你的验证集有什么或坏或好的变化。之所以这样操作,是因为你可以从中知道每次你的调参操作会对模型有什么影响。如果你是一次性调整多个超参数的话,那么你可能就不知道是哪个超参数在做贡献。
  • 接着你把前面的步骤重复多次,你会发现模型变好/差,通常这里面没有很多科学依据,大多是根据你的档次直觉或者经验进行调试。这时候你就会隐约地发现哪些参数对你的模型影响比较大,说明模型对这些超参数会显得比较敏感,这可能就是一些比较重要的超参数。
  • 当然,也有些超参数无论你怎么调整,对最终的结果影响也不会很大,你可以在调参的时候把该优先级适当地降低。
  • 所以,我们也可以选择一些对超参数没那么敏感的模型。比如我们在构建神经网络的时候会用到Adam这个优化算法,但是Adam并不见得比SGD好,在SGD调参足够好的时候,通常是比Adam效果好的。之所以大家通常用Adam优化器,只是说Adam对模型的超参数没有SGD那么敏感。
  • 我们可以通过下面这张图进行描述,SGD在一块小小的区间里面还不错,但是剩余大多数地方都不太行;但是Adam它在一个比较大的区间内都表现得比较好,虽然在这个区间内的最终精度没有SGD那么好,但是它对超参数的低敏感度会给予我们调参带来很大的便利。
    机器学习基础-模型调参_第1张图片

手动调参注意要点

  • 对于每一次调参操作都要做好实验笔记,方便回看,从而可以比较不同实验之间的区别。
  • 把训练的日志和超参数的调整用工具记录下来,比如excel,log,txt等等。
  • 多提一点,复现他人的实验是非常难的。因为有三个要素比较重要:
    • 训练环境:GPU版本 or CPU,不同版本的加速器在兼容性上是有一点点的区别。
    • 库:现在大家都用Python,但是这个工具写出来的东西大家并没有那么注重维护。这样会导致不同类型的(库/API/超参数)得到不一样的结果。
    • 第三个是一个比较trick的技巧,不同的随机种子数random_seed会对你的结果造成一定的抖动。如果抖动比较大的话,就说明模型代码的稳定性没有那么好,所以尽量要避免说每次更换随机种子数,然后导致你最后的结果浮动很大。针对这种现象,你可以通过ensemble的方法作多个模型融合,平滑之间的结果差距。

机器调参

目前越来越多的机器自动调参,因为摩尔定律的存在,机器的计算开销越来越低了。如果我们把芯片的功耗做的越来越大,并行度越来越高,那么开销也会随之降低。但是与此同时,人的成本反而越来越高。

Auto ML

所谓Auto ML,从字面意思去理解:自动机器学习。不过是把机器学习workflow中的每一part给自动化,例如数据清洗/特征抽取/模型选择等等都交给机器去自动化处理。

在数据清洗/特征抽取这一块,机器可能没有做的人那么好,因为case by case,不同的问题的处理没法形成范式。但是在模型选择这一块,最近的进展还是挺不错的。

Learning Note from 李沐机器学习

你可能感兴趣的:(机器学习基础,机器学习,人工智能,python)