admin管理员组文章数量:1665130
概述
我们都知道CPU适合串行计算,GPU适合大规模并行计算,大脑的硬件就像是一个GPU,大脑的操作系统和所有算法都是运行在GPU上,在高层次的计算上则模拟CPU的串行计算模式,如算术计算,代数计算,自然语言操作等等。所以某种程度来说,这些高层次的计算是模拟计算(用矩阵计算模拟各种单元运算操作),所以效率比较差; 而像图像识别,语音识别是非模拟计算其效率很高。这个和现代计算机刚好相反操作系统和大多数算法运行在CPU上,GPU目前还主要是辅助设备,主要做一些特定的并行加速,在CPU上串行计算是非模拟计算,并行计算相当于模拟计算。如果操作系统和算法都需要运行在GPU上,那么无疑相当于重造一个IT行业,这也是人工智能困难的原因之一,还有一个更为关键的问题是人脑的操作系统和算法都是可学习程序( Learnable Programs),所有的程序编码(除生来自带的程序外)都来自于世界数据,人脑真正做到了数据即程序,你只需要数据就可以学会开车而不需要人为的程序编码,这就是人脑算法的强大之处
图灵完备性
谈到计算机,那么在计算机领域中有一个非常重要的理论叫图灵完备性,简单来讲,图灵完备性是指一台机器给予足够的时间、内存及必要的指令,便可解决任意可计算问题。那么什么是可计算问题?就要谈到可计算性理论(Computability Theory),这个比较复杂了,这里不展开说,大家可以参考文章[1]。很多时候我们可以先有某种直觉,知道其理论的内容及适应范围,将他作为公理使用,而不必一开始就去深究,等我们真正需要理解其内容的时候再认真研究。简单来说,图灵机(Universal Turing Machine)是目前人类能制造的机器中计算能力的上限,我们使用的计算机除了内存不是无穷大的,基本可看作为一台图灵机,任何机器或语言如果满足图灵完备性,那么他们都是可以相互模拟的,即图灵等价,即A能计算的问题,B同样能计算;图灵等价是一个非常重要特点。
为什么说在人工智能里图灵完备性非常重要?人工智能的目标之一,就是模拟人类大脑,意味着人脑能计算的问题,计算机也必须能计算,即要求人脑是图灵完备的,如果没有这个基础那么人工智能是不可能实现的(这里需要补充的是人脑发明或发现了图灵机,那么说明人脑能模拟图灵机,我们只需要图灵机能模拟人脑便可)。没有理由相信人脑的计算能力超越了图灵机,超越了人类能制造的机器中计算能力的上限,因为人本身也是物理系统,人也是人造出来的,这个问题涉及到丘奇-图灵论题(Church–Turing thesis),大家可以参考
大脑中的操作系统(意识?)
操作系统的核心即资源管理(Resource Management),对于大脑而言,人的身体的所有部分都是我们所谓的资源,比如我们的手,脚,眼睛,鼻子,耳朵,甚至大脑本身,区别在于有些是输入系统,有些是输出系统,有些是决策系统; 类比于计算机,眼睛,耳朵等等感知设备就像计算机的摄像头,麦克风,手脚是输出系统,如喇叭,显示器,这个不太形象,如果形象一点的话就像无人车的轮子,方向盘。所以当我们讨论所谓意识的时候我们在讨论什么?我们的意识能感知和控制所有身体能被感知和控制的资源,这个和操作系统有什么差别?所以当我们讨论意识的时候,实际上我们在讨论资源感知和控制的核心,所以意识是操作系统吗?这个问题留给各位去思考了,权当抛砖引玉
对比现代操作系统,我们会发现操作系统非常复杂,其构成动辄上百万行代码甚至上千万行代码,所以我们没有理由觉得大脑里面这个操作系统很简单,如果仅仅简单看作等价的话,那么模拟人脑里面这个操作系统就相当于从零再造一个Linux操作系统,这个有多困难显而易见
大脑是算法的集合
我们很难感觉到自己其实一直在使用算法,因为这些算法就嵌在我们的大脑中作为很自然的存在,因为太自然和普遍了,所以我们忽视了他们,比如我问: 1+1=? 大多数人都能快速回答出结果,但是如果我问:18943 + 78439 = ? 会不会发现我们会利用规则去计算,3+9=?是否需要进位?4+3=?是否需要加进位值?… 当我们一个序列完成下来的时候,我们才能回答这个多位数加法问题。其实当我们去细究加法问题的时候会发现他很复杂,这个涉及到皮亚诺公理与数学分析的内容,参考 [ 3 ] [3] [3] ,那么计算机(模型)能学会加法吗?可以参考本人的另一篇博客 学习算法的算法 神经编码器-解释器,另一个问题是: 如果我们使用的模型是非图灵完备的,能学习到加法吗?这个问题并非显而易见,实际上很多带递归循环的(图灵完备?不知道该怎么定义)算法,用模型去学习都要求图灵完备,不然这个模型无法学会这个算法,仅仅只能逼近
对大脑而言很简单的东西,用算法实现会发现非常困难,作为算法从业者,在很多方面深有体会,如人脸检测或者通用物体检测(Object Detection),这里面近几年也诞生了许许多多的算法,如Faster-RCNN,SSD,Yolo 等等[9-10],人看这个世界,当我们静止不动的时候望着马路,车,行人从我们面前移动而过,我们能自然的感觉到运动物体,大脑可能根本没经过大量的运算,这个算法有点像背景差分算法或者帧间差分算法,我们会发现这个背景差分算法在动物中普遍存在,如我们熟悉的青蛙,如果虫子不动的话,青蛙无法感知到虫子,还有鸟类,鱼类,一些爬行动物等等,这个算法的优点是运算量非常小,但无法感知到长期静止的物体,这也是为什么在大脑不发达的动物中很容易被察觉到的原因。
到人类这里就变得比较复杂了,人类有静态物体感知的能力即模式感知,和上面的SSD很像,先检测出物体的位置再通过注意力机制分离该区域图像并作物体相似度识别,即我们说的物体识别(Object Recognition),对于运动的物体人类可以通过模式相似性不断跟踪这个物体,即物体跟踪(Object Tracking)及物体分割(Object Segmentation),人脑物体检测本身自带描述边界这个功能,这些都是人脑中的基本功能
回过头来,我们发现现在我们所谓用Deep Learning学习到的许许多多的模型本质上还是在模拟人大脑中的算法,所以为什么说大脑是算法的集合
目前的算法有部分没有大脑里面的算法精度这么高,原因在于人脑感知物体用了很多的信息和算法,如三维信息,上下文环境信息(Context, 如衣着,步态等等),如相似度匹配(基于模型的),运动估计(如:卡尔曼滤波),所以这也是为什么解决重识别(Re-ID)问题都够呛的原因,仅仅根据局部相似度是不够的,以上是感知的算法,实际我们仍然是模拟大脑的算法,虽然我们还没有人脑感知算法这么完美,但是也在逐步的逼近,我们离解决这些问题也并不遥远了
可以看到关于感知这个问题我们用算法在模拟大脑所做的,各种各样的复杂,而且高度模块化与高度集成。既然感知都这么复杂,没有理由相信,作为人类智能的皇冠:人脑中认知,如自然语言理解,逻辑推理,几何建模等等能力算法很简单,尤其是自然语言理解。所以我们要多少模型才能学习到这些算法?
可学习的程序与程序合成
谈到人工智能,就会谈到机器学习,不管传统的机器学习算法,如Logistic Regression,SVM,Decision Tree,Random Forests,Neural Networks等等,也好,还是现在很火的Deep Learning,本质都是找到一个程序或者我们常说的机器学习模型(Model),给定输入得到要求的输出,只是这个输出可能并不是确定的,所以机器学习模型可以被定义为“可学习的程序(Learnable Programs)”,即给定数据和约束条件计算得到我们希望的程序[2]
这样的程序这里简单概括为两种形式,第一种为黑盒程序或模型,即我们并不知道其原理,只能根据有限的输入输出测试该程序或模型的正确性,即我们只能证伪而不能证明其正确性; 第二种为白盒程序,这个时候程序或模型能返回给我们确定的合成程序,我们能够很容易证明或证伪该合成程序的正确性。其实我们的大脑里同时有这两种功能,比如识别物体,识别人脸等等,我们难以写出一个判断逻辑让其他人去验证,但是当给我们某个熟悉的人的照片时,我们能确切识别出这个人是谁; 相对的,对于加减乘除等等数学题目,我们能写出逻辑让其他人判断逻辑的正确性,这个是可验证的。所以为什么说大脑里有这两种功能,而且我们可以基本总结出一个规律:大脑里的黑盒程序可能是最基础的功能,处理着直觉运算,如人脸识别,物体识别,开车等等,白盒程序是更高级的功能,关联到我们的认知,如自然语言理解,逻辑推断等等
目前,我们只能学习属于所有可能程序的一个非常狭窄和特定子集的程序,如我们上面所说的物体检测,跟踪等等。但是,如果我们可以以模块化和可重复使用的方式学习任何程序怎么办?这个和现代计算机非常的像了,区别只在于大脑所运行的程序和硬件是一体的,大脑中的程序要求是必须是可学习的,所以当我们把 操作系统+可学习程序 与 意识+学习能力 联系在一起的时候,我们会发现大脑可能本身就是一个复杂的计算机,只是他是由大自然通过上亿年演化出来的,且我们生下来就有了完整的操作系统与部分基础程序功能(人类智能的大多数内容都来自天生,类比普通程序与操作系统)[4],这个和我们的刚买的电脑或手机有点相似,里面有基础的操作系统和一些必要的系统程序
大脑中的图灵完备结构
大自然很神奇,能够从无到有的将动物及人演化出来,我们会发现生物基本都形成了运行的闭环(不闭环的生命体肯定存在,但是他们会在演化中被大自然不断的删除)。一个问题是生物智能的演化有边界吗?我们知道在演化中哺乳动物,如小鼠的大脑中都演化出了两种基础结构,即:新皮层与海马体,这两种结构是人类目前密集研究的,也出了很多有意义的论文,海马体有点像计算机中的运行内存,不过其数据存取方式是Content-Based,而不是Address-Based,新皮层相对海马体而言更加简洁,主要是各种特定功能的程序:如人脸辨识,语音识别,语言理解等等,这也是为什么新皮层很大的原因,存储了非常多需要的各种程序,可以参考本人关于海马体与新皮层的另一篇文章[here],最近DeepMind也做了很多关于海马体的研究,如:Neural Turing Machine, DNC 等等[7-8],都是在用图灵完备结构去模拟海马体的功能,所以是否海马体及其周边的控制区域与输入输出区域构成了生物大脑中的图灵完备结构呢?这里的个人猜测是,非常可能,因为没有图灵完备,我们是不可能学会像Python,Java,C++这种语言的,而这个区域在人脑中是核心区域,人脑中可能也有其他局部有图灵完备结构,但很多我们学习的问题,尤其是数学问题都要求图灵完备性,没有必要开辟很多的相同结构去做这些事情,更合理的方式是演化出通用的处理结构,所以到这里就很有意思了,如果这个猜测成立,那么大脑和现代计算机之间几乎没有必然不可跨越的鸿沟,而且某种程度来说人只是生物智能演化树上的一个分支,并不特殊,这种通用的(图灵完备)结构完全可能存在于各种不同种类的生命体当中(如:老鼠,大象,猩猩,海豚等等),人和其他拥有图灵完备结构的动物不同在于我们的硬件性能及软件丰富度,像80年代的计算机和现代计算机之间的差别,只是这种量变让我们误以为我们产生了质的差别。
还有一个需要说明的问题是人的机械(运动)自由度,是很多动物不具备的,人的手臂加上脚,理论上可以操纵(在足够的时间与能量下,类比于图灵完备性中的足够时间和内存)这个世界的任意物体,这也是我们能够使用工具,制造器械的原因,如果我们像海豚一样,即便有强悍的大脑也没有办法演化出现代人类社会
人工智能到了哪个阶段了
毫无疑问,自从深度学习崛起以来,我们在图像识别,图像分割,语音识别,机器翻译,自然语言处理等等方面都有了巨大的进步,尤其是2016年以来,AlphaGo 战胜李世石[5],AlphaGo Master 战胜柯洁,AlphaGo Zero 登顶围棋之神[6],看起来我们好像要实现人工智能了,但是这两年好像冷了下来,回过头我们发现还有很多问题需要解决,毫无疑问,我们仍然处于通用人工智能的初级阶段,但是我们已经有了通用人工智能的雏形(Reinforcement Learning),也有高维数据建模的能力(Deep Learning),虽然仍然有很多问题需要解决(Adversarial Samples,Model Explanation等等),未来AGI只会更近
参考:
- Computability An Introduction to Recursive Function Theory
- Recent Advances in Neural Program Synthesis
- Analysis - Terence Tao(实分析 - 陶哲轩)
- A critique of pure learning and what artificial neuralnetworks can learn from animal brains
- Mastering the game of Go with deep neural networks and tree search
- Mastering the game of Go without human knowledge
- Neural Turing Machine
- Hybrid computing using a neural network with dynamic external memory
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
- SSD: Single Shot MultiBox Detector
- You Only Look Once: Unified, Real-Time Object Detection
版权声明:本文标题:计算机视角下的大脑 - 图灵完备的算法程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1730038624a1220255.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论