从9月份
机器之心机器之心联合矽说共同推出系列文章「脑芯编」开始,到现在已经发布了四篇文章,这是该系列的第五篇。对硬件感兴趣的同学依然可以后台留言,加入机器之心与矽说的硬件交流群。
〈五〉
真北路上初相见
不知不觉
《脑芯编》已经走过了上半阙
默默挥手告别那些弃剧的看官
也由衷感谢仍然愿意用手指点进来的您
你们是撑住脑心编不烂尾的重要力量
与其肉麻
不如再念一遍诗的上半阙
昨夜神风送层云
,(神经元与网络)
几重卷积几重生
。(卷积神经网络)
梦里不知形与令
,(计算体系结构)
烛台簇华照单影
。(单指令多数据)
上次我们讲到,现行的计算机体系结构——“冯诺依曼”结构是阻碍深度学习神经网络的一个重要瓶颈。其计算和存储分离的特点,使得神经元计算的效率低下。合理改变指令集,加入乘累加指令和SIMD(单指令多数据)指令可以缓解该问题,但仍然指标不治本。
此时,革“冯诺依曼”的命变成了很多懵逼骚年(讲的是心态,年纪可是很大哦)的选项。
非冯架构的深度学习硬件一时间成为了洛阳纸贵的一时之选。这个过程自然有资本主义的糖衣炮弹加持,美国国防部先进项目研究局(传说中的DARPA,可以理解为神盾局?)便在非冯架构上与世界顶级研究机构——IBM合作,搞了个叫SyNAPSE (System of Neuromophic Adaptive Plastic Scalable Electronics,其实synapse在字面上也“突触”的拼法)的项目。从第一阶段到最终,DARPA赞助了IBM 4千2百万刀,打响了深度学习抗冯的第一枪——TrueNorth(真北)。
当然,很多人也把TrueNorth看作深度学习硬件发展史上打得最响的水花。
Neuromophic,替天行道?
任何革命都要师出有名,就算水泊梁山也有个“替天行道”的名头。那真北的“名”在哪里呢?很简单,我们要造一个真“大脑”,而不是计算机这样给冯老爷子当傀儡的“伪电脑”。英语叫做Neuromophic,神经形态的硬件。于是就有了这张图:
真北的设计理念,以人脑为起蓝本,依葫芦画瓢,不带点儿差的。
IBM的工程狮从微观到宏观,将人的大脑分成三个层次——神经核团、脑功能区和脑皮层。每个核团由很多个神经元组成,每个功能区由很多核团组成,一个能完整地进行一项任务的皮层由很多个功能区组成。(是不是好久没有上过码农老师的生物课了,有没有点怀念呢?下面还有。)
对应的,真北架构下,也分为这三个层次。先做了一个核团对应的硬件——neurosynaptic core,每个core由256个输出与输入、以及对应的系数存储,并集成了神经信号的路由器(router)使得信号可以在长距离上游走;在此基础上,一块芯片有64乘64个这样的核团,共4096个,组成了一个“功能区”。而很多完整的应用和复杂的任务,还需要芯片与芯片间的互联,实现一个完整的皮层功能。看,这才是真正的神经形态的“电脑”。
TrueNorth还追求了一个大脑的特点,没有全局时钟控制的信号传递。真北只有帧时钟(1KHz,和intel的3.6GHz比慢了几百万倍哦~),并没有控制信号流的时钟,数据和数据之间采用异步的方式进行通讯,寻求高能效和低功耗。
这里留给读者一个问题:为什么是非冯呢?(提示:memory在哪里?)如果各位看官到这里眼皮还没有搭起来,可以考虑去读读TrueNorth的Science原著,保证一夜睡到天明。
SpikeNN,致命缺陷?
如果有一件事情,可以把昏昏欲睡的人们从周公的世界里拉回来,那一定是——撕逼。
当所有人都觉得TrueNorth要改变人类的时候,惊天一声雷从华山之巅劈下来。出手的,是在神经网络中有“东邪西毒南帝北丐”之称呼的Yann LeCun。(我们在
脑芯编(一)
中提到过他。)
深度学习的“东邪西毒南帝北丐”F4
Yann大人在Facebook上发了一篇长长的博客来表达自己对True North的不屑。这里节录部分。(冬天了,小编最近比较懒,所以靠复制黏贴凑字数)
Now, what wrong with TrueNorth? My main criticism is that TrueNorth implements networks of integrate-and-fire spiking neurons. This type of neural net that has never been shown to yield accuracy anywhere close to state of the art on any task of interest (like, say recognizing objects from the ImageNet dataset).
简单的说,问题出在Spiking Neural Networks。Spiking的中文可以叫做脉冲,用现代的生物医学技术发现,spike是人脑中信息传递的真实电学过程。下图就是人脑中一个神经元附近测到spike信号: