从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信号:
医学上,也叫这个信号为细胞膜动作电位(Action Potential)。事事以脑科学为准绳的TrueNorth,自然在这基础理论上一定是向生物学看齐的。可是,问题便在于,在神经网络被提出来的前几十年,就是这spike NN的英魂不散,才导致了其早期“食之无味,弃之可惜”的尴尬地位。
就像那个最有名的比喻:因为鸟的翅膀,让人类渴望飞翔;但放弃对翅膀的模仿,才让飞机真正飞上蓝天。很多事物只能赐予灵感,却无法100%照搬,否则下场就是那些个鸟人。(这话也不是我这种小辈敢说的,同样来自Yann大人)
Memristor,吴下阿蒙?
一方面,如果spike完成神经信号的传递与运算真的有问题,那人类为什么聪明? 另一方面,如果SpikeNN真的100%模仿了我们的脑子,为什么连个ImageNet分类都分不清楚?一定是哪里出了问题。答案是后者。
首先,在我们通常使用的神经网络里面有个假设——系数(Weight)在训练完成后是固定,不改变的。这个假设在CNN/RNN等一系列架构中显得天下太平,因为系数位宽大么。但是到了SpikeNN就是个大麻烦,所有的信号是二进制的,所谓的系数只改变链接关系、延时,不改变幅度,自由度大大衰减。那我们的脑子真的是这样的么?
唉,生物课又来了。
虽然我们的大脑的神经元看上去是二元的,但是神经元通路还有一个可塑性维度,叫STDP (Spike Timing Dependent Plasticity),就是突触的连接强度(Plasticity,可塑性)收到输入输出脉冲(Spikie)间的时间先后(Time Dependent)关系,其本质核心如下图。
如果输入将将早于输出,代表输入输出间是完美的因果关系,神经元联系会被增强;如果输入的脉冲稍晚于输出,那么他们之间是果因关系,神经元的联系应该要减弱。STDP被认为是我们大脑的主要学习机制,而且在不同动物上都经过了实验验证。
问题来了,这种学习机制和CS里面主流的学习机制——Stochastic Gradient Descent (SGD,中文叫做随机梯度最速下降?) 的后馈算法有着天壤之别。小编觉得这也是目前神经网络算法与神经科学的最大分歧。
没有STDP的真北就这样陷入了SpikeNN的坑。但话说回来,STDP这么高级的操作模型,用传统模数混合集成电路实现是非常浪费面积,且不划算的。好巧不巧,人类突然造出了一个除了电阻电容电感之外的第四类电学器件——Memristor,忆阻器。仿佛是上帝要有光,就有一缕阳光照进SpikeNN的黑暗的胡同里。
对于一个电阻,两端的电压和电流成正比,对于一个电容,两段的电荷和电压正比,对于一个电感,两端的磁通量和电流正比,对于一个忆阻器,就应该是两端的磁通量和电荷成正比。虽然很抽象,但是忆阻器的实际效果就是其电阻(导通强度)受流过的电流调制。这个效果已经非常接近STDP了。
试想,连在忆阻器两端的突触,当设定为上一层的神经元先发生spike,而下一层后发生spike,那一个正向的电路流过忆阻器,减小忆阻器阻值,加强链接。反之,负向电流流过忆阻器,增大阻值,减缓链接。
于是,大家逐渐开始相信,在真北架构上如果能用可随摩尔定律减小的微纳尺寸忆阻器,或许才是Brain Inspired Computer真正焕发春天时候。
于是,兼容先进集成电路的高性能忆阻器就成了问题的关键。但是,作为memristor的发明者和最努力的推广者——HP,最近好像有点无奈。
但是也不要太灰心,最近intel和micron联合推得风声水起的3D Xpoint Memory被认为是某种程度的RRAM/memristor。究竟忆阻器是吴下阿蒙,还是未来的江左梅郎,还在未定之天呢。
这一期可能是脑心编目前为止最为干货满满的一期,牵涉好多paper,如果看官您的目光移驾到这里,小编我也是要这厢有礼的,不容易啊。
”真北路上初相见“,告诉你采用非冯架构的IBM TrueNorth(真北)的出生、虐缘和不明亮也不灰暗的未来。下一次,我们要来讲讲以GPU为代表的协处理器深度学习架构——“一见泰坦误终身”。