美文网首页Python
小Y&牛头人:递归思维与定义未知

小Y&牛头人:递归思维与定义未知

作者: 牛头酋长 | 来源:发表于2018-12-07 14:56 被阅读93次

牛头人:今天要聊啥?

小Y:我先列一下提纲,然后在详细讨论。

1.递归的真正意义在于定义未知。

2.未知=一小部分已知+未知。

3.判断未知事物不用考虑全部细节,只要考虑那一小部分已知是否ok

4.用递归思维模式来定义人生

5.人就是一个解释器。人生函数运行在人这个解释器之上

6.大多数人的解释器运行bug

7.bug之一:传统的思维模式是面向过程的线形。而递归自我模式是面向结构化的树状结构。

小Y:好了,我现在正式开始。

牛头人:什么契机,让你开始关注递归了?

小Y:最近在看一本讲lisp编程的书《the little schemer》,整本书的核心是在说明递归思维模式的本质是什么。

牛头人:递归思维模式的本质是什么?又递归和递归思维模式有区别吗?

小Y:递归是一个工具。如何使用递归工具解决某一类问题,就是递归思维模型。

递归思维模式的本质是:递归这个工具的真正价值在于定义未知概念,而非实现循环。

甚至通过递归对整个宇宙的底层秘密有了一瞥。也许整个宇宙的运转规律就是基于递归的呢!

牛头人:说的我一头雾水啊,举个例子来说吧。

小Y:好,比如我们现在要定“人生”这个概念,那么大多数人如何定义人生,你如何定义人生?

牛头人:人生就是在我的有生之年产生的内容的总和啊。这个内容包括我创造的财富,写的文字,产生的与别人的情感,总之是我创造出来的东西,包括物质和非物质的东西。

小Y:好,那么你生命中的每一天代表着什么呢?

牛头人:每一天都是一个容器,是支撑我所有行为的载体。就好比每一天都是一节火车厢,车箱和车箱之间就是一天与另一天的连接。

小Y:好,那么我们用一个公式来表达你的定义应该是这样的:

define 人生 = 今天的行为+明天的行为+后天的行为+....+第N天的行为。

PS:概念就等于是编程语言中的函数,函数可以看成是一个装满了算法的袋子,所以概念也是一个这样一个袋子。人与人沟通本质上将概念的名称通过声音传递,每个人接受概念名称之后,调用虽然概念名相同,但是装着的算法内容不同的概念函数。例如,你和一个人说红苹果很好吃,你对于红苹果的函数里的算法和另一个人的红苹果的算法一定不一样,因为你们吃过的苹果一定不同。说远了,回到定义人生来,人生也是一个函数,定义之前加上define关键字,表示在定义函数。

牛头人:对,这样定义有什么问题吗?

小Y:没什么不对,下面我用递归的思维模式来定义一下人生这个概念。

define 人生 = 当天的行为 + 未来的人生

这里“未来的人生”意味着再次掉用人生这个概念,只不过时间减去了今天,是未来的时间发生的事情。

如果运行这个人生的定义那么你会看到这样的结果:

运行 人生= 今天的行为 + 今天之后的人生

等同于    = 今天的行为 + 明天的行为 + 明天之后的人生

等同于    = 今天的行为 + 明天的行为 + 后天的行为+明天之后的人生

等同于    = 今天的行为 + 明天的行为 + 后天的行为+第N天的行为+第N天之后的人生

虽然运行之后的结果和之前一样,但是定义描述上不同。

有没有点感觉?

牛头人:有点感觉,但是感觉怪怪的感觉,总感觉你这种定义有点狡猾。

小Y:哪里让你感觉到狡猾了?

牛头人:因为你是要定义“人生”,结果定义中的内容竟然又包括了“人生”这个你正在定义中的概念。这让我产生了一种被搪塞的感觉。不踏实。

小Y:对!对!就是这个感觉,你的不踏实源于你想追求确定性,而递归就是要用不确定性来定义不确定性,这就是递归的精妙之处。

定义一个庞大的概念,传统的思维模式是描述所有的确定性,并将这些确定性拼装起来。本质上这种思维模式是面向过程式,C语言、Java语言都是面向过程的编程语言。这种思维模式看事物都喜欢站在远处,将事物理解成线性结构。例如将人生看成一列长长的火车。

而递归思维模式不是这么看事物。递归思维来定义概念,会将概念分解为两个部分,典型部分+自然部分。

例如:define 人生= 当天的行为+ 未来的人生。“当天的行为”就是典型部分,而“未来的人生”就是自然部分。

精妙之处是用“未知”来定义“未知”自己,但是如果定义的全部由“未知”组成又不可能成立,所以要加入一小部分“已知”部分。让“已知”和“未知”咬合在一起,协同运行。本质上定义的是关系,即,“已知”和“未知”一起协同运行的关系。让“已知”给“未知”做背书。

牛头人:有点get到了,用这种方式来定义的好处是什么呢?我能想到的就是将一个复杂而庞大的未知问题,进行简化,是不是这样。

小Y:对!如果面对一个未知概念,你想认知到这个概念的本质,或者想control一个事情。用传统的线性思维模式就很累,需要面面俱到,而且没有运筹帷幄的感觉,因为看似你的定义是由很多个已知组成,但是由于数量庞大,所以还是不可控。但是用递归思维来control一个概念,你只需关注典型部分。

对于人生这个概念的用处,就是面对自己的人生,你只需要关注今天这个典型部分的正确性即可。因为定义你的人生的绝大部分算法的篇幅都是被“今天”占据着。换句话说就是你的“今天”定义着你的人生。“今天”就是你人生定义的本质。

