模型的泛化#
先讲一个故事。
想象一位来自外星的游客初到地球。为了跟人交流,他挑了一个特定的局部社区,认真听那里居民怎么说话,潜心学了好几个月的语言。等他觉得自己已经掌握了这门语言,准备走向更多人时,却发现自己根本没法跟世界上其他地方的人沟通。
为什么会这样? 因为他学到的,只是极小一部分人群的特定说话习惯——这些经验,搬不到真实而多变的世界里去。
机器学习模型的训练过程,跟这个故事几乎是同一个道理。这一节要讲的,就是机器学习从业者在训练模型时最常撞上的那个问题。
MLWM: 如果觉得上面举的这个例子没太理解,可以参见 「4.3 过拟合处理方法:常见原因、表现与正则化实战」 第 4.3.1 节中的内容。
什么是「泛化」(Generalization)#
泛化,指的是模型对全新的、没见过的数据依然能做出高质量预测的能力。
难点在于:训练模型时用的是训练数据,通常只是真实世界数据的极小子集。所以模型的终极目标,从来不是在训练集上表现好,而是在陌生的真实数据上也能预测得准。
什么是「过拟合」(Overfitting)#
跟泛化相对的那个概念,叫过拟合。
如果一个模型在训练数据上的预测准确率极高,可一换到全新的真实数据上,预测质量就大幅下滑——这种现象就叫过拟合。
原因也不难理解:模型过于死板地贴合了已见数据的那些细节和局部模式,反而认不出新数据里更普遍的规律。
如何提高模型的泛化能力#
回到那个外星游客。他发现问题之后,做法其实很朴素:换一批人去听。他开始倾听各种不同人群的讲话,重新学习,最后终于把这门语言用到了全新的场景里。
机器学习的解法也是同一个:让模型从更广泛、更具代表性、更多样的数据里学习。
至于怎么在真实的模型训练里检测和防止过拟合——靠训练集与测试集的划分,还是靠正则化——接下来的两节会分别展开。
关键术语:
泛化
过拟合