豆豆的烦恼:为什么迷宫这么难?
豆豆的烦恼:为什么迷宫这么难?
清晨的阳光从树叶缝隙里漏下来,落在森林边缘那座古老大树洞的门口。树洞里住着一个小男孩,他叫豆豆,今年七岁半。豆豆有一双圆圆的眼睛、一个翘起来的小鼻子,最厉害的是他的脑子——里面装满了问号。
"为什么天是蓝的?""为什么鱼要在水里游?""为什么猫咪会从很高的地方跳下来却不会摔疼?"这些问题,妈妈每天要回答八百遍。
但今天早上,豆豆遇到了一个他从来没见过的问题。
豆豆的第一次冒险:迷宫碰壁的烦恼
事情是这样的。
奶奶答应过豆豆,只要他能在森林里找到那块"金色奶酪",晚上就给他做最爱吃的奶酪烤土豆。奶奶说,那块奶酪藏在森林深处一座老迷宫的最中间。
"迷宫?"豆豆兴奋地跳起来,"我会走迷宫!我在家里玩过好多次!"
可是当豆豆真的站在那座迷宫入口的时候,他才发现——家里那种用积木搭的小迷宫,跟眼前这座真正的森林迷宫比起来,简直就是小蚂蚁遇到了大象。
迷宫入口是一棵巨大的橡树,树干中间裂开一个洞,刚好够豆豆钻进去。豆豆深吸一口气,钻了进去。
"向左走!"他对自己说。
走了五步,撞到了一面长满青苔的墙。嗵!鼻子好疼。
"那……向右走?"
走了三步,又撞到了一面墙。
"再向上走?"
走了两步,还是一面墙。
豆豆在迷宫里转来转去,一个小时过去了,两个小时过去了。他的手摸过每一面墙,膝盖上沾满了泥巴,鞋带也松了。可是那块金灿灿的奶酪,连影子都没看到。
最后,豆豆一屁股坐在地上,嘴巴撅得能挂油壶。
"为什么这么难?"他大声问,"为什么我走了这么多遍,还是不知道哪条路是对的?"
就在这时,他听到一个温柔的声音从头顶传来。
"因为你在用'碰运气'的方法呀。"
豆豆抬头一看——一只戴着眼镜的猫头鹰,正倒挂在一根树枝上,笑眯眯地看着他。
"你是谁?"豆豆问。
"我是格洛格。森林里的小孩子迷了路,都会来找我。"
"格洛格爷爷,"豆豆赶紧站起来,鞠了一躬,"你能告诉我,怎么才能找到那块奶酪吗?"
猫头鹰格洛格推了推眼镜,慢悠悠地说:
"我可以告诉你奶酪在哪。但是我更想告诉你一件更重要的事——"
"为什么有些路,你走过一次,下次就知道怎么走了。"
豆豆歪着脑袋:"这……这有什么为什么?走过了不就记住了吗?"
格洛格笑了,翅膀轻轻一挥:"那我们先来观察观察森林里的朋友们,看看他们是怎么'记住路的'。"
生活中的学习:蜜蜂找花、猫捉老鼠、孩子学骑车
格洛格带着豆豆爬上了一棵高高的枫树,俯瞰整个森林。
"你看见那边那片野花丛了吗?"格洛格用翅膀指。
豆豆眯起眼睛,看见一只小蜜蜂嗡嗡嗡地在花丛中飞。
"看见了。"
"看仔细——那只小蜜蜂,是第一次来采蜜。"
豆豆认真地看着。他发现,那只小蜜蜂一开始飞得乱糟糟的——一会儿往东,一会儿往西,还撞到了一朵蒲公英上。可是过了一会儿,它好像找到了窍门,开始在同一片花丛里来回穿梭,背上的小篮子一点点变黄、变鼓。
"它变聪明了!"豆豆惊叫。
"对,"格洛格点点头,"这只蜜蜂今天早上第一次来的时候,可能飞遍了整片森林才找到这一丛花。但到了下午,它就知道——这丛花最甜,这条路最近。所以它会反复来这里。你猜,明天它会怎么样?"
"明天……它一来就直接飞到这里!"
"聪明!"格洛格满意地笑了,"这就是'学习'。"
豆豆挠挠头:"可是蜜蜂又没上过学,它怎么学习的呢?"
"好问题,"格洛格说,"蜜蜂不是坐在教室里学习的。它是靠两样东西:第一,它的身体去'试'了——它飞过了很多花,试过才知道哪朵最甜;第二,它得到了'回报'——甜甜的花蜜。回报让它知道:这个方向、这朵花、这个时间,是对的。下次它还会这么做。"
豆豆眼睛亮了起来:"试了,然后尝到甜头,就记住了!"
"没错。你再看那边。"
格洛格用翅膀指向草地另一头。一只橘色的小猫,正悄悄地趴在一丛灌木后面,眼睛一眨不眨地盯着前方。豆豆顺着它的目光看去,看见一只胖胖的小田鼠,正在洞口探头探脑。
小猫一动不动。
小田鼠往前跳了两步。
小猫还是不动。
小田鼠又跳了三步,完全离开了洞口。
突然——小猫像一道闪电一样扑了出去!田鼠吓得转身就逃,可是已经太迟了,小猫一只爪子稳稳地按住了它。
"哇!"豆豆看得入了神。
"你觉得这只小猫天生就这么厉害吗?"格洛格问。
豆豆想了想:"我觉得……一开始不是的。"
"对。"格洛格说,"小猫小时候,扑过蝴蝶、扑过自己的尾巴、扑过飘下来的树叶——大多数时候都扑空了。它就一遍一遍地试:跳得太早,扑空;跳得太晚,田鼠跑了;角度不对,摔了个四脚朝天。可是每扑中一次,它的小脑袋里就会记住一点点:'原来这个时候、这个角度、这个速度,是对的。'"
"所以它越扑越准!"豆豆说。
"对。它不是学会了'扑'这个动作,它是在无数次失败和成功中,找到了'怎么扑最容易成功'的秘密。"
格洛格又带着豆豆飞到了森林边缘,那里有一条弯弯曲曲的小路。远处,一个扎着辫子的小女孩正骑着一辆带辅助轮的自行车,跌跌撞撞地往前蹬。
"你再看这个小姑娘,"格洛格说,"她叫小梅。她今天是她学骑车的第二天。"
小梅一会儿往左歪,一会儿往右歪,车龙头扭来扭去像一条蛇。突然,她撞到路边的一块小石头,摔了个屁股蹲。
"哎呀!"豆豆忍不住叫出来。
可是小梅揉揉屁股,又爬上了车,继续骑。这一次,她没撞石头,可是车龙头又歪了。再一次,车龙头稳了一点。再一次,她居然骑出去二十多米都没倒!
"她在变好!"豆豆激动地说。
"对。你看她和小猫、和小蜜蜂有什么共同点?"
豆豆认真想了想,说:"她们都没有老师——没有人站在旁边手把手地教她们'这次应该往左、应该踩踏板'。她们是自己一遍遍地试,试错了摔一跤,试对了就骑得远一点。"
格洛格点点头,眼镜后面闪着光:
"你说的这三个例子——蜜蜂采蜜、小猫扑田鼠、小梅学骑车——都包含着同一个秘密。这就是我要告诉你的第一个大秘密。"
格洛格伸出翅膀,在空中画了一个大大的圆:
"学习的本质,就是从经验中改进行为。"
"一开始可能做得不好,但只要能不断尝试,并且能感觉到'这样做是好的'或者'这样做是不好的',下一次就会做得更好一点。再下一次,又更好一点。"
豆豆默默地把这句话念了三遍,然后抬起头:"格洛格爷爷,我好像……明白了一点点。"
"明白什么?"
"我今天早上在迷宫里乱撞,其实就是在'试'。可是我有一个地方做得不对。"
"哪里不对?"
"我没有'感觉到哪条路是好的、哪条路是不好的'。"豆豆不好意思地说,"我撞墙的时候,只是觉得疼,没有真正记住——'哦,这条路不行,下次别走。'我走到死胡同时,也没有认真记住——'哦,这是个死胡同。'我每一次撞墙,都像是第一次撞墙。"
格洛格满意地笑了:"你的总结能力,比很多大人都强。"
智能体(Agent)的定义:会做决定的小家伙
"好,"格洛格落到豆豆面前的树枝上,正了正眼镜,"现在我们要学一个很重要的词。科学家们给那些'会做决定、会行动、会从经验中学习'的小家伙,起了一个共同的名字。"
"什么名字?"
"智能体。"格洛格说,"在英文里叫 Agent。"
"智能体……"豆豆念了一遍,"听起来怪怪的。是什么意思呢?"
"你看,"格洛格说,"蜜蜂是不是会做决定?它决定往左飞还是往右飞,决定落在哪朵花上。"
"是。"
"小猫是不是会做决定?它决定什么时候扑出去,决定扑多快。"
"是。"
"小梅是不是会做决定?她决定什么时候蹬踏板,决定车龙头往哪边转。"
"是。"
"那你呢?豆豆,你是不是在迷宫里做了一堆决定?虽然大多数决定是错的。"
"……是。"豆豆有点不好意思。
"它们四个,加上那台会下棋的电脑、那个会吸地的机器人小圆盘,再加上你自己——都是智能体。"
"哇,"豆豆眼睛睁得圆圆的,"这么多种东西,都是智能体?"
"对。智能体不一定长得像人,也不一定像人一样聪明。它最重要的特征是三个——"
格洛格竖起三根羽毛:
"第一,它能'观察'周围的世界。"
"蜜蜂用眼睛看花在哪里,用触角感觉花的香味。小猫用眼睛盯着田鼠,用耳朵听声音。小梅用眼睛看前面的路,用身体感觉车龙头在往哪边歪。下棋的电脑呢?它'看'棋盘上的棋子。"
"第二,它能'做决定'。"
"蜜蜂决定往左还是往右。小猫决定扑还是不扑。小梅决定蹬还是不蹬。电脑决定把马跳到 E7 还是 F5。"
"第三,它能'行动',让自己的决定变成现实。"
"蜜蜂扇动翅膀飞过去。小猫蹬后腿扑出去。小梅的脚踩下踏板。电脑把棋子放在那个格子里。"
格洛格看着豆豆:"你看,智能体不一定非要是人。它可以是蜜蜂,是小猫,是会下棋的电脑,是吸尘机器人,也可以是你。它的关键不是'长什么样',而是——它能不能观察、做决定、行动。"
豆豆兴奋地说:"那我也是智能体!"
"对,你也是。"格洛格笑了,"而且你是一个非常厉害的智能体——你不仅会观察、做决定、行动,你还会说话、会问为什么、会讲故事。这一点上,蜜蜂就比不过你了。"
"哈哈哈,"豆豆开心地笑了,"那蜜蜂是简单的智能体,我是复杂的智能体?"
"你可以这么理解。"格洛格点点头,"科学家们把'智能体'想象成一个小盒子。盒子里面装着大脑,眼睛、耳朵、鼻子相当于它的'感觉器官',手、脚、翅膀相当于它的'行动器官'。它把看到、听到、感觉到的东西送进大脑,大脑做决定,然后让手脚去执行。"
"就像我!眼睛看、耳朵听、脑子想、腿脚跑!"豆豆拍着自己的脑袋说。
"完全正确。"格洛格说。
> 【小知识·侧边栏】 💡 > > 智能体(Agent)这个词,在人工智能这门学问里非常非常重要。它指的是任何能"看"到周围的世界、做决定、并且动手去做的家伙。一只蚂蚁是智能体,一台扫地机器人是智能体,一个会下棋的程序也是智能体。读这本书的时候,你只要记住一句话——会观察、做决定、行动的小家伙,就是智能体。
环境(Environment):豆豆周围的森林、墙壁、奶酪
"好,"格洛格继续说,"既然有了智能体,那它就一定要待在一个'地方'里做决定。这个地方,科学家们叫它'环境'。英文叫 Environment。"
"环境就是它周围的一切?"豆豆问。
"非常对。"格洛格说,"对于蜜蜂来说,花丛在哪里、风往哪边吹、有没有下雨,这些都是它的环境。对于小猫来说,田鼠在哪里、草丛有多高、有没有别的动物来抢,这些都是它的环境。对于小梅来说,路面是平的还是坑坑洼洼的、风大不大、有没有别的车,都是她的环境。"
"那对于我来说,"豆豆想了想,"环境就是——迷宫里的墙、地上的泥巴、那块奶酪的位置、还有我现在闻到的树叶味道。"
"对!你的总结非常准确。"
格洛格又伸出翅膀,在空中画了一个圈:
"环境是智能体之外的一切。"
"但是,"格洛格强调了一下,"'之外'不是说环境跟智能体没关系。恰恰相反——智能体和环境是不断互动的。"
"怎么个互动法?"
"你看啊,"格洛格说,"智能体先观察环境。蜜蜂看见左边有花、有没有花、有几朵。小梅看见前面的路是平的还是上坡。"
"然后,做决定。蜜蜂决定往左飞。小梅决定加速蹬。"
"接着,行动。蜜蜂飞过去了。小梅的脚踏下了踏板。"
"这一行动,又会改变环境。蜜蜂把花蜜采走了,那朵花的花蜜就少了。小梅骑到了前面那段路,那段路就成了'她已经走过的路',前面的路就成了'她还没走过的'。"
"智能体再观察这个新的环境,再做新的决定……"
"这个过程,就像一个永远转下去的小车轮。"格洛格说,"科学家们给它起了个名字,叫——智能体-环境循环。"
豆豆歪着脑袋:"能让我看看这个循环长什么样吗?"
"当然可以。"
格洛格用爪子在地上画了一幅图:
```mermaid flowchart LR A[智能体<br/>Agent] -->|动作<br/>向左/向右/向上/向下| B[环境 Environment<br/>森林、墙壁、奶酪] B -->|新观察<br/>看到了什么| A B -->|奖励/反馈<br/>撞墙 -10 分 找到奶酪 +100 分| A ```
"看见了吗?"格洛格指着图说,"左边那个方块,是豆豆——也就是智能体。右边那个大圈,是迷宫——也就是环境。豆豆做一个动作,比如'向左走',这个动作会改变环境——可能撞到墙,可能走进一条新路。然后环境会给豆豆两个回信:一个是'新的观察'——你现在看到了什么;另一个是'奖励'——你这次做得好不好。撞墙的奖励是负数(很糟糕),找到奶酪的奖励是正数(非常好)。豆豆收到这些回信之后,再做下一个动作。"
"一直这样转下去。"豆豆说。
"对,一直转下去。"格洛格说,"学习就发生在这个循环里。因为豆豆每一次都会从'奖励'里学到一点东西:'哦,上次向左走撞墙了,奖励是 -10,那下次我就不向左走了'。'哦,上次向上走看到了新路,奖励是 0,那再试试'。'哦,最后一次向右走找到了奶酪,奖励是 +100,那这个方向太棒了,要记住'。"
"所以,"豆豆慢慢地说,"学习不是一次就完成的,是……很多次、很多次、很多次,慢慢变聪明的。"
"非常对。"格洛格赞许地看着他,"你刚才这句话,可以写进人工智能的教科书里。"
> 【小知识·侧边栏】 💡 > > 智能体(Agent)和环境(Environment)是一对好搭档。它们之间一直在玩一个"你做我看,我说给你听"的游戏。智能体做动作,环境给反馈;智能体做下一个动作,环境再给新的反馈。这个游戏转了一圈又一圈,转着转着,智能体就变聪明了。这个不断转动的小车轮,就是强化学习(Reinforcement Learning)最基本的框架。在后面的章节里,我们会一次又一次地回到这个图上,把它变得越来越大、越来越丰富。但不管怎么变,最核心的,永远是这个"智能体-环境循环"。
强化学习 vs 监督学习:表扬比答案更管用
"格洛格爷爷,"豆豆突然问了一个新问题,"我有一个同学,叫小亮,他每天都要去上补习班。补习班的老师会告诉他哪道题做错了、应该怎么做。那小亮也是在学习吧?他的学习和我刚才看到的蜜蜂、小猫、小梅的学习,有什么不一样吗?"
格洛格推了推眼镜:"你问的这个问题,价值一百万。"
"啊?"
"科学家们把'学习'分成很多种。你说的那种'老师告诉你答案'的学习,叫监督学习(Supervised Learning)。我刚才给你看的蜜蜂、小猫、小梅那种'自己试、试错了就难受、试对了就高兴'的学习,叫强化学习(Reinforcement Learning)。这两种学习,是人工智能里最重要的两大家族。"
"它们俩有什么区别呢?"
"我们用一个小故事来说明。"格洛格说,"假设有一只叫小灰的小狗,它要学一个本领——'听到主人喊'坐下',就乖乖坐下'。"
"第一种方法:监督学习。"
"主人是一个耐心的老师。每次主人喊'坐下',如果小灰坐下了,主人就说'对了对了,你真棒',并且立刻从口袋里掏出一块小饼干喂它。如果小灰没坐而是站了起来,主人就轻轻按着它的屁股,让它坐下来,然后说'不对,要坐下',并且不给饼干。"
"小灰一开始不懂,乱做一气。可是它发现一个秘密——只要'做对了',就有饼干吃;做错了,没有饼干。 于是它慢慢地、一点一点地调整自己的行为,直到它能在主人说'坐下'的时候,准确地做出坐下的动作。"
"在这个过程中,"格洛格强调,"小灰其实是在学习一个规律——'主人说 A 的时候,我应该做 B'。它不需要自己去发现 A 应该对应什么 B,老师直接告诉它了。"
"哦,"豆豆说,"监督学习就是有老师手把手教。"
"完全正确。"格洛格说,"在人工智能里,监督学习也是这样。我们给电脑看一万张猫的照片,告诉他'这是猫';看一万张狗的照片,告诉他'这是狗'。电脑慢慢地就学会了'猫长这样,狗长那样'。它不需要自己去发现规律,老师(也就是我们人类)已经把答案告诉它了。"
"明白了。"豆豆说,"那强化学习呢?"
"强化学习不太一样。"格洛格说,"我们换一种方式教小灰——这次主人不说话,只是远远地站着。"
"小灰听到'坐下'这个口令。它不知道自己应该做什么。它可能坐下来,可能站起来,可能去追自己的尾巴,可能跑去闻地上的骨头。"
"如果它恰好坐下了,主人就笑着点点头,扔一块饼干给它。如果它站起来或者乱跑,主人就摇摇头,什么也不给。"
"小灰一开始也是乱做一气。但是它慢慢地发现——坐着的动作好像和'得到饼干'有关。它不知道这是什么规律,它只知道'我上次坐着,得到了饼干;我上次站着,没有饼干'。于是它多试几次坐着,发现果然又有饼干。慢慢地,它就明白了:'哦,原来我应该坐着'。"
"这不就是我刚才的蜜蜂和小猫吗?"豆豆说。
"对!"格洛格高兴地拍起翅膀,"监督学习有老师,老师会告诉你'对'或者'错',并且告诉你为什么。强化学习没有老师,只有'奖励'——你做对了,给你一块糖;做错了,什么都没有。至于为什么对、为什么错,强化学习不关心,它只关心'我能不能拿到更多糖'。"
豆豆歪着脑袋想了想,突然说:"我有一个感觉,不知道对不对。"
"你说。"
"我觉得……监督学习像是考试。考试的时候老师会告诉你哪道题对了、哪道题错了。但是强化学习像是在玩游戏。你不会每走一步都有人告诉你'你应该往左、应该往右'。你只是知道'我打怪赢了能加分','我被怪打了一下掉血了'。你得自己琢磨怎么玩。"
格洛格眼镜差点从鼻子上掉下来:"你——你怎么能说得这么好?"
"因为我每天打游戏呀。"豆豆有点不好意思地笑了。
"哈哈,"格洛格大笑起来,"那你可太懂强化学习了!打游戏就是典型的强化学习。你不会每做一个动作都有人教你'应该按哪个键',你只会看到'分数上升'或者'游戏结束'这两个信号。你得自己摸索怎么打能得更高分。"
"原来人工智能和打游戏是一个道理!"豆豆恍然大悟。
"人工智能里最厉害的那些程序,"格洛格说,"比如下围棋的 AlphaGo,比如下象棋的 Stockfish,比如那些会开车的程序——它们中的很多,都是用强化学习训练出来的。"
"哦哦,"豆豆点点头,"那老师教我们写作业,就是监督学习啦。"
"对,老师批改作业,告诉你'这个字写错了,应该这么写',那就是监督学习。"
"那……"豆豆眼睛转了转,"那我们自己学骑自行车呢?"
"是强化学习。"格洛格笑着说,"没有人能告诉你'车龙头应该往左偏 7 度、踏板每秒应该踩 1.3 下'。你只有'摔跤'和'没摔跤'这两种反馈。多摔几次,你自然就学会了。"
"那我们学说话呢?"
"那个有点复杂,"格洛格挠挠头,"小宝宝学说话,既有点像监督学习(爸爸妈妈会重复正确的发音),也有点像强化学习(说对了大人会笑、说错了大人不会理你)。学习这种事,往往是很多种方法混在一起的。"
> 【小知识·侧边栏】 💡 > > 监督学习 vs 强化学习,一句话总结: > > - 监督学习:老师站在你旁边,每做一步都告诉你"对"还是"错",并且告诉你为什么。适合有大量"标准答案"的任务,比如认猫认狗、识别手写数