
那天晚上,我在客厅沙发上抱着电脑,盯着屏幕上一堆花花绿绿的曲线图发呆。
老婆端着两杯酸奶走过来,往我旁边一坐:"天天就看你对着电脑念叨什么loss在降、loss又卡住了。你到底在干嘛呢?给我讲讲呗,训练是咋回事?"
我接过酸奶,喝了一口,心想这可咋解释?毕竟她是个文科生,上次跟她说神经网络,她直接问我是不是在研究脑科学。
"行,那我给你讲讲。不过你得有点耐心啊,我尽量说人话。"
你知道小孩学说话是咋学的吧?
刚出生的婴儿,啥也不会。他看见一只狗,妈妈告诉他"这是狗狗",他就记住了。下次看见另一只不一样的狗,他可能会说"猫猫",然后妈妈纠正他"不对,这也是狗狗"。这样反反复复,见多了各种各样的狗——大的小的、黑的白的、毛长的毛短的——他慢慢就真的知道什么是狗了。
AI的训练,本质上跟这个差不多。
你喂给它一大堆数据,然后告诉它正确答案是什么。一开始它肯定猜得乱七八糟,跟瞎蒙没区别。但是呢,每猜错一次,它就调整一下自己,下次争取猜准一点。猜了几百万次、几千万次之后,它就"学会"了。
老婆听到这儿点点头:"这个我能理解,就跟刷题似的嘛,错题做多了自然就会了。"
"对,差不多这个意思。但关键问题来了——它怎么知道自己错了?错了之后又怎么调整自己呢?"
她一愣:"对哦,电脑又没有老师在旁边告诉它。"
"这就要说到两个核心的东西了。一个叫损失函数,一个叫梯度下降。"

我跟老婆说:"咱们先说损失函数。这名字听着挺唬人,其实特别好理解。"
"你不是最近在学做菜吗?"
她立刻来劲了:"对啊,我昨天做的那个糖醋排骨,你不是说太酸了吗?"
"对对对,就用这个例子。"
你看,假设最完美的糖醋排骨,甜和酸的比例应该是3:2,也就是放3勺糖、2勺醋。这是"标准答案"。
结果你昨天放了1勺糖、4勺醋。那这个差距是多少?糖少了2勺,醋多了2勺。把这些差距加起来(或者用更科学的方式算),你就能得出一个数字,表示"你离完美有多远"。
这个数字,就是损失。损失函数呢,就是用来计算这个数字的公式。
损失越大,说明错得越离谱。损失越小,说明越接近正确答案。如果损失是0,那就是完美,丝毫不差。
老婆恍然大悟:"我懂了!就跟考试分数似的。100分是满分,你考了60分,那你的'损失'就是40分。"
"聪明!就是这个道理。只不过这里是反过来算的——损失越低越好,有点像高尔夫的杆数,越少越厉害。"
她又问:"那AI知道自己错了之后呢?总不能干瞪眼吧?"
"这就涉及到第二个东西了——梯度下降。"
这个概念稍微抽象一点,但别怕,我给你打个比方。
想象一下,你现在站在一座大山上。山上到处都是起起伏伏的坡,有高有低。你的目标呢,是找到整座山最低的那个点——那儿有一汪清泉,喝一口就能成仙。
问题是:你是蒙着眼睛的,看不见路。
咋办?
你只能靠脚底的感觉。你往前伸一伸脚,试探一下地面:如果感觉前面是往下走的,那就往那边迈一步;如果感觉是往上的,那就不能往那边走。你一点一点挪动,哪边往下就往哪边走,最终就能慢慢走到一个低洼的地方。
这个过程,就叫梯度下降。
"梯度"是什么?说白了就是坡度。你脚底感觉到的"陡不陡、往哪边倾斜",就是梯度。
"下降"呢?就是顺着坡往低处走。
AI训练的时候,它面对的不是一座真的山,而是一个由损失值组成的"抽象的地形图"。它不断调整自己内部的参数(可以理解为做菜时放多少糖、多少醋),看看调完之后损失是变大了还是变小了,然后顺着"坡"往损失更小的方向走。
走了成千上万步之后,它就能找到一个损失很低很低的点。这时候,AI就训练好了。
老婆听到这,眼睛亮了:"我好像有点明白了!就是试错呗,每次错了就往好的方向调一点点。"
"没错,而且这个'一点点'很关键,我们叫它学习率。"

