本文是「小孩都看得懂」系列的第三篇,本系列的特点是没有公式,没有代码,只有图画,只有故事。内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!
小孩都看得懂的逐步提升法
本文所有思路都来自林轩田教授的「机器学习技法」的第八节课件 Adaptive Boosting,纯纯的致敬!我只是加了点场景使得内容更通俗点。
1
斯蒂文是一名幼儿园教师,有一天,他要教小朋友如何从一堆水果中辨识一堆苹果。斯蒂文有 10 张苹果图片和 10 张非苹果图片,如下图所示。
首先,斯蒂文告诉悠悠、乐乐、丫丫和多多
上面 10 张图片中显示的是苹果
下面 10 张图片中显示的不是苹果
之后他希望用这 20 个例子来教会他们识别苹果,即让他们学会提取苹果的特征,在看到新的水果时一下子就能辨别它是否是苹果。
2
斯蒂文:看对于这 20 张水果图片,你怎么来描述苹果?
悠悠:苹果是圆的。
悠悠认为「圆」是辨别苹果的一个特征,根据这个特征,悠悠可以从香蕉图片里识别出苹果,因为香蕉不是圆的,但是这个特征永远适用吗?不!悠悠用「圆」这个特征来识别苹果可能会犯两种错误:
没识别出不圆的苹果(灰色叉子)
误识别了圆的非苹果(粉色叉子)
斯蒂文记下了悠悠犯了错的图并将其放大,同时也缩小了悠悠没犯错的图,见下图。
3
现在识别苹果的第一个特征是「苹果是圆的」。
斯蒂文准备叫乐乐来识别苹果的其他特征。
4
注意,乐乐看到的图片和悠悠看到的图片不大一样,因为斯蒂文根据悠悠的作答,放大她犯错误的图片而缩小没有犯错的图,因此乐乐(任何人)会把注意力放在大图上。
在那些大图里,好像「红」是一个可以很好的区分苹果和其他水果的特征。
5
斯蒂文:除悠悠说的之外,你还能怎么描述苹果?
乐乐:苹果是红的。
但是「红」这个特征是否适用那些小图(即悠悠没犯错的图)?不!乐乐用「红」这个特征来识别苹果可能会犯两种错误:
没识别出不红(绿)的苹果(灰色叉子)
误识别了红的非苹果(粉色叉子)
斯蒂文又记下了乐乐犯了错的图并将其放大,同时也缩小了乐乐没犯错的图,见下图。
6
现在识别苹果的特征是「苹果有的是圆的,有的是红的」。
斯蒂文准备叫丫丫来识别苹果的其他特征。
7
和乐乐把注意力放在悠悠犯的错的图片一样,丫丫的注意力也在乐乐和悠悠同时犯的错的图片。
在那些大图里,好像「绿」是一个可以很好的区分苹果和其他水果的特征。
8
斯蒂文:除悠悠和乐乐说的之外,你还能怎么描述苹果?
丫丫:苹果是绿的。
但是「绿」这个特征是否适用那些小图(即悠悠和乐乐没犯错的图)?不!丫丫用“绿”这个特征来识别苹果可能会犯两种错误:
没认出不绿(红)的苹果(很多灰色叉子)
误认了绿的非苹果(粉色叉子)
斯蒂文又记下了丫丫犯了错的图并将其放大,同时也缩小了丫丫没犯错的图,见下图。
9
现在识别苹果的特征是「苹果有的是圆的,有的是红的,有的是绿的」。
最后,斯蒂文准备叫多多来识别苹果的其他特征。
10
像正常人一样,多多把注意力放在前面三位犯错最多的两个图上。
在那些大图里,好像「带把儿」是一个可以很好的区分苹果和其他水果的特征。
11
斯蒂文:除悠悠、乐乐和丫丫说的之外,你还能怎么描述苹果?
多多:苹果是带把儿的。
最后识别苹果的特征是“苹果是有的圆、有的红、有的绿,带把儿”。斯蒂文当然还可以继续问其他小朋友,随着这个过程,小朋友学到的如何识别苹果的特征会越来越全。
即便每个小朋友只能从一个方面识别苹果,但是结合起来的结论就很厉害了,有可能比一个专家来识别苹果还要准确,这个过程就是个增强或提升(boosting)过程。这个故事的寓意是,如果有一群「弱鸡」假设,也可能提升成「战斗机」假设。
全过程最妙的点就是斯蒂文
放大认错的图片
缩小认对的图片
这跟逐步提升法(adaboost)里面把「分类错误的数据权重增大,把分类正确的数据权重减小」的道理是一样一样一样的。