跳转至

2024.09.27.GPT-builder(进化的核心:递归)

上节课呢,其实我们讲了一个极其重要的认知是什么呢?就是判断啊,其实是智能的核心。啊,判断是智能的核心。呃,去年的时候呢,呃,我在这个得到呢,发了一个小的课程,叫《AI时代的家庭教育》,对吧?那在那里呢,我也提到这样一点,就是在未来的时代里,培养孩子的判断力才是教育的中心。当然了,随着时间推移哈,我去观察那些读者的反馈,我觉得他们其实并没有深刻的理解这样一点。当然了,今天呢,我们社群里的人呢,也都听过那个课,然后呢,又重新在另外一个课里——就是我们讲Chat GPT、讲人工智能、讲AI的课里——再次听到,他也许会对你有一个巨大的提醒:这个智能啊,其实呢,就是源自于判断的。你没有判断,就没有智能,对吧?这句话真的非常非常重要,这个认知呢,也非常非常的锋利,对吧?

所以呢,当我们去审视教育的时候,如果教育这个东西不能够提高一个人的判断力,那么这个所谓的教育其实就是垃圾。说句实话,它不仅仅是垃圾,还更可能是毒药。很遗憾啊,我们在日常生活当中看到的学校也好,老师、家长也罢,在剥夺孩子判断力这件事上非常执着,毁人不倦——摧毁的“毁”,不是教会的“毁”。好了,我们没有时间和义务在那里吐槽,我们自己知道了,我们用我们的认知改变我们的生活就好。

那上一节课呢,我们讲了判断是智能的核心。那这一节课呢,我们要再进一步,讲另外一个更厉害的东西。那进化的核心是什么?智能的核心是判断,那么进化的核心是什么?进化的核心是一个需要认真学习的概念,叫做“递归”。这个递归这个东西呢,嗯,某种意义上哈,有一定的理解难度,然后呢,也常常被程序员也好、工程师也好,描述成一个高级的概念。那理解递归有多难呢?有人曾经开过一个这样的玩笑,说呀,理解递归的前提是理解递归,对吧?这句话很气人哈——这是理解递归的前提是理解递归,对吧?那么从这句话呢,你也大致能够理解哈,理解递归的难度,对吧?

不过呢,说句实话啊,我们确实是可以用大白话讲明白递归究竟是什么,对吧?我们先看一个嗯,你曾经看过的电影片段。这个电影大家估计都看过哈,《Inception》啊,中文《盗梦空间》。然后呢,在这个电影里有一个著名的场景,就是在梦境里啊,这个呃……呃……呃……这个女主啊,在梦里呢,把两面镜子面对面摆在一起,然后呢,瞬间就出现了哈,他们两个人——就是Ariadne和那个那个……呃,Cobb——这两个人的无数倒影。其实呢,这就是一种递归现象。那为什么它是递归现象,我们一会儿啊,反过来就能够彻底理解了。

那么为了讲解清楚什么叫递归啊,我们先嗯,从一些基本概念说起。就在生活当中啊,一般来说,当我们去做一件事情的时候,都有处理的方法。每一个方法啊,都有这个方法所需要的输入,以及这个方法所能够产生的输出,对吧?而使用这个方法的过程呢,可能也被我们这个呃说成叫“处理过程”。那处理过程就是处理方法嘛,对吧?比如说哈,你有做菜的方法,那你做菜的方法就需要一些输入,才能做出菜来嘛。那你做菜的方法的输入是什么呢?就是那些食材。而你做菜的方法,呃,针对那些食材作为输入之后,处理完了之后呢,会产生个输出,就是你做好的菜,对吧?所以呢,在这里啊,输入呢就是食材,输出呢就是你做好的菜,而方法呢就是你做菜的方法,对吧?这是我们日常生活当中哈,呃,处理任务的时候经常用到的概念:输入、方法、输出,或者是输入、处理、输出。这个东西呢,大家一看都认识,对吧?

