调机器学习模型的第三十晚,我把蹲在键盘上的猫判成了烤鸡

上周三凌晨两点十七分,我盯着电脑屏幕上跳出来的置信度数值,差点把手里的冰美式泼在键盘上。

87%。

蹲在F键上踩了半小时空格键的三花胖猫,被我刚跑了两轮的图像分类模型,判定成了一份撒了白芝麻的奥尔良烤鸡。

说起来挺丢人的。我前前后后调这个小模型花了快三周,本来是想做个能识别我家猫有没有偷跳上餐桌的小工具,结果临了连猫和烤鸡都分不清楚。

你以为的机器学习,和你家猫认不出罐头的本质差不了多少

好多人第一次听见“机器学习”这四个字,总觉得是那种能一秒算完所有题的超级大脑,是科幻电影里会自己思考的金属盒子。

真不是。

它和你家猫的学习逻辑,本质上没什么区别。猫每次把罐头扒拉到地上,你皱着眉骂它,它下次就知道扒拉罐头会挨说;你每次开罐头之前先晃一下铁罐子,哐当哐当的声音听多了,它只要听见那个动静,不管你在客厅哪个角落,都能迈着小碎步冲过来蹭你裤腿。

机器学习做的事,就是把这个过程拆成了机器能看懂的数字而已。你喂给它一堆标好标签的样本——比如一百张猫蹲在键盘上的照片,八十张烤鸡的实拍图,它就开始在这些图里找规律:哦,猫的毛是三花混杂的,烤鸡的皮是油亮的棕红色;猫有尖耳朵,烤鸡没有;猫的爪子是小肉垫形状,烤鸡的皮是皱巴巴的。这些细碎的特征拼到一起,它下次见着新的图片,就照着之前算出来的规律,给一个判断结果。

那为啥会把猫认成烤鸡?我后来翻了下自己攒的训练集,脸瞬间热了。原来我找的八十张烤鸡照片里,有六张是上次吃外卖的时候拍的,外卖盒旁边刚好垫了我家那块三花的毛绒脚垫——和猫毛的纹理几乎一模一样。等于模型学了个半吊子:只要看见棕白夹黑的软乎乎纹理,旁边凑着个黄澄澄的圆东西,就是烤鸡。那天我家猫刚好蹲在半块掉在键盘边的橘子糖旁边,可不就触发了离谱的错误判断。

机器学习图像分类训练集猫与烤鸡样本对比图
机器学习图像分类训练集猫与烤鸡样本对比图

你看,从始至终,它都不知道“猫”是什么,“烤鸡”又是什么。它只是在照着样本里的像素规律,找最匹配的答案而已。

别被厂商的宣传骗了,它根本没你想的那么“聪明”

上次刷到个短视频,说现在的机器学习能精准预判你下周的心情,能给你安排最适配的人生路径,我当时对着屏幕笑了三分钟。

真的太能吹了。

它一点都不“懂”。甚至连最基础的常识都没有。举个最简单的例子,你给一个训练好的人脸识别模型,塞一张打印在A4纸上的人脸照片,凑得离摄像头近一点,它能认认真真把这张薄纸,判定成站在你跟前的大活人。为啥?因为它从来没学过“平面的纸”和“立体的人”有啥区别,它只学过——只要图片里有两个黑圆点当眼睛,一个长条形当鼻子,一道弧线当嘴巴,就是人脸。

你以为它在学你想让它学的东西,其实它天天在找训练集里最省事的捷径,根本不管这个捷径和你要的目标有没有关系。

我之前帮朋友调过一个做咖啡风味识别的小模型,一开始他攒了几千张不同风味的咖啡照片,跑出来的结果一塌糊涂,不管是美式还是拿铁,全被判定成同一个类别。后来翻了下他的数据集才发现,他所有的咖啡照片,都是在自己家那盏暖黄台灯底下拍的,每张图的角落都露着同一个陶瓷马克杯的把手。结果模型学了半天,根本没摸清楚咖啡风味和颜色、质地的关系,就认准了——只要图里有那个陶瓷把手,就是合格的咖啡样本。

这事儿说出来像段子,其实天天在各个实验室、创业公司的工位上发生。

机器学习对抗性样本识别错误示意图
机器学习对抗性样本识别错误示意图

还有更离谱的。你只要在图片的某个角落加几个人眼几乎注意不到的小噪点,本来能被正确识别成公交站的图,能被模型判定成一整盒巧克力。这种专门用来骗模型的小技巧,在学界叫对抗样本,说白了就是戳破了“机器学习无所不能”的泡沫——它的判断逻辑,脆弱到你根本想不到。

那些被吹上天的“黑科技”,拆穿了全是笨功夫

我身边好多刚入行的年轻人,刚接触机器学习的时候,总想着找个什么顶级的算法,一跑出来就能达到那种惊为天人的效果。

哪有那么容易。

我之前参与过一个做社区老年跌倒预警的项目,一开始我们直接用了网上能找到的最复杂的行为识别算法,跑出来的准确率连60%都不到。监控里的模型动不动就拉警报:老人蹲下来系鞋带,被判定成跌倒;风把晾在杆子上的被单吹到镜头前面晃了一下,被判定成有人快速冲过来跌倒;甚至连猫从监控视野里窜过去,都能触发一次红色警报。

后来团队的几个同学跑了整整两个月,天天在社区的凉亭旁边蹲点,把之前漏判、错判的样本一个一个标出来:哦,原来老人坐下来系鞋带的动作,和跌倒的动作相似度高达90%;哦,原来监控镜头上沾的雨滴,在画面里形成的小阴影,会被模型当成移动的人体。

就这么一点点抠,把每个错判的样本都补进训练集,把那些干扰项的特征一个一个剔出去,最后准确率才慢慢爬到能实际用的水平。

社区监控下老年行为识别训练样本采集现场图
社区监控下老年行为识别训练样本采集现场图

哪有什么天才般的灵光一闪,全是这种熬到眼睛发花的笨活。

说实话,我到现在都记得当时蹲在社区凉亭里,被蚊子叮了二十多个包的那个下午。风刮得梧桐叶哗哗响,监控屏幕上跳出来一个错判的跌倒警报,我们几个蹲在树底下对着数据笑——原来所谓的技术,根本不是什么飘在天上的东西,就是蹲在地上被蚊子咬,把错的地方一个一个改过来而已。

现在好多人说机器学习以后要取代所有人的工作,要变成什么无所不能的超级智能。我倒觉得没那么吓人。它到现在连我家的猫和烤鸡都分不清楚,连老人系鞋带和跌倒的区别都要教好久,哪来的那么大的本事。

急不来的。

你花了几个月攒出来的训练集,可能因为某一次拍照片的时候没注意背景里多了个无关的东西,就让之前所有的努力打个对折,这种事在做模型的人眼里,根本算不上什么新鲜事。

那天我把训练集里那六张带毛绒脚垫的烤鸡照片删掉,重新跑了一遍模型。

这次屏幕上跳出来的结果是:92%,三花猫。

我家猫踩在F键上,甩了甩尾巴,完全不知道自己刚才差点被当成了晚饭。

作者|科技

排版|科技

审核|乐乐

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:调机器学习模型的第三十晚,我把蹲在键盘上的猫判成了烤鸡
文章链接:https://m.lfdjt.com/p/keji/a/16648.html