分形学习

2020-10-11 16:26:45

这个世界是一个复杂的、相互联系的系统网络。我们试图通过创建各种(看似无关的)学科来理解这一点。学科众多,当我说任何一个人都不可能成为所有这些领域的专家时,我想你会同意我的看法。

然而,即使你深入某一领域,它仍然非常复杂,即使在某个特定领域的范围内,你也会对真正理解任何东西的想法感到绝望,即使是在一个特定领域的范围内,这也是如此之难,甚至当你深入某一领域时,它仍然是如此的复杂,以至于你会对真正理解任何东西的想法感到绝望,即使是在一个特定的领域内。

大多数场似乎呈现出分形图案。我的意思是,您越是尝试放大系统的某个特定方面,就会显示出越多的细节。无论你谈论的是经济学、物理学还是生物学,道理都是一样的。一个全新的细节世界展现在所有不同的层面上。

当然,当面对复杂性时,我们的第一本能是减少和孤立对待它们,我们已经试图通过创建专门化(本质上是子领域)来适应领域内的复杂性。

这就是为什么微生物学家和生态学家似乎说着完全不同的语言。这可能会让你想知道这两个领域是否有关联;有人可能会争辩说,它们都是通过一套截然不同的镜头来看待世界的。

随着人类知识的进步,我们能够理解不同层次的系统,我们不断催生越来越新的专业化和超专业化。

这一概念在计算机科学中最为清晰,在计算机科学中,人们建造了令人难以置信的复杂系统,将猫视频传输到你的屏幕上。我在这里选择计算机科学没有什么特别之处,因为我确信在任何领域的表面之下都潜藏着类似程度的复杂性。

即使你花了很多年的时间深入研究,你仍然不会真正完全了解计算机是如何工作的。你的知识中总会有空白。即使在像允许你在屏幕上阅读这些单词这样看似简单的事情背后,也隐藏着如此之多的复杂性。有很多抽象塔可以实现这一点:

你的CPU(本质上是一块很小的硅片,只能把两个数字相加)在你读这句话的时候执行了几百万条指令。欢迎来到计算机体系结构!

在大多数情况下,这些指令是人类无法理解的。所以我们发明了一种高级语言,并编写了另一个软件将这种高级语言转换成指令。欢迎使用编译器!

有多个应用程序同时在该系统上运行;不知何故,一段代码(操作系统)设法将所有这些抽象出来,以便这些应用程序能够假装它们是该系统上运行的唯一应用程序。同样,还有其他资源(RAM、文件、I/O设备)都需要在系统上运行的数百个程序之间共享。欢迎使用操作系统!

您的设备不是孤立存在的。事实上,它的很多功能都是与其他设备相关的。仅仅是为了加载和查看这个网站,它就必须将信号发送到以太,而以太不知何故(就像一个贴有标签的信封)找到了正确的服务器,然后他们用您所请求的数据做出回应。欢迎加入网络公司!

事实上,上述所有情况都是极大的简化。我甚至还没有开始触及皮毛。如果你想了解更多,看看一个简单的谷歌搜索背后隐藏了多少细节。

那么,你是如何开始理解和理解似乎有这么多相互关联的东西的呢?

这里有一个简短的题外话:心理学中有一个关于工作记忆的著名结果(也被称为米勒定律)。研究表明,人类平均一次可以在短期记忆中保持大约7个物体。基本上,如果你在脑海中玩弄概念,思考事物之间是如何联系的,那么你的认知极限似乎只有7个。

当然,这是相当模糊的,从任何一个结果中得出太多结论当然是危险的。然而,我建议我们可以从米勒定律中吸取这一教训:人类不能同时在头脑中容纳太多东西。软件系统是非常复杂的野兽,任何人都无法在脑海中记住事物如何工作的所有微小细节。

这就是抽象的用武之地。这是计算机科学、工程和一般解决问题的基本构件之一。抽象是当你眯着眼睛,把某物当作一个黑匣子的时候。你暂时选择不关心黑匣子里发生了什么,因为其他细节更重要。

有关抽象的示例,请考虑您常用的对象的接口。例如,一辆汽车隐藏了很多复杂的电路和机械,但说到底,你需要关心的只是方向盘和几个踏板。那是一辆汽车的抽象视图。我不关心赛车如何将这些输入转化为多个复杂的输出量,如进油量、扭矩等。我完全忽略了这一点,因为这对我来说并不重要。我只想从A点到B点,我只需要知道如何使用汽车的接口来实现这个目标。

设计良好的界面(软件界面也是如此!)。这会让你在开车时专注于更少的汽车方面,减少认知上的努力;我现在谈论的是手动、自动和自动驾驶汽车。

当然,这一切都很好,但这篇文章是关于处理复杂性的,而不是关于假装它不存在。毕竟,最终确实有人必须设计和处理潜在的复杂性(特斯勒定律)。如果你只能把一辆车看作它的界面,你就会成为一名糟糕的汽车工程师!

当你还是一名学生,想要更多地了解某个你没有先验知识的领域时,事情就更难了;有这么多要学的东西,你怎么决定什么值得更深入地钻研呢?

因此,请记住这个抽象的概念,让我们来谈谈分形学习,这也是这篇博客文章的重点。

分形学习本质上是一种用来理解复杂系统而不会太迷失在细节中的策略。它是关于处于金发地带,不浪费时间学习太多(你有其他事情要做),同时全面了解事物是如何组合在一起的。