叫螺丝钉。你要是想把这样一个螺丝钉啊,这个拧进木板,那么你就需要有方法和工具,对吧?比如说哈,我猜你把这样的螺丝钉,呃,这个这个钉进木板或者拧进木板,你需要两个工具,或者称为两个方法。那一个方法是什么呢?就是先用锤子,对吧?把这个螺丝钉当做输入,然后呢,敲几下定进去一点点,然后输出结果就是木板上有一个螺丝钉,那个螺丝钉的尖已经钉入了木板,这是锤子这个方法的输出。而后呢,你要启用另外一个工具,或者是另外一个方法,是什么呢?就是螺丝刀,十字花的螺丝刀。你用上一个方法啊产生的输出——即在桌面上有一个已经钉进去了一点点的螺丝钉,然后呢,它的这个钉头呢,这个钉帽呢是十字花的——所以拿起个十字花的螺丝刀,然后呢,一点一点的把这个螺丝钉拧到木板里去。所以呢,在生活当中啊,我们一般来说,每一个方法都有一个针对的输入和针对的输出,对吧?不同的方法组合起来,不同的方法可以把另外一个方法的输出,当做这个方法的输入来使用。

所以你看啊,基本的处理过程啊,或者是方法的应用过程,就是这个图示所展示的这样啊。最初的输入呢是一个螺丝钉,对吧?然后呢,用方法——锤子方法,然后呢,这个螺丝钉就变成了一个钉在木板上进去了一点点的螺丝钉,这就是锤子这个方法的输出。而这个输出呢,被当做另外一个、下一个方法的输入,对吧?然后下一个方法是什么呢?是螺丝刀。然后呢,这个螺丝刀一直一直拧,然后呢,到最后的输出结果,就是这个螺丝钉被整个拧进了木板。

但是呢,也有一些方法能怎么样呢?也有一些方法呀,可以把上一次自己执行的输出结果,当做下一次自己执行的输入。这样的方法呢,就叫递归方法。在《好的家庭教育》里面呢,我举过一个例子。现实生活当中啊,递归的方法是特别特别多的,只不过是你没意识到而已。一旦你有了递归思考能力,你理解了递归这个概念,然后你就会发现说,生活当中处处都是递归。我曾经说过,其实跑步这个方法呢,就是一个递归的方法。因为你每天跑步的时候,比如说你第一天啊,你的身体状态是那个样子,然后呢,你去跑步了,你实施了跑步这个方法。而跑步这个方法在当时的情况下,是你第一天的身体健康状况,对吧?然后跑步的这个方法执行的结果是什么呢?就是你的身体比原来更强壮了一点,更健康了一点,对吧?然后第二天呢,你又调用了同样的方法,还是跑步,对吧?你没有把方法从锤子变成螺丝刀,而是什么呢?依然是跑步。再次还是跑步,只不过呢,这一次——就是第二天你跑步,即第二次你执行跑步这个方法的时候——它的输入是你昨天跑步(同样这个方法)的输出,对吧?然后呢,它就会产生一个输出。第二天之后呢,你的身体又健康了一点点。第三天呢,你依然要跑步,对吧?那这一次呢,同样的方法没有变,还是跑步这个方法,但是呢,这一次方法——跑步这个方法——所采取的输入,是上一次啊你用同样方法形成的输出。所以呢,嗯,跑步这个方法呢,其实本质上来看,就是一个递归的方法,对吧?我们把一个递归的方法反复执行的过程,叫做“迭代”。

所以呢,那到现在为止哈,我们已经这个啊,一不小心啊,说了好几个概念了。所以我们现在重复一遍重要的概念啊,就这里面的递归就是:如果一个方法能够把他上一次执行的输出,当做这一次执行的输入,那么这个方法就叫做递归方法。这句话呢略略拗口,但是值得你反复地去阅读,对吧?甚至呢,为了——比如说你是父母的吧——为了将来哈,能够讲给自家孩子听啊,你必须做到说,把这句话拗口的这句话,一个字不差地背下来啊,闭着眼睛啊,或者摔个跟头也能把这句话说对的地步啊。省着讲重要概念的时候啊,卡壳了,那么就特别影响啊听众的注意力,对吧?OK,所以,如果一个方法可以把上一次执行的输出,当做再一次执行的输入,那么这个方法呢,就叫做递归方法。

