机器学习

超参数(hyperparameter)

/ HY-pur-puh-RAM-uh-tur /

超参数,是你在训练开始前就要选定的设置——它是学习过程本身上的一个旋钮,而不是模型学出来的东西。想想烤面包:配方里面粉和水的分量,像是面团在发酵时「自己揣摩」出来的参数,可烤箱温度和烘烤时间,却是你事先做的决定。这些设得不好,再好的原料也会给你烤出一块砖头,或是一团湿软的面坨。超参数,就是机器学习里的这些烤箱设置。

典型的超参数包括:把模型造多大(多少参数或多少层)、训练时它该调整得多快(学习率)、训练多久,以及对过拟合的抑制力度有多强。它与普通参数的关键区别在于「由谁来定」:参数是训练算法从数据里自动找出来的,而超参数是由人(或由一层外部搜索)设定,并在那一轮训练运行期间保持不变。

把它们选好,一半靠科学,一半靠反复试错——这个过程叫超参数调优。你用不同的设置把模型训练许多次,留下在验证集上表现最好的那一组——验证集是专门留在一旁的数据,正是为了让你别自欺欺人。世上没有一种放之四海皆准的最优选择;好的取值取决于数据和任务,这正是「没有免费的午餐」思想在日常中的一副面孔。诚实的告诫是:若拿你的测试集来调参,你会得到一个好看的数字,可它一到真实世界就悄悄蒸发了。

两位工程师用同样的数据训练同样的网络。一个把学习率设成 0.1,另一个设成 0.001。第一个模型一步迈得太大,始终安定不下来;第二个慢吞吞,却落得很稳。同样的数据、同样的架构、同样将要学习的参数——只改了一个超参数,它却决定了一切。

一个手动设定的旋钮(学习率),就能成就或毁掉一个模型。

「超」不过是「在……之上」的意思:这些旋钮位于普通参数之上一层,掌管那些参数如何被学出来。永远在验证集上调它们,绝不能动你为最终、诚实评分而留出的测试集。

又称
tuning knobsetting超参数超參數調參