我第一次想到这个概念是在优秀的Intermezzos书中。它完美地概括了学生和研究人员努力理解复杂系统的挑战:

一次学完所有的东西是不可能的。如果你继续挖掘,你会发现更多的问题,而挖掘这些问题会引出更多的问题……。在某种程度上,你不得不说,好吧,我现在知道的够多了,是时候继续前进了。

让我们假设这棵树代表你感兴趣的领域。你的工作就是以某种方式浏览这棵树(或树枝),并学习一切。现在,很明显,在这一生中不可能学到所有的东西,但你仍然想要知道足够多的知识,以便更好地了解每件事是如何组合在一起的。

大多数人似乎遵循两种策略中的一种-这些策略归入计算机科学中的树遍历算法的保护伞下。

让我们更深入地研究这两个问题,因为它们与讨论相关。

第一种是深度优先搜索(我称之为掉进兔子洞)。它由此动画1:

在这里,您从树的根(由1表示)开始,并沿着任何一条路径不断深入。当你不能再往前走时,你会停下来,然后尝试另一条路。

我希望你明白为什么我把它叫做“掉进兔子洞”;你只是越来越深入地挖掘一个特定的主题,而没有真正后退一步去探索其他相关的主题。这是一种聚焦于排斥的激光聚焦战略。这相当于一个孩子不停地问为什么要问一个特定的话题,直到她再也得不到有意义的答案。如果一个人只遵循这个学习策略,她会对这一件事情有非常详细和具体的知识,但对密切相关的事情却完全不知道。

这与之前的方法截然相反。在这里,你相当胆小,你从来不会一次走超过一层,你会一层一层地走。

再一次,我希望这是有道理的,为什么我称之为洪水;它的工作原理类似于水是如何缓慢上升来淹没一个地区的。在这里,你的挖掘非常肤浅,在深入研究之前,花时间去理解一切的基本知识。这项工作的重点是包容性,了解每件事是如何结合在一起的,即使这并不相关。只遵循这一策略的人将是一个多面手,他会知道一切的基本原理,但就像打个比方说的那样,他什么都不会。

遗憾的是,就像生活中的许多事情一样,答案是:这要视情况而定。你将不得不用你的判断力和直觉来根据情况来决定使用哪种方法。这两种方法都有其权衡之处。

当然,如果有足够的时间,这两种方法都会覆盖整个树。正如我们所看到的,这两种方法都设法解决了这个迷宫。

在下面的示例中(这两个都是真实场景),上述策略不是最优的。你必须将两者结合起来,仔细地用你的判断力来挑选哪些话题值得深入探索,哪些话题只值得粗略浏览。

当你刚进入一个领域,并试图全面了解该领域的运作方式时,掉进任何一个兔子洞可能是浪费时间,因为你没有经验知道哪些问题是相关的。因此,以广度为中心的方法可能对您很有帮助。在这种情况下,您应该为您遇到的概念形成适当的抽象,以便以后需要时可以更深入地挖掘它们。

例如,在浏览文章的其余部分时,只阅读您遇到的主题的Wikipedia简介,同时单击简介中的链接以进行进一步的探索。在这里,重要的是仍然要注意一些细节,这样你就可以稍后再讨论它。

另一方面,比方说你正在努力为你想要解决的特定问题找到解决方案。在这里,更明智的做法可能是遵循一种更以深度为中心的方法,利用你的直觉引导你沿着相关的提问路线前进。请注意,最好已经对事物的工作原理有一个整体的了解;否则,你就不知道从哪里开始了,而且这只是一次无方向的(可能是徒劳无功的)搜索。在这里,想太多你所遇到的事情只会让你分心。这可能会为你节省一些时间,让你浏览一下材料,对事情是如何运作的有一个整体的感觉,以防你以后需要它。然而,重要的是要保持在正轨上,不要忽视你当时试图解决的具体事情。

这方面的一个例子是试图在维基百科上查找特定的信息。你会有一种狭隘的视野:你确切地知道你想要什么,而其他一切都只是分散注意力。在这里,重要的是不要过于专注,同时也要注意整体环境。然后,您对整个领域的了解就会增长,而不仅仅是您正在处理的特定部分。

最终,这两个例子真正证明了这篇博客文章的主题:分形学习。

即使在深入研究细节的同时,也要牢记大局。

这意味着,有时你选择接受事物的本来面目,而不是更深层次的质疑;也许稍后,你会选择更深入地挖掘同样的假设。

这似乎从根本上看是相当矛盾的。这几乎是一个非常禅宗的方面,因为要做出这些权衡并不是一件容易或简单的事情。失败是不可避免的,有时你太深入不相关的细节,太肤浅了,这是很自然的,也是意料之中的。但这绝对是一项可以学习的技能。事实上,它不仅是一项技能,而且是一项元技能,它会极大地提高你学习所有技能的速度。

我发现自己有一种普遍的倾向,那就是在早期太深入地研究一个话题,然后在迷宫中迷路。如果你和我一样,我希望这篇文章鼓励你停下来,退一步,偶尔考虑一下整个系统。

在继续前行之前,不完全理解一些东西是可以的,不管这意味着什么。你会回到这件事上来的。有时候,学习其他东西比钻研每一个细节更重要。