这个递归的方法啊,核心就在于说,他能够把上一次的输出当做这一次的输入。所以呢,仔细理解下面这句话:所以递归方法的一个特征,就叫做自己能够调用自己。递归方法的特征叫做自己能够调用自己。这句话呢,再次就是突然听起来不知所以然,没有关系,你先把它记住,一个字不差地记住。然后呢,以后我们会反复遇到这种情况,自然你就理解了。然后早晚有一天,你可能需要向别人解释这件事情,你就会发现说,解释他真的还挺难的。但没有关系,我们一步一步来。这句话呢叫:递归的方法有个重要的特征,就是他能够自己调用自己。

当然了哈,以后你可能万一学编程的话,你会知道说哈,方法这个词呢,在编程里呢,哈,呃,也有一些其他的含义。而递归的这个这个词呢,常常跟函数连在一起,对吧?呃,在编程的世界里,我们日常生活当中所说的方法啊,被称为函数啊,这是特定领域里的特定概念,我们一点一点,呃,将来你要学的话,一点一点学就是了,不着急。

好了,那么回到哈,刚才,呃,这个这个这个Ariadne啊,这个给Cobb展示把两面镜子面对面摆在一起的时候,会产生什么现象。然后呢,这个这个这个,诺兰呢,在电影里哈,展示了这个神奇的一幕,对吧?这里面呢,就涉及到一个方法。这个镜子呢,他有一个方法,什么呢?就是他能够把他的输入——在外部的输入——在镜子里面啊,这个产生镜像,一模一样的展示出来。这个呢,就是镜子的方法,镜子这个工具的方法。然后当两面镜子面对面摆在一起的时候,这个方法就产生了反复调用自己的现象,对吧?对啊,因为对面的镜子所展现的,是对面的镜子里面的景象。所以每面镜子都在展示外部的世界,以及外部的世界在自己的镜子里面产生的镜像,对吧?听起来非常拗口啊,但总而言之啊,很简单的说,就是当两面镜子面对面摆在一起的时候,镜像这个方法开始反复调用自己,无穷尽地调用自己,所以你就看到了无穷无尽的两个人的镜像。

好了,那么接下来我们说另外一件事。你现在已经理解了递归啊,大致理解了递归。那我们为什么会说啊,递归是进化的核心呢?啊,递归是进化的核心,就是一切能够进化、能够发展的事物,不管他有没有生命啊,都有递归的方法。你看啊,呃,我们生物啊有繁衍,人类要生孩子,对吧?这个繁衍本身就是一种递归函数,就是他每一次执行的时候,他的输入都是上一次执行的输出,对吧?那么人类就这样啊,不断的繁衍,而且呢还越来越多。然后你再看哈,自然界当中,就是树枝分叉,它就是一个递归函数,对吧?它动作很简单,就是分叉,但是不断分叉,就变成了呢,就变成了树冠。树是这样。那我们再去看树叶,你会发现很多树叶呢,都有一些哈规则的形状,而那些规则的形状往往是递归的方法产生的啊。花瓣其实也是递归的方法产生的。然后呢,嗯,你可以去搜一个词啊,叫Koch Snowflake,这是科赫雪花,对吧?它也是哈,递归的方法形成的。

