以下为 Giacomo Indiveri 在 WAIC 2021 AI 开发者论坛上的演讲内容,机器之心进行了不改变原意的编辑、整理:
大家好,我是 Giacomo Indiveri,来自苏黎世大学及苏黎世联邦理工神经信息研究所,很高兴有机会在这里跟大家一起探讨仿生的低功耗人工智能计算系统。人工智能一词近几年非常流行,实际上,人工智能算法和网络可以回溯到上世纪 80 年代。尽管这些网络早在 80 年代就被第一次成功展示,但也仅是在近几年,算法和计算系统,才开始展现出比传统解决方法更胜一筹的优势。
事实上自 2009 年起,机器视觉领域有了起步发展,2011 年第一个卷积神经网络使用反向传播算法进行训练,得到了令人印象深刻的结果,这导致了整个领域的爆炸式增长。实际上这种方法成功的原因,就如我所说,自很多年前就开始探索了,但直到近几年我们才得以延续这一成功,并实现真正令人印象深刻的性能。这是因为在技术层面,硬件技术开始提供足够的算力,使这些网络能够有很好的表现。其次,现在已经有了能够用来训练这些网络的可用大数据,这也是上世纪 80 年代所没有的。最后,还有一些技巧以及改进在算法中得以运用,使得这些网络非常稳定并且性能良好。
然而,这类方法确实存在一些问题,大多数该类算法需要大量存储及功耗层面的资源来完成训练。而事实上,如果我们做一个估算就可以看到所有的计算设备需要多少能量,才能在世界范围内实现这类神经网络。据估计,到 2025 年,在 ICT 产业我们将消耗整个世界大约 20% 的能源,这显然导致了一个不可持续发展的问题。
这些网络需要极高的功耗还有另外一个原因是它们需要大量的数据和存储资源。特别是这些网络需要将数据从内存中读取并转移到计算单元,再将计算结果存回内存。因此通常情况下,内存使用的是 DRAM 芯片,而这些 DRAM 比任何计算操作的成本高出至少 1500 倍,例如 CNN 加速器中的 MAC 操作。所以事实上,我们并没有做大量计算,而是来回移动的比特消耗了大量的能量。
另一个更根本的问题则不仅与技术有关,还与理论和算法有关。例如,AlphaGo 是一个非常令人印象深刻的演示,但其可应用的领域却是非常狭窄的,因为它是只针对一个非常具体领域的设计。这类网络被编程以执行一组有限的任务,并在一个预先确定的、预设的范围内运行。它们不像动物的大脑那样具有通用性。因此,尽管我们确实称它们为人工智能,但其确实与自然界的智能有很大不同,与我们在动物和人类身上看到的智力不一样。
这些人工智能算法的核心是反向传播(BP)算法,或者是基于时间序列的 BPTT 算法。这其实是一种算法的仿生,即使它们可以用来解决非常强大的问题,但通过渐进式的改变来改进 BPTT 可能不会形成突破性的进展,从而无法帮助我们从人工智能走向自然智能,而大脑的工作方式实际上与 BPTT 算法有很大不同。如果你研究一下神经科学,研究真正的神经元、突触和大脑的计算原理,你就会意识到这存在着很大的区别。
甚至连 Geoffrey Hinton,反向传播算法的发明者之一,也在采访中声称:他深度怀疑反向传播算法,并认为这不是大脑的工作方式。事实上他认为,未来我们对大脑的理解真的必须超越 BPTT,而这将要依赖于未来的研究者们,他们需要对已有工作抱有质疑的态度,并尝试超越现有最前沿的科技。
而这个问题是本质性的,存在于理论以及正在开发的算法之中,同时也是我们在技术层面上遇到的问题。所以这个问题已经为许多社区、机构所共识。例如,最近由 John Shalf 撰写的一篇论文展示了如何改善这些问题,并试图以不同的路径方法实现计算性能的提升,超越现有方法。
一种思路是寻找新的材料和设备来代替并超越硅材料,借助新材料来提高计算性能。另一种思路则是仅使用现有基于 CMOS 工艺的架构,尝试找到封装和构建这些架构的更有效方法,这算是一种循序渐进的前进方式。最后,John Shalf 表示最有希望的思路是把这两个方向结合:设计新的计算模型来超越现有模型。
仔细考量这条特殊路径就会发现,它基本上是把新的架构、新的封装系统地结合起来并结合新的存储和理论,其中最有希望的方法之一是神经拟态。
什么是神经拟态?这是我本次报告的核心内容,同时也是我们在苏黎世大学和苏黎世大学的新创公司 SynSense 时识科技专注的领域。这类方法采用新材料、新器件、新架构和新理论,并试图真正超越当前解决方案。神经拟态这个词实际上是由 Carver Mead 在 80 年代末提出的,现在又多了一些新的含义。
至少有三大群体在使用神经拟态这个词。
最早可以追溯到 Carver Mead 基于 CMOS 工艺设计电子电路来模拟大脑的研究,他试图探究如何通过建立等价的电路来理解大脑的工作原理,可以说是真正试图重现大脑的物理机制。因此一类研究群体通常采用亚阈值模拟电路来实现用于计算的神经元动态,采用异步数字逻辑来实现跨芯片、跨核的脉冲传输及通信,这是真正的基础研究。
另一个正在使用神经拟态这个词的群体旨在设计实现芯片和器件来解决实际问题。因此该群体正在构建能够实现脉冲神经网络的加速器或模拟器的芯片。请注意不是仿真器,而是脉冲神经网络模拟,并且通常使用数字电路。例如 IBM 的 TrueNorth 芯片、英特尔的 Loihi 芯片、欧洲的人脑计划项目(Human Brain Project,HBP)都在尝试使用模拟电路、ARM 协处理器、ARM 处理器来实现脉冲神经网络。这是一个保守的方法,它确实可以实现大规模的神经网络,但实际上目前它更像是一种探索性的方法。人们在探索这种使用数字电路来模拟脉冲神经网络的方法可以用来做什么。
最后,还有一个使用神经拟态这个词的是开发新型存储技术的群体,致力于研究能够实现长期非易失性存储的纳米级器件或忆阻器。因此这个群体使用神经拟态这个术语是因为这些设备实际上可以存储一个变化的电导,这与真正的突触的工作方式非常相似,生物突触实际上通过改变其电导率来改变突触权重。而使用神经拟态的相关思路能够实现存内(in-memory)计算架构,这也非常类似于真正生物神经网络的工作方式,而且它确实可以创造出高密度的阵列。因此,我们实际上可以通过使用模拟电路的方法来模拟数字脉冲神经网络。
我们希望通过使用存内计算技术创建一个新的领域,我在此称其为类脑智能,将有可能实现有效的、类似于生物大脑的设备。想要真正理解类脑设备,首先我们要理解生物大脑的机制。
从理解 Carver Mead 的方法开始,通过研究生物学来实现基础研究,并尝试从所有研究成果中获取最佳的设备、计算原理等。该过程会使用模拟、机器学习、神经科学以及大脑研究的一些方法。
在此我想强调一下仿生人工神经网络和真正存在于大脑中的生物神经网络二者的区别。在人工神经网络中可能会有一个输入的加权和,所有输入都进入一个单点神经元,然后该神经元基本上是对这些输入求和或积分,然后乘上权重,因此这种网络有一个特点是包含大规模的权重乘法或矩阵乘法操作。并且存在一种非线性,如果是脉冲神经网络则是脉冲非线性,如果是人工神经网络则是阈值非线性。在生物学中,神经元也会整合其所有具有不同权重的突触输入,因此仿生人工神经网络会有类似的加权输入,但这是通过器件的物理特性实现的,因此物理学在计算方面发挥着重要作用。
实际上突触不是在做乘法,而是做一些时间算子积分,利用非线性,并除以一些东西,这比单纯的输入加权和要复杂得多。此外,神经元有一个轴突,它通过轴突实现输出,基本上是使用携带时间信息的脉冲,因为轴突越长,脉冲通过轴突传到目的地所需的时间就越长。此外,轴突的厚度和髓鞘的数量也会影响传输的速度。因此时间这个维度也是非常重要的。
综上所述,二者最大的区别是:在计算机和 GPU 上模拟的人工神经网络只是一种模拟了真实神经元基本属性的算法;而生物神经网络则是使用计算元件的时间动态和物理属性来运行算法。
实际上在这些网络中,架构的结构就是算法,硬件和软件之间也没有本质区别,一切都是一个整体。
理解使用 CMOS、Memristors 或 DNA 计算等方法构建硬件或软件的架构的原理将有望实现比人工神经网络更高效、更强大的计算系统。
但真正存在差异的是,一方面算法实际上是带有一些非线性的简化的矩阵乘法操作,这些操作能够得到令人印象深刻的结果。另一方面,架构本身是一种算法,计算的物理属性是其中的关键因素。通过系统的动态来运行算法将真正实现低功耗的、高效的、非线性的特性。如果我们研究一下动物的大脑,包括人类的大脑甚至是昆虫的大脑,就会发现都是如此。
如果我们想知道如何做到这一点,我们就需要在计算方面进行彻底的范式转变。标准计算架构基本上都是基于冯 · 诺伊曼系统,其中 CPU 和内存是分离的。就像我刚才说的,CPU 与内存二者来回传输数据实际上消耗了几乎所有的能量。而在 CPU 内部进行计算则会更加高效,并且比在大脑内部传输数据成本要低。实际上在神经元内部,突触存储了权重的值,也就是说内存和计算是分布在一起的,不存在数据的来回传输。整个工作机制都是在突触和神经元中完成的,并且存在许多并行分布的突触和神经元,因此内存和计算是交织在一个分布式系统中,这确实是一个很大的区别。
因此如果想做到真正的高效节能,我们必须了解一下大脑的工作原理,使用这些受生物大脑启发的策略。其中重点是基本要使用处理元件的并行阵列,且存算一体,这与时钟复用电路有本质区别。
例如,假设我们用 64 个 CPU 来模拟数以千计的神经元,我们要利用时钟多路复用电路在这 64 个 CPU 中对微分方程进行积分。如果遵循类似大脑的策略,那么要模拟 1000 个神经元就必须要有 1000 个并行分布的电路分布在芯片版图中,然后基于模拟电路、数字电路的物理属性来运行这些电路。这些电路必须是并行分布的,以进行并行运算。并且存算分布在一体,这确实是降低功耗的诀窍。
如果我们利用模拟电路,则可以使用电路的物理学特性来进行计算,而不是使用抽象化的微分方程及其数值积分,我们是真正在使用器件的物理原理来进行计算。在功率、延迟时间等方面,这种方法的效率要高得多。此外,时间域真的很重要,系统的时间动态必须很好地匹配到我们想要处理的信号。
因此,如果我们想拥有功耗极低的系统,例如我们想要处理语音,就必须在系统中加入一些类似于大脑中计算基质的元素,例如调整计算机的时间常数。以语音为例,音素的时间常数为 50 毫秒左右,因此我们必须放慢芯片的处理速度,以便让动态和时间常数与 50 毫秒一致。
所以在此,芯片将以赫兹或数百赫兹的速度运行。而绝对不是像 CPU 或 GPU 那样的百万赫兹或千兆赫兹。即便采用速度缓慢的并行阵列,也依然可以得到非常快的计算速度。即使其中用到的元件有些缓慢,但这并不意味着我们不能实现一个非常快的反应系统,因为元件是并行工作的。
因此在某一时刻,只要有输入出现,总是会有一两个元件会立即被激发。虽然我们的动态特性属于毫秒级,但是也可以有微秒、纳秒级的响应时间。如果我们想要理解如何进行这种范式转变的话,这也是另一个需要牢记的关键点。
在苏黎世大学、苏黎世联邦理工学院(ETH)以及苏黎世神经信息研究所 INI,我们构建这类系统已经有很多很多年了,并且直到现在也仍然在搭建这类系统。我们新成立的初创企业 SynSense 时识科技已经实现并落地了这类系统。
简单来说,我们通过模拟电路搭建了一个神经系统。正如我所说,这些电路运行很慢,不仅呈现缓慢的时间性非线性动态特性,而且具有大规模并行性。我们做了大规模的并行操作,所有的电路也都是并行工作的。事实上,这些特性源自模拟电路本身,也就是器件失配(device mismatch)。虽然所有电路都是同质化,但也不是完全相同。实际上,这可以作为一种优势来执行稳定的计算,这正好与器件的特性是相反的。我认为,器件间拥有差异性反而是有好处的,尤其是对于做忆阻器的人而言。
它的另外一个特点是自适应性。所有器件都有负反馈回路(negative feedback loop),它们具有学习适应性和可塑性。因此,这种学习能力可以通过噪声和元件间的差异性来加强计算的鲁棒性。通过设计很多这种并行工作的模块,系统具有了容错性,即使其中一些模块停止工作也不会出现问题。我们不必像使用标准处理器那样部分组件出现故障就全部扔掉。如果一个晶体管坏了,性能会可能稍有下降,但至少系统仍可以容错运行。
此外,由于我们同时结合了两大领域的优点,即利用模拟电路的动态特性和数字电路的通信能力,因此可以对路由表进行编程并配置这些网络。我们在编程这些动态系统时具备了灵活性,就像你在计算机 CPU 上编程神经网络一样。当然,这里更复杂。
我们仍然需要开发所有的工具,SynSense 时识科技与世界各地的其他同事正争分夺秒地开发用于编程这些动态系统的工具链。虽然现在还没有发展到如 Java 、C 或 Python 语言那样完善,但我们正在进行的工作非常有前景。而现在问题来了,我们为什么要这样做呢?如果模拟电路是充满噪声、烦人且同质化,为什么还要努力搭建这些模拟电路呢?
那么我将试着解释搭建模拟电路的优点。如果一个大型网络中的许多元件是并行工作的,比如一些忆阻器设备是交叉排列的,并且你想通过它们来发送数据。从物理上来讲,这些忆阻器拥有模拟变量(analog variable)。如果你只是在一种异步模式下发送这些变量,则不需要使用时钟。因此,你可以避免使用数字时钟电路,就面积需求而言,这些电路在大型复杂的芯片中实际上极其昂贵并且非常耗电。
因此,避免使用时钟非常有用。如果我们不使用数字电路,并且从输入到输出一直保持模拟方式,则甚至不需要进行数字信号到模拟信号的转换。我们不需要数模转换来运行这些忆阻器的物理特性。此外,我们也不需要从模拟电路转回数字电路。同时就尺寸和功率两方面来讲,这些模拟数字转换器(ADC)和数字模拟转化器(DAC)实际上是非常昂贵的。因此,如果我们不使用,则可以减小尺寸和降低功耗。
如果我们使用晶体管来做指数运算,则不需要非常复杂的数字电路就可以做到。因此,我们可以使用单一的设备,利用该设备的物理特性进行复杂的非线性操作,这样可以缩小尺寸和降低功耗。最后,如果我们使用模拟变量,比如可变电压高度、可变电压、脉冲宽度和其它类型的可变电流,就可以使用这些忆阻器来控制设备的属性。
根据驱动它们的强度,我们可以使它们变得易失或不易失。我们可以利用它们的内在非线性,甚至有可能实现转换。所以我们可以利用它们内在的随机性来做随机梯度下降、概率图形网络或者概率计算。我们也可以通过它们的标准操作方式或者非易失性操作方式中,将它们作为长期记忆存储单元使用。因此,我们不需要在外围存储模块中来回传递数据,可以直接在忆阻器设备中存储突触的状态值。如果我们在 CMOS 中使用模拟电路实现神经元和突触,则可以利用这些未来的新兴存储技术来降低功耗。
而在最近的一次 ISCAS 会议中,我们展示了 PCM 跟踪算法或 PCM 跟踪实验,其中利用了 PCM 器件的漂移。图中右上来自 IBM,展示了器件详细的轨迹分布,对于强化学习来说,这是一个非常有用的特性。因此,如果我们对构建强化学习算法感兴趣,例如对于有行为能力的机器人来说,它可以使用这些芯片实现的大脑运行,我们实际上可以利用这些 PCM 器件的特性,这就是通常所说的非理想性。
模拟电路是有噪声的——我告诉过你——它们在同质化中是可变的。例如,如果你拿一个我们的芯片,你用相同的电流刺激所有的神经元到 256 个不同的神经元,你就可以看到神经元需要多长时间来发射脉冲。不仅这些神经元很慢,而且它们的时间也是可变的。发放脉冲的时间可以根据你在使用哪种电路而发生很大的变化,而且通常还有这种噪声其方差比均值通常高出 20% 左右,所以差异系数约为 20%。
所以这里有一个问题:如何借助有噪声的计算环境来进行具有鲁棒性的计算?答案显而易见:当有噪声的时候人们通常会计算均值,所以我们可以在空间上和时间上计算均值。如果我们使用多个神经元而非单一神经元,可以只取 2-3-4-6-8 个神经元,观察它们发射脉冲的平均时间。如果它们是周期性地发射脉冲,我们可以观察脉冲发放率(firing rate)。然后如果我们要在很长一段时间上进行积分,可以在时间上计算均值。
因此,如果我们确实需要非常精确的计算,才能利用这两种策略减少器件失配的影响。我们最近正在做一个相关的实验,其中把 2 个、4 个、8 个或 16 个神经元放在一起。这些神经元簇的大小,基本上是用来计算空间上神经元数目的平均值。然后我们计算了 2 毫秒内的发放率,接着是 5 毫秒、50 毫秒、100 毫秒... 以此类推。然后我们所做的是计算变异系数,基本上就是器件的失配有多大。
变异系数越大,噪声就越大;变异系数越小,噪声就越小。因此,我们可以从一个非常大的变异系数,例如 12,实际上应该是 18。通过在较长时间上进行积分或在大量神经元上进行积分,我们可以将其一直减小到 0.9。并且利用变异系数可以计算出相应的比特数,如果我们使用的是数字电路,那就是对应多少个 bit。
这一点体现在这张色阶图(上图右)上。做一下比特的转换可以发现,我们从相当于从 4 比特提升到了等价的 14 比特。这是通过对大量神经元和较长时间进行积分得到的。例如我们可以通过使用 16 个神经元,实现 8 比特精度,时间超过 50 毫秒。这些具体数字在实际运行过程中是可以调整的。
如果我们想有一个非常快的反应时间和对结果的基本判断,我们可以只用两个神经元,并且只在两毫秒上进行积分。如果想让计算结果的置信度更高,我们只需要等一直等待,直到达到 14 比特精度。
所以这里有一个问题,即便是人工智能加速器,数字技术也有定点数,需要做出选择是使用 32 比特定点、16 比特、8 比特还是 4 比特定点。通常情况下会使用 8 位的精度,例如英特尔等公司正在开发的 ANN 加速器中就是如此。但当我们做电子电路时,可以通过在运行时使用更多的神经元或等待更长的时间来改变这一点。
但这里存在一些误解,包括:对于脉冲神经网络来说,如果你必须累积足够多来进行积分,那速度就会很慢,如果需要在时间上计算均值,也需要多花费一些时间。所有这些实际上都是误解,通过研究神经科学就可以被解释清楚。神经科学一直在研究大脑如何工作,大脑的速度是极快的,且功耗极低。人类在做出决策时不需要等待很长时间。已有实验证明用神经元簇进行平均化,反应时间可以比单个神经元快 50 倍,因此使用神经元簇可以真正加快计算速度。
如果我们使用神经元簇,则不需要每个神经元都有非常高的准确度。它们可能有噪声,也可能精度极低。但是,通过使用簇和稀疏编码,我们可以在数据分析上得到非常精确的表示。
该领域出现了很多工作,例如 Sofia Deneve 一直在展示如何通过训练神经元簇的方式来实现上述目标。此外,在技术上众所周知的一点是,如果具有可变性,神经元簇实际上有助于信息的跨层传递。如图所示,大家看到的是我们的一个芯片的参数数据,每个核心使用 16 个神经元,然后基本上提供一些预期的目标作为输入。
我们使用 PID 控制器驱动电机,并使误差最小化。这样做只是想告诉你,通过使用上文介绍的这些芯片,我们实际上可以在机器人平台上实现非常快的响应时间。实际上,我们多年来设计实现了很多类脑芯片。SynSense 时识科技的同事们也在设计和制造类脑芯片。
下图是我们在大学里构建作为学术原型(academic prototype)的动态神经拟态异步处理器,该处理器使用比较老旧的 180nm 工艺制程,拥有 1000 个神经元、四个核心(每个核心 256 个神经元)。只利用几百个神经元,我们实际上也可以实现非常有趣的边缘计算应用。
当然,这个想法旨在同时使用世界上最好的两种技术来看看我们可以在哪里做模拟电路,以真正地实现低功率的数字电路、验证原理以及快速解决实际问题。然后通过结合模拟和数字电路,我们也可以实现二者的最优结果。
最后,我想向大家展示一些我们已经实现的应用实例。如下图所示,红色标注的两篇论文是已经由 SynSense 时识科技的同事完成的,主要是关于心电图(ECG)异常和振动异常检测,二者实际上是由 SynSense 时识科技团队和苏黎世大学分别独立完成。
时间有限,我们直接来看最后一张 PPT。我想告诉大家,我们现在正处于这样一个阶段,即我们实际上可以使用来自大学的关于大脑启发策略的知识,以促进神经拟态智能领域的发展。此外,将所有这些知识转化为技术并与初创公司合作,实际上也可以充分使用这些知识来解决实际问题并努力找到最佳的市场。
例如,针对振动的工业监控等场景应用可以同时使用 SynSense 时识科技正在研发的传感器和处理器来完成。SynSense 时识科技在智能机器视觉、将传感器和人工智能算法嵌入同一芯片等领域做得非常成功,并且可以保持几十或几百微瓦的极低功耗,进而可以解决对社会有益的实际问题甚至是消费者应用问题。