关于并行计算和人工神经网络的若干观点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于并行计算和人工神经网络的若干观点
廖添[ Tain L. ]
2015年5月2日星期六
前言
自从几年前开始关注图形绘制渲染和图像识别方面到现在,我意识到一些关于传统串行计算方式和这几个领域之间存在的关系和矛盾,从而产生了若干观点和想法。因此,我打算利用接下来的文字来记录和阐述我的观点。当然,这些都只是我的个人观点和想法,也并没有其它特殊意图,只希望能够通过此文章与感兴趣之人交流意见即可。
关于并行计算
从第一台计算机诞生至今,几乎所有的计算设备,用于特殊研究的计算机除外,都采用串行计算的思想对数据进行处理。这也就是众所周知的以传统中央处理器为计算核心的相关体系结构,比如冯·诺依曼结构(称普林斯顿结构)和哈佛结构。在这些体系中的中央处理器负责的内容非常简单,即按照先后顺序从内存中读取指令、数据然后计算出结果传回内存,或者是对其它设备按顺序下达指令和按顺序访问数据。现今的计算机之所以如此强大是因为电信号的响应速度非常迅速,以至于中央处理器的每个指令的完成速度非常短暂,因此这个性质允许我们在可以接受的时间内完成多到难以计数的指令操作。快速的串行运算能够胜任非常多的实际需求,而且至今为止它都工作地非常完美,我们不得不承认它是个非常实用的计算操作原理。
但人的欲望是无止境的,大概地球上最得寸进尺的生物就是人类了吧。
人们从未停下提升中央处理计算速度的脚步,也就是一直在想方设法将每个单位指令的操作时间降到工艺极限。提升计算速度就会遇到功耗提升、降低工艺等多方面问题。不仅如此,单靠中央处理器的速度提升无法解决缓存、内存、数据总线、硬盘速度等等其它设备的问题,从而导致整个计算机系统或结构的速度难有大幅度提升。
这时,芯片制造商意识到他们难以提供按摩尔定律增长的单核的计算速度时,他们转向为提供按摩尔定律增长的计算核数。这也就是为什么市面上的芯片核数不断增长但单核速率
却起色不大的原因。而且人们发现一些有趣的现象,那就是双核芯片的运算速度明显高于单核芯片而且功耗也明显下降,当然这里的前提是双核芯片的每个单核的运算速度与单核芯片的运算速度是一致的。这也就是为什么从2006年Core 系列发行开始个人计算设备全面进入多核时代的原因。
并行计算是建立在串行计算之上的计算方式,它要求计算机应该拥有多个相对独立的计算执行单元以同时工作,完成计算任务。最简单的实例就是向量加法计算:假设有2个5维向量,对它们进行相加操作在串行和并行的计算方式中的情况如下:
显而易见,并行计算在这种情况下的运算速度是串行计算的5倍,而且内存开销更低。 并行计算在处理独立问题时的优势非常明显,但是在解决具体问题时编程工作就变得非常困难。很多问题自身内部相关联系非常大,因此计算单元容易闲置,并行计算从而退化为串行计算。不过在矩阵运算、图形渲染、图象识别方面的工作容易发挥并行计算的性能。
个人认为,并行计算更加接近这个世界的运行本质,串行计算则贴近人对问题的认识的求解过程。这也就是为什么很多仿真类运算在串行计算机上很难完美地发挥作用,而在并行计算机上效果惊人。 a0
a1 a2 a3 a4 b0 b1 b2 b3 b4 r0 = a0 + b0 串行计算
r0 r1 r2 r3 r4 a0 a1 a2 a3 a4
b0 b1 b2 b3 b4
r0 r1 r2
r3 r4
并行计算 rk = ak + bk
为了更清晰地体验并行计算的优势,不妨设想一下这样的一整套系统:硬件方面,拥有1024个并行处理计算单元,每个单元的时钟频率为512MHz ,搭载512个内存单元,每个单元大小128MB 、时钟频率为512MHz ,配有100台外部储存设备,每台大小100GB ;软件方面,拥有新的并行计算的操作系统,设计新的程序设计语言和思想,具有针对并行计算开发的新数据结构和文件管理机制。如果我们将它当作传统的串行计算机的话,它理应具有的性能是524GHz 的中央处理器、64GB 且256GHz 的内存、近10TB 的外部存储空间。系统设计合理的情况下、该并行计算机的执行能力会远远超过同样硬件性能的串行计算机。
虽然并行计算机在处理传统问题上的编程难度较大,但随着最近的图像识别、模式识别、图形绘制和渲染、人工智能等等领域的兴起,并行计算机的性能将得到非常可观的发挥。可以说它就是为推动以上领域发展而诞生的。比如,一个视频渲染工作在你的传统桌面计算机上需要1个小时完成,而交给上述并行平台处理的话有望在1分钟之内甚至更短的时间内完成。
现如今具有并行计算能力的设备随处可见,大到云计算平台,小至智能手机,都具有或多或少的并行能力。而我想要表达的并行平台是一种通用的、大众的计算平台,正如我们现在使用最多的桌面平台一样。不仅如此,连程序设计思想也应当改变以适应并行计算,而不仅仅是加入多线程的支持来敷衍了事。更自然、严密的程序设计思想能够轻松解决很多串行计算机下出现的多线程任务的难题,提升更多的性能以满足更复杂的用户需求。
假如硬要说串行计算机如何过渡到并行计算机的话,我认为应该让并行计算系统具有降阶为串行计算的功能,这样可以保证过渡时期所需要的兼容性。 CPU
Task 1
Task 2
Task 3
Task 4
Task 5
Task 6 Task 7
串行系统对任务的响应
Mem
Task 1 Task 2 Task n
PU 1 PU 2 PU 3 PU k
Mem 1 Mem 2 Mem 3 Mem p
并行系统对任务的响应
总而言之,这个世界中的运动,绝大部分都是并行发生的,它们相互独立却又在一定条件下相互联系。假如我们想要通过计算机去解决更多生活中的问题,我们必须去模仿这个世界的运行本质——并行处理,而不是一味逃避它、将它降阶为串行计算。
关于人工神经网络
一直有这么一个问题困扰着许多人,也将继续困扰下去,那就是“什么是思维?”。
当然有更多的人一直在对这个问题作出自己的回答。只不过这些回答到目前为止几乎都是无法证明,也无法证伪的观点罢了。
个人认为,若要知道什么是思维,可以尝试去制造它。若要去制造思维,我们拥有的唯一捷径就是了解人的大脑是如何工作的。在尝试读懂大脑的过程当中,我们可以尝试各种于其相关的抽象概念来打开自己的眼界。或许在这样一个反复失败又反复尝试的过程中我们正在走进思维的本质。
在目前主流的模拟智能的方案中,和大脑相关最紧密的也就是人工神经网络了。
人工神经网络认为人脑的工作方式并不是和传统计算机一样,按事先编排好的一系列指令执行。反而认为人脑最基本的工作单元(神经元)的功能十分简单,它只负责收集树突传入的信号,经过一系列限制后决定如何下传递信号。然而,整个神经网络里上亿颗神经元相互交织连接,组建出一个极其复杂的结构,在对外界信号进行响应中表现出智能和思维。
神经网络的研究者普遍承认这样一个猜想:思维在复杂但有序的连接模式中诞生,系统