无趣的过拟合

上篇文章中我提到:

有时这样的关注会带有「噪音」。毕竟不是每一篇文章每一条 tweet 都是在谈论专业主题的事情,但很多时候这恰恰是一种优点。比如在 Yihui Xie 的博客中除了 R 与统计,还有诗词和菜谱;又比如 Bill Bishop 除了谈论中国新闻,还会谈论女儿的足球赛和怀念北京的烧烤。这些在我看来是一种对抗算法的更健康的杂食

这点也可类比机器学习中的过拟合来进一步理解。如果做一个通俗的解释,统计学习可被看作是基于一堆已知数据,来学习某个特定场景下的规律(模型),并希望这个模型能很好的解释(拟合)未来的新数据。于是,如何保证只用已知的一部分数据,就能很好的预测未知世界,就成了统计学习的一个核心议题,往往也被称为泛化性。而过拟合(overfitting)正是这种泛化性上的失败。Occam’s razor 原理在很大程度上说的是一个意思。

当我们自己,或我们想要训练的模型,过分关注于某个局部,无论是数据、信息、还是观点,都可能使学到的模型过多地拟合了这一部分数据中特有的边边角角,把特例当普遍,从而折损了泛化性。一叶障目、以偏概全,都是说的这个道理。

好的学习算法往往会在 bias 与 variance 间取得很好的平衡,既学习到特定流形上的性质,又不至于过分被当前数据集束缚而丧失泛化性。这也是为什么必要的噪音1是一件好事。毕竟没有完美的数据,除非人工编造,现实环境中各种来源的不完美的真实数据,反而可以帮助模型泛化,也同样帮助我们更真实地观察这个世界的多样性。

过拟合思维模式的弊端不单是容易把自己封闭在 filter bubble 中而无法看到全局这么简单,它还往往会让人本身变得越来越无趣。

你可以回想下,很多时候当我们在朋友圈/微博/twitter等时间线上看到某些转发内容时,可能并不需要看具体的标识就能大致猜到是谁转发的。当然这一方面的原因可能是很多人会刻意选择在某些社交网络上经营某种人设,但也有很多时候是由于我们不自觉地陷入了固定的角落。所有人都渴望高质量的交流,若一个人总是一张嘴就是房子教育之类的中产焦虑,或是某些特定行业的职业抱怨,恐怕他人也很难会觉得这是一个有趣的人吧。

过拟合的算法学习过程往往过于强调效率,很快收敛到某个局部最优。但所谓效率,productivity,并不是人生唯一的追求。生活中各式各样的 noise 会让人显得更真实,也更立体,而不仅仅是刻意营造出来的单薄形象。

去做一个杂食者吧,无论是真正的饮食,还是信息的摄取。生命有着自己的多面性,我们也不该只是自己斜杠说明里哪些标签的简单汇总。

“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.”


  1. 需要稍微区分下一般机器学习语境中的噪音(noise)与这里说到的噪音。前者更多指数据集中的错误标注或回归问题中不可避免的系统误差;而后者在本文语境中更多指倾听更多不一样的声音。↩︎