机器学习

模型容量(model capacity)

/ MOD-ul kuh-PASS-it-ee /

模型容量,衡量的是一个模型有可能表达出多复杂的模式——也就是它原始的灵活度。低容量的模型像一把直尺:有用,但它只能画直线。高容量的模型像一团软陶土,几乎能被捏成任何形状。容量随着参数数量、模型形式的丰富程度等因素而增长。它在任何训练发生之前,就为「这个模型能学到什么」定下了上限。

容量正是那两种经典失败模式背后的旋钮。如果容量相对于问题太低,模型就没法把自己弯到足以贴合真正规律的程度,于是欠拟合——直尺画不出曲线。如果容量相对于你手里的数据太高,模型就有足够的灵活度把训练例子连同噪声一起背下来,于是过拟合——陶土留下了每一个指纹的印记。恰当的容量,要同时与问题的复杂度和手头数据的多少相匹配。

两点诚实的提醒。其一,容量是潜力,不是成就:一个高容量模型「能够」拟合复杂模式,但只有良好的训练和足够的数据,才让它真的去拟合。其二,容量越大并不就越好。更大的模型训练和运行都更费钱,在小数据上更容易过拟合,也更难解释。目标是「容量足够抓住真正的信号,但不多一分」——尽管在用海量数据训练海量模型的今天,这条线究竟划在哪儿,已经变得相当微妙。

试着只用 20 个数据点去学一个带弯的模式。一条直线(极小容量)完全错过了那道弯——欠拟合。一条 50 个参数的波浪线(极大容量)完美地蛇行穿过全部 20 个点,却在点与点之间预测出一堆垃圾——过拟合。一条容量恰好够用的平缓曲线,抓住了趋势,也泛化得开。

容量定下上限;数据和训练决定你是否漂亮地够到它。

容量说的是模型「能表达什么」,而不是它实际表现得多好。一个模型可以有巨大的容量,却因训练不当或数据匮乏而表现糟糕——容量是工具箱的大小,而非活儿的质量。

又称
capacityexpressivenessrepresentational power模型容量模型容量表达能力拟合能力