牛头人:哦!get到了!之前看有些灵性大师总是教人活在当下,过去和未来都不是真的,都是我们不能掌控的部分。就是想表达这个意思吧!当时虽然认同那些大师的理念,但是由于自己脑子里还是认为人生是一天+一天连接而成的火车箱,今天就是这些车厢中的万分之一,所以今天不重要,荒废一天无所谓。结果就是很难让自己保持专注于活在当下。

但是如果按照递归模式来定义人生,构成人生定义的绝大部分算法的内容是今天,那么今天过的如何就等于人生被定义成了如何。这样我就会自然重视起今天了。

前者是将今天视为万分之一的重要。

后者是超过90%的重要。

小Y:这就是所谓的通过改变概念来改变行为。

我们再把人生这个定义完善一下, 我会引入一个子函数:认知函数,来拼凑出人生函数。

define 认知(时间)  = 概念体系 * 时间

define 人生(认知, 时间) = 认知(今天) + 人生 (认知, 时间-今天)

函数后面括号里的东西是传递进函数的参数。例如define 认知(时间)这里的时间就是参数。认知前面加上define代表着这个认知是一个函数定义,而不是在运行这个函数。

如果想要运行这个函数,那么就去掉define保留()即可。例如:认知(今天)就是运行了一下认知函数,并且传入的时间参数是今天,代表着在今天这个时间段中,认知算法在运行,产生了行为。

牛头人:这样定义更量化了,也就是说,我们人生的定义绝大部分取决于认知函数中的算法。而认知函数的定义绝大部分是我们的概念体系。所以概念才是决定我们人生的本质因素。

小Y:是这样,这样可以得到的指导意义是,我们应该重视自己概念体系的构建。

牛头人:但是你这个公式中的有不对的地方,即,认知是不变的,这样今天什么样的认知,未来就会一直用这个认知,那么人岂不无法进步了,这点和真实世界不同啊。

小Y:对,你发现了,其实这个定义的不是人生,而是动物生,因为动物的认知在成年后是不变的,完全靠着基因算法产生行为,而人类比动物强的地方就在于我们可以自己进化自己的认知。所以我们来将认知的升级加进去。

我们用  认知`来表示升级后的认知。那么人生的定义就变成:

define 人生(认知, 时间) = 认知`(今天) + 人生 (认知`, 时间-今天)

那么如何定义认知`呢?因为认知升级是靠元认知来处理认知创造出来的,所以我们要加入元认知的概念。

var 元认知= 自由意志

define 认知(时间)=概念体系*时间

var 认知` = 元认知(认知, 时间)

这里为什么要用var而不是define呢?因为var代表这变量的赋值,即,元认知产生的东西本质上是函数本身,而不是像认知函数那样产生的是行为。所以可以将元认知产生的结果直接赋值给认知`

另外元认知我无法定义,我只能将其等价于自由意志,或者叫上帝意志。上帝将自己的自由意志放在了人类的里面,所以圣经上总有说到“我在你们里面,你们也在我的里面”。

之所以人工智行业很难达到通用智能阶段,就是因为机器很难模拟出元认知。

牛头人:这样升级后的定义,可以给我的指导意义就是认知的一点点升级,都是在指数级的提升人生的质量。这就是所谓的复利效应。另外还要加上运气吧,因为人生不会完全可控的,总会有意外发生。

小Y:好的,最好加一个“运气”就适可而止啦,我这个函数定义只是简单示意的demo,不可能模拟的那么完善。

运气因素有正也有负所以应该包含一个随机数。而且运气每天都是独一份,所以不应该加入到参数中,而是在人生函数外面的一个全局函数变量。运气对于人生函数来说,是一个闯入者。

完整的定义如下:

define 运气(时间) = 随机数 * 复杂算法 * 时间

define 概念 = 算法

define 概念体系 = 理性概念 + 感官概念 + 本能的基因算法

define 认知(时间) = 概念体系 * 时间

var 元认知= 自由意志

var 认知` = 元认知(认知, 时间)

define 动物生(认知, 时间) = 认知(今天) + 运气(今天) + 人生 (认知, 时间-今天)

define 人生(认知, 时间) = 认知`(今天)  + 运气(今天) + 人生 (认知`, 时间-今天)

牛头人:不错!用伪编码的方式来描述一个概念的定义,可以说明白这个概念运行起来的动态效果。这比仅仅用文字描述牛逼多了!

小Y:其实人就是一个解释器,这些代码正式在人这个载体上运行才能产生输出物,就是人的行为。但是大多数人的解释器运行总会出bug,因为解释器的编码有问题。

牛头人:有那些bug呢?

小Y:函数的逻辑泄露等等,这个话题下周再继续讨论,今天就到这里吧

牛头人:好的,拜拜!

这篇文章的 PRESS.one 签名:

https://press.one/file/v?s=5872b3c1e261b856e2f2bb3ae20f06d7bdf628f7b2fd45b251ac76ef346a3e5e44582f01ff2c3b47507139114da7c8aab1a9a9834491c3795e8d8fd85e55601f0&h=9b6f5f2b1aa606c9e52d7f106b3fb72f2e78fe1fdc6a3658fbb7da805f3b5b43&a=bf73b3af4938b627384449cdf62c87f1c65cfba9&f=P1&v=2

相关文章

网友评论

    本文标题:小Y&牛头人:递归思维与定义未知

    本文链接:https://www.haomeiwen.com/subject/qfkthqtx.html