我在敦煌、张掖啊,然后呢啊,路过一些地方的时候呢,就沙漠里孤零零一个土包,那个土包上呢长着梭梭树,就一棵梭梭树,对吧?然后呢,人家就会告诉我说,这棵梭梭树啊,有上百年的这个历史,要不然长不了这么大的土包的。那个土包的形成,其实也是递归方法的形成,就是同一个方法不断的执行,在执行的过程当中,每一次都把上一次执行的结果,当做这一次执行的输入,所以是一个递归的方法形成的那个土包。那里长出了一棵梭梭树,然后呢,风沙就过来,对吧?那个树呢没有倒,没有死,所以呢,沙子就会路过它啊,然后呢,尘土就会留下来。而这些尘土呢,啊,会吸水,会给这个梭梭树啊供给水分,对吧?那梭梭树就再长大一点。所以每一次啊,风沙吹过来啊,是同样的,每一次风沙吹过来呢,都是同样的方法。然后呢,每一次这个同样的方法被调用的时候呢,它的输入都是上一次同样的方法执行的时候产生的输出。于是呢,那个土包就一点一点发展起来,对吧?那个梭梭树又一点一点长起来,然后那个梭梭树的根就在那个土包下啊,越延越深,对吧?别看那个梭梭树啊,嗯,在地面上啊,就是一个像灌木一样的矮树,对吧?但它的根是非常庞大的,对吧?那怎么出来的啊?其实还是递归的方法反复执行,发展出来的结果。

所以呢,毫不夸张的讲,就是一切进化的核心,到最后啊,都是递归,都是递归。一切发展的核心,到最后都是递归。甚至我们可以说,一切进化的核心啊,都是递归。甚至呢,你会发现说,不管它有没有生命,可能都有递归能力,对吧?那刚才呢,我给大家讲了啊,我们跑步,对吧?是一种递归,对吧?树分叉是一种递归,树还有生命呢,对吧?那那那这个雪花没有生命,它也是递归形成的啊。土包没有生命,梭梭树下土包没有生命,它也是递归的方法形成的。所以啊,你看啊,哪怕是没有生命的情况下,发展的核心都是递归,那更何况有生命的呢?更何况有智能的生命呢,对吧?或者是说有智能但没生命的呢?

你看,我们今天就活在一个哈特别奇怪的时代。短短一两百年前,就不存在这种现象啊。这个世界呢,曾经是只有有生命的才有智能,对吧?有智能的必然有生命。但是呢,自从布尔代数出现之后啊,开关出现之后,晶体管带上了开关,应用了布尔代数,然后计算机就出现了。然后我们就出现了什么呢?我们这个地球上就出现了大量的、有一定智能的、但没有生命的东西。然后呢,他们在发展,怎么发展的呀?我告诉你,全是递归在起作用,就是各式各样的递归方法在他们身上应用。今天甚至发展出来了人工智能。所以你明白哈,这个递归有多重要了吧,对吧?然后这个递归思维也非常非常重要。而且呢,在生活当中,但凡有递归现象的、有递归能力的,都值得我们重视吧?

比如说哈,我举个例子,对吧?我们学习,其实就是一个递归方法。你每一次学东西的时候,应用的是同样的学习这个方法,但是每一次调用的,都是上一次学习的输出,当做这一次学习的输入。你就是这样一点一点进化的。再比如说,为什么我们那么重视投资啊?这背后呢,还是递归思维在起作用。不重视递归的人,他没有办法重视投资的。但是重视递归的人,没有办法不重视投资的。因为投资的核心其实就是递归,所以他有发展能力,对吧?他每一次执行的输入,都是上次执行的输出,反复调用自己,对吧?所以他有发展的能力,对吧?你管他有没有生命呢,对吧?这也是为什么到最后,在众多的投资策略里,我们会选择——至少李笑来会选择——定投策略。你仔细想想看,定投策略是不是最本质的递归方法?

好了,你本来呢想听李笑来讲课,讲什么呢?讲chat GPT,讲人工智能的用法,对吧?然后你来听课的时候呢,你总有一些奇怪的感觉,就这人啊,讲课的时候好像总在讲别的东西。当然了我不会跑题的,我绝对不会跑题的。我只是在告诉你一件事情:你认为重要的,可能不是最重要的;你认为不重要的,可能是最重要的,对吧?所以呢,啊,我们上来啊,你就会发现说,我在跟你讲如何去研究工具,那工具有普世方法论的,对吧?然后呢,如何去思考,如何去整理,如何去判断。那今天呢,啊,我们又讲了智能的核心之外啊,进化的核心,那那就是递归。那递归跟人工智能有什么关系呢?关系太大了。我们姑且不论递归这个方法,在人工智能发展的过程当中是不可或缺的,但你不是计算机科学家,所以呢,你可能不能够马上理解。但我想说的是,对你作为用户,使用人工智能来说,如果你脑子里没有递归思维的话,那么你用人工智能的方法,和那些脑子里有递归思维的人,不可能是一样的。

