机器学习
泛化(generalization)
/ JEN-ur-uh-lih-ZAY-shun /
泛化,是指一个模型在它从未见过的数据上也能表现良好——而不只是在它学过的那些例子上。这正是机器学习的全部要义。一个见过几只狗的孩子,能认出一个他从没碰过的品种;这种从具体例子跃向一条管用规则的飞跃,就是泛化。一个只会背出练习题答案的模型,什么有用的东西都没学到,就像死记一份考卷,对另一场考试毫无帮助。
我们用诚实的办法来衡量它:在训练时把一部分数据藏起来,不让模型看,然后在这份留出的数据上测试。在训练例子上表现强、在留出例子上表现弱,就意味着模型过拟合了——它背下的是怪癖和噪声,而不是真正的规律。反过来的毛病,是连训练数据上都表现糟糕,那叫欠拟合:模型太简单,根本抓不住规律。好的泛化,正是在这两者之间穿行。
要紧的是,泛化从来没有保证,也从来不是无条件的。模型只能泛化到与它训练数据相似的数据上。用大晴天的照片训练出的模型,到了雨天可能就失灵;用一家医院的病人训练,换到另一家可能就跌跤。这种世界一变就崩塌的情形——分布漂移——是真实系统失败时最常见、却最被低估的方式之一。泛化是一个充满希望、并由审慎测试支撑的赌注,而不是一句承诺。
一个模型在它训练用的 1 万张照片上拿了 99%,但在一批它从没见过的新照片上只有 71%。要紧的是这个 71%——它才是对模型在真实环境里表现如何的诚实估计。99% 与 71% 之间的差距,就是过拟合的代价。
唯有在未见过的数据上的分数,才告诉你模型是否真学到了东西。
模型只能泛化到与它训练数据同一类分布的数据上。当真实世界逐渐偏离训练数据时,再优秀的模型也会悄悄退化——所以部署后的持续监测,和部署前的测试一样重要。
又称
另见