继续用刚才那个找山谷的比方。
你蒙着眼睛在山上走,每次迈一步。问题是,这步迈多大呢?
如果你胆子特别大,一下子迈出去三米远——有可能你直接就跨过了那个低点,走到另一边的上坡去了,然后你又折回来,又跨过去了……来来回回,永远走不到最低点,在那儿来回蹦跶。
如果你特别谨小慎微,每次只挪一厘米——那倒是稳,但你走到猴年马月才能到谷底啊?
所以,这个步伐的大小,得选得刚刚好。
这就是学习率的意义。
学习率太大,AI就会"震荡",损失降不下去,在那上蹿下跳的。学习率太小,AI就"收敛太慢",训练个几天几夜都没效果。只有找到合适的学习率,AI才能又稳又快地找到那个低点。
老婆说:"那这个学习率怎么定?也是瞎试吗?"
我无奈地笑了:"你别说,还真有点玄学的成分。一般会试几个不同的值,看看哪个效果好。不过有一些经验数值可以参考,不用完全从零开始瞎猜。"
到这,老婆已经大概明白了。我趁热打铁,把整个训练过程完整讲了一遍:
假设我们要训练一个AI识别猫和狗的照片。
第一步,准备好训练数据。
找一大堆猫和狗的照片,每张都标好"这是猫"或"这是狗"。
第二步,AI开始"猜"。
一开始,AI内部的参数是随机设置的,所以它的判断跟瞎蒙差不多。你给它看一只柯基,它可能信誓旦旦地说"这是猫!"
第三步,用损失函数算一算它错得有多离谱。
假设它说"80%是猫、20%是狗",而正确答案是"100%是狗"。那这个差距就很大,损失值就会很高。
第四步,用梯度下降往损失更低的方向调整。
AI会看看自己内部那些参数,如果把某个参数调大一点,损失会变小,那就调大一点。如果调小一点损失能变小,那就调小一点。就这样,顺着"坡"一点点往下走。
第五步,反复迭代。
用第二张照片再来一遍,然后第三张、第四张……几十万张图片过一遍,甚至过好几遍。每过一遍,AI的损失都会降低一点点,判断也会越来越准。
最后,损失降到很低很低了,AI也就"学会"识别猫狗了。

老婆听完,沉思了一会儿,突然问:"那它会不会走到一个小坑里,以为那就是最低点,其实不是?"
我一拍大腿:"你这个问题问到点子上了!"
确实有这种情况,我们叫它"局部最优"。就好比你蒙着眼睛走进了一个小洼地,四周都是往上的坡,你以为到底了,其实隔壁还有个更深的山谷。
为了解决这个问题,人们想了很多办法。比如:
这些方法都是为了帮助AI尽可能找到那个真正的最低点,而不是被小坑困住。
老婆又问:"那训练多久算完呢?总不能一直训练下去吧?"
"这也是个好问题。一般我们会设定一个目标,比如损失降到某个值以下,或者损失好几轮都不再下降了,就可以停了。就好比你做糖醋排骨,调了好几次味道都差不多了,就没必要继续折腾了。"
最后,我觉得可以用一个更贴近生活的例子,把整个过程再讲一遍。
假设你是一个新手司机,刚学会开车,要倒车入库。
一开始你方向盘打多了,车歪了,教练说"太偏左了"。你就往右打一点。下次又打少了,车又歪了,教练说"太偏右了"。你再往左调一点。
这里面:
练了几十次之后,你能一把就把车倒进去了。这时候,你就"训练"完成了。
AI的训练,本质上就是一个不断纠偏、不断调整的过程。它没有教练在旁边,但它有损失函数告诉它"错得有多离谱",有梯度下降告诉它"往哪个方向调"。

老婆听完,把酸奶喝完了,靠在沙发上说:"行,我大概懂了。就是AI通过不断犯错、不断调整,最后越来越接近正确答案。损失函数告诉它错多少,梯度下降告诉它怎么改。"
"总结得非常到位!你简直可以去给别人讲课了。"
她白了我一眼:"少来。那你天天看的那个曲线图是啥?"
"那个是损失曲线。横轴是训练的轮数,纵轴是损失值。如果曲线一直往下走,说明AI在进步;如果曲线不动了,或者乱跳,就说明有问题,得调整学习率或者换点别的方法。"
"懂了懂了,就跟看股票走势图似的。只不过你们希望它一直往下走。"
我笑了:"这比喻绝了。没错,我们就是希望这个'股票'一直跌,跌到谷底最好。"
她打了个哈欠,收走了两个空杯子,临走时说:"行,以后你再念叨loss,我起码知道你在说啥了。"
我目送她走进厨房,觉得今晚这个科普还挺成功。
说到底,很多看似高深的技术概念,换个角度讲,真没那么玄乎。训练一个AI,跟学做菜、学开车、甚至学任何新东西,道理都是相通的——犯错、反馈、调整、再来。
区别只在于,人类靠大脑,AI靠算法。