正如我刚才说,你看,在众多的投资策略当中,李笑来选择了定投策略,那背后呢,是有一定的激励和原因的。因为我是懂递归的,我了解递归的威力。所以在我眼里,我没办法不采用有递归的方法。那为什么其他人不采用呢?那有很多的原因,其中一个原因是他们不知道递归,当然也不可能知道递归的威力,当然也不会像我这样,有一个清晰的认知,简单明了的认定:递归就是进化的核心。如果我的认知是这样认定的情况,我如何不重视递归呢?我又那么重视递归的情况下,我又如何不选择递归的方法呢?所以,那懂递归的人,和不懂递归的人,是差别非常大的。

但是呢,无论如何,你现在已经变成了懂递归的人。然后呢,你脑子里有递归的概念,那你有没有应用呢?好了,我现在去问一个问题。请问,在过往的这么多年里,在过往的这么多年里,有另外一个AI机器人,更初级一点的AI机器人,叫Google。他没有今天的Chat GPT这么高级,对吧?但是呢,他也是一个智能的工具呀。你有没有问过Google这样一个问题?我们前两节课里提到一个事,有很多人哈,其实是不会说话的,也不会使用工具的。所以呢,他跑去Google去问Google绝对不可能回答的问题:我怀孕了吗?对吧?我英俊吗?OK,那么,但是假定同样的这个人,曾经向Google问过“我如何像专家一样使用Google”,那么他就绝对不会向Google提出那样奇怪的问题,是不是这个道理?

好了,那么在过往的20多年时间——28年时间里,对吧?——有那么多的人用Google,或者他的替代品,比如说什么百度,对吧?那究竟有多高的比例的人,曾经问过Google这样一个问题呢?我猜比例是非常非常低的,对吧?不用去做调查,我也知道结果啊。举个简单的例子,你知道以下符号在Google搜索引擎里的作用吗?我的意思是说,如果你曾经向Google问过这样一个问题——很简单的一句话啊,都是小学词汇构成的——“如何像专家一样使用Google”,“How to use Google like a pro”,那么你就一定会知道这些符号的用处。而这些符号的用处是非常大的。如果你不会用这些符号的话呢,你就相当于失去了搜索引擎——Google这个强大的搜索引擎的——99%的威力。

所以呢,嗯,我们不需要做什么调查哈,我们直接说,然后呢,你也能够理解这个陈述的合理性。也就是说,99%以上的人,在过往的26年时间里,只用到了Google的威力的1%不到。你自己评估一下自己,或者你评估一下自己身边的人,你就会知道说,我们的这个陈述一点都不夸张。其实同样的工具哈,放在不同的人手里哈,嗯,带来的效果不一样,是非常非常常见的,对吧?那你说哈,呃,我和张一鸣啊,用的都是苹果电脑,对吧?我们俩买苹果电脑价钱应该是一样的,不会我比他的更便宜,他比我的更便宜,对吧?他能买顶配,我也能买顶配,对吧?但是呢,人家呢用那个电脑搞出来一个抖音,对吧?我能用那个电脑,反正我没搞出来一个抖音。所以我们两个之间的差别啊,是非常大的,至少在电脑这个工具面前,你说是不是个道理,对吧?

那么大家都跑去哈,买最新款的iPhone,买最新款的安卓,买最新款的Windows,买最新款的这个MacOS电脑,到最后大家看着都不一样啊,对吧?所以说有99%以上的差异,一点都不夸张的。好了,那Google,1998年诞生啊,到现在是2024年,第一个AI机器人啊出现了,虽然有点原始,对吧?然后呢,二十几年之后呢,现在我们有一个另外的、相对更为高级一点的、啊,AI机器人,ChatGPT,对吧?那么你有没有想过,究竟有多少人