想想在不久的过去,许多计算机正在应用的任务都需要人类的直觉。计算机通常可以识别图像中的物体,转录语音,在语言之间翻译,诊断医疗状况,玩复杂的游戏,以及驾驶汽车。
推动这些惊人发展的技术被称为深度学习,这个术语指的是被称为人工神经网络的数学模型。深度学习是机器学习的一个子领域,机器学习是计算机科学的一个分支,基于将复杂模型与数据拟合。
虽然机器学习已经存在很长时间了,但深度学习最近才有了自己的生命。其原因主要与日益增长的计算能力有关,这些计算能力已被广泛使用,同时可以轻松收集并用于训练神经网络的数据数量也在迅速增长。
在世纪之交,人们指尖的计算能力开始突飞猛进,当时图形处理单元(gpu)开始被广泛应用用于非图形计算在过去十年里,这一趋势变得越来越普遍。但深度学习对计算的需求增长得更快。这种动态促使工程师开发专门针对深度学习的电子硬件加速器,谷歌张量处理单元(TPU)作为一个最好的例子。
在这里,我将描述一种非常不同的方法来解决这个问题——使用光学处理器来使用光子而不是电子来进行神经网络计算。为了理解光学是如何在这里发挥作用的,你需要了解一下计算机目前是如何进行神经网络计算的。所以请耐心听我描述一下引擎盖下面的内容。
几乎都是人造的神经元是通过在某种数字电子计算机上运行的特殊软件构建的。该软件为给定的神经元提供多个输入和一个输出。每个神经元的状态取决于其输入的加权和,其中应用了一个称为激活函数的非线性函数。结果,这个神经元的输出,然后成为其他神经元的输入。
为了提高计算效率,这些神经元被分组成层,神经元只与相邻层的神经元连接。以这种方式排列事物,而不是允许任何两个神经元之间的连接,其好处是它允许使用某些线性代数的数学技巧来加快计算。
虽然它们不是全部,但这些线性代数计算是深度学习中对计算要求最高的部分,特别是随着网络规模的增长。这对于训练(确定对每个神经元的输入应用什么权重的过程)和推理(当神经网络提供所需的结果时)都是正确的。
这些神秘的线性代数计算是什么?它们其实没那么复杂。包括对矩阵,它只是矩形的数字数组——如果你愿意,也可以说是电子表格,减去典型Excel文件中可能存在的描述性列标题。
这是一个好消息,因为现代计算机硬件已经针对矩阵运算进行了很好的优化,而矩阵运算早在深度学习流行之前就已经是高性能计算的基础。深度学习的相关矩阵计算可以归结为大量的乘法累加运算,将数对相乘,然后将它们的乘积相加。
与光相乘
两束电场与要相乘的数成正比,x而且y,撞击分束器(蓝色方块)。离开分束器的光束照射在光电探测器(椭圆形)上,光电探测器提供的电信号与这些电场的平方成正比。反转一个光电探测器信号并将其添加到另一个,然后产生一个与两个输入的乘积成比例的信号。大卫·施耐德
多年来,深度学习需要越来越多的这种乘法累积操作。考虑LeNet这是一个开创性的深度神经网络,旨在进行图像分类。1998年,它被证明在识别手写字母和数字方面优于其他机器技术。但到了2012年AlexNet该神经网络的乘法累加运算是LeNet的1600倍,能够识别图像中数千种不同类型的物体。
从LeNet最初的成功发展到AlexNet,需要将计算性能提高近11倍。在这14年的时间里,摩尔定律提供了大部分增长。在摩尔定律逐渐失去动力的情况下,如何保持这一趋势一直是一个挑战。通常的解决方案就是在这个问题上投入更多的计算资源——以及时间、金钱和精力。
因此,训练当今的大型神经网络通常会对环境产生重大影响。一个2019年的研究例如,训练一个用于自然语言处理的深度神经网络产生的CO是前者的5倍2排放通常与驾驶汽车的寿命有关。
数码科技的改善当然,电子计算机让深度学习得以蓬勃发展。但这并不意味着进行神经网络计算的唯一方法是使用这样的机器。几十年前,当数字计算机还相对原始的时候,一些工程师使用模拟计算机来解决困难的计算问题。随着数字电子技术的进步,那些模拟计算机被淘汰了。但现在可能是时候再次追求这种策略了,特别是当模拟计算可以光学完成时。
人们早就知道,光纤可以支持比电线更高的数据速率。这就是为什么从20世纪70年代末开始,所有长途通信线路都采用光学。从那时起,光数据链取代了铜线,跨度越来越短,一直到数据中心的机架到机架通信。光数据通信速度快,功耗低。光学计算也有同样的优势。
但是,数据交流和数据计算之间有很大的区别。这就是模拟光学方法遇到障碍的地方。传统的计算机是基于晶体管的,晶体管是高度非线性的电路元件,这意味着它们的输出不只是与输入成比例,至少在用于计算时是这样。非线性使晶体管能开关,使它们能被做成逻辑门。这种转换很容易用电子学来完成,因为非线性是很常见的。但是光子遵循麦克斯韦方程,这是恼人的线性方程,这意味着光学设备的输出通常与输入成正比。
诀窍是利用光学设备的线性度来做深度学习最依赖的一件事:线性代数。
为了说明如何做到这一点,我将在这里描述一个光子器件,当与一些简单的模拟电子器件耦合时,可以将两个矩阵相乘。这样的乘法将一个矩阵的行与另一个矩阵的列结合起来。更准确地说,它将这些行和列中的数字对相乘,并将它们的乘积相加——我前面描述的乘法和累加操作。我和麻省理工学院的同事发表了一篇关于如何做到这一点的论文2019年.我们现在正在建造这样一个光学矩阵倍增器。
这个装置的基本计算单元是一个叫做a的光学元件分束器.虽然它的化妆实际上更复杂,但你可以把它想象成一面45度角的半银镜子。如果你从侧面射进一束光,分束器会让一半的光直接穿过它,而另一半则被倾斜的镜子反射,导致它与入射光束以90度的角度反射回来。
现在照射第二束光,垂直于第一束,进入这个分束器,使它撞击在倾斜镜的另一侧。第二束的一半同样会被传送,另一半以90度的角度反射。两个输出光束将与第一个光束的两个输出相结合。所以这个分束器有两个输入和两个输出。
要使用此设备进行矩阵乘法,需要生成两束电场强度与要相乘的两个数字成正比的光束。我们称这些为场强x而且y.将这两束光束照射到分束器中,分束器将结合这两束光束。这个特殊的分束器会产生两个输出,其电场值为(x+y)/√2和(x−y) /√2。
除了分束器,这个模拟倍增器还需要两个简单的电子元件——光电探测器——来测量两个输出光束。不过,他们并没有测量这些光束的电场强度。他们测量光束的功率,该功率与其电场强度的平方成正比。
为什么这种关系很重要?要理解这一点,需要一些代数知识,但只要高中学过就行了。回想一下,当你平方(x+y)/√2,得到(x2+ 2xy+y2) / 2。当你平方(x−y)/√2,得到(x2−2xy+y2) / 2。前者减去后者等于2xy.
现在停下来思考一下这个简单的数学问题的意义。这意味着,如果你将一个数字编码为某种强度的光束,另一个数字编码为另一种强度的光束,将它们通过这样的分束器,用光电探测器测量两个输出,并在将它们相加之前对其中一个产生的电信号求反,你将得到一个与两个数字的乘积成比例的信号。
在Lightmatter的神经网络加速器中发现的集成Mach-Zehnder干涉仪的模拟显示了三种不同的情况,其中光在干涉仪的两个分支中传播经历了不同的相对相移(a为0度,b为45度,c为90度)。Lightmatter
我的描述使它听起来好像每一束光都必须保持稳定。事实上,你可以简单地在两个输入光束中脉冲光,并测量输出脉冲。更好的是,你可以将输出信号输入到电容器中,只要脉冲持续,电容器就会积累电荷。然后,您可以在相同的时间内再次脉冲输入,这一次编码两个要相乘的新数字。他们的产品给电容器增加了更多的电荷。您可以随心所欲地重复此过程多次,每次执行另一个“乘-累加”操作。
以这种方式使用脉冲光允许您以快速顺序执行许多这样的操作。所有这些过程中最耗能的部分是读取电容器上的电压,这需要一个模数转换器。但你不需要在每个脉冲之后都这样做——你可以等到一个序列的结束,比如说,N脉冲。这意味着该设备可以执行N使用相同能量的乘法和累加运算来读取答案是否N或大或小。在这里,N对应于神经网络中每层神经元的数量,可以很容易地以数千计。所以这种策略消耗的能量非常少。
有时你也可以在输入方面节省能源。这是因为相同的值通常被用作多个神经元的输入。与其将这个数字多次转换为光(每次都要消耗能量),不如将其转换一次,并且产生的光束可以分成许多通道。通过这种方式,输入转换的能量成本被摊销到许多操作上。
将一束光束分成多个通道只需要一个透镜就够了,但要把透镜放到芯片上就有些棘手了。因此,我们正在开发的用于光学神经网络计算的设备很可能最终会成为一种结合了高度集成的光子芯片和独立光学元件的混合体。
我在这里概述了策略我的同事和我一直在研究,但还有其他方法可以剥光猫的皮。另一个有前景的方案是基于Mach-Zehnder干涉仪,它结合了两个分束器和两个全反射镜。它也可以用于光学上的矩阵乘法运算。两家位于麻省理工学院的初创公司,Lightmatter而且Lightelligence,正在开发基于该方法的光神经网络加速器。光物质已经建立一个原型它使用的是它自己制造的光学芯片。该公司预计将在今年晚些时候开始销售使用这种芯片的光学加速器板。
另一家使用光学技术进行计算的初创公司是Optalysis,它希望复兴一个相当古老的概念。光学计算的最初应用之一回到20世纪60年代用于合成孔径雷达数据的处理。挑战的一个关键部分是将一种称为傅里叶变换的数学运算应用于测量数据。当时的数字计算机很难处理这些事情。即使是现在,将傅里叶变换应用于大量的数据也需要大量的计算。但是傅里叶变换在光学上只需要一个透镜就可以实现,几年来工程师们就是用透镜来处理合成孔径数据的。Optalysis希望将这种方法更新并更广泛地应用。
还有一家公司叫发光的由…衍生出来普林斯顿大学该公司致力于在某种基础上创建峰值神经网络它叫做激光神经元.spike神经网络更接近于模拟生物神经网络的工作方式,就像我们自己的大脑一样,能够使用很少的能量进行计算。Luminous的硬件仍处于开发的早期阶段,但将两种节能方法——峰值和光学结合起来的前景是相当令人兴奋的。
当然,仍有许多技术挑战需要克服。一是提高模拟光学计算的精度和动态范围,这远远不如数字电子学所能达到的效果。这是因为这些光学处理器受到各种噪声源的影响,而且用于输入和输出数据的数字-模拟和模拟-数字转换器的精度有限。事实上,很难想象一个光学神经网络以超过8到10位的精度运行。虽然有8位电子深度学习硬件(谷歌TPU就是一个很好的例子),但这个行业对精度的要求更高,尤其是对神经网络训练。
将光学元件集成到芯片上也存在困难。由于这些组件的尺寸只有几十微米,它们无法像晶体管那样紧密地封装在一起,因此所需的芯片面积很快就会增加。2017年对这种方法的演示麻省理工学院的研究人员使用了一个边长1.5毫米的芯片。即使是最大的芯片也不超过几平方厘米,这就限制了可以以这种方式并行处理的矩阵的大小。
在计算机架构方面还有许多其他的问题,光子学研究人员往往会把它们掩盖起来。但可以确定的是,至少在理论上,光子学有可能将深度学习的速度提高几个数量级。
基于目前可用于各种组件(光调制器、探测器、放大器、模数转换器)的技术,有理由认为神经网络计算的能源效率可以比今天的电子处理器提高1000倍。对新兴的光学技术做出更大胆的假设,这个因素可能高达100万。而且由于电子处理器的功率有限,这些能效上的改进很可能转化为速度上的相应提高。
模拟光学计算中的许多概念都是几十年前的。有些甚至比硅计算机还要早。光学矩阵乘法的格式甚至是光神经网络,首次被证明在20世纪70年代.但这种方法并没有流行起来。这一次会有所不同吗?原因有三。
首先,深度学习现在真的很有用,而不仅仅是学术上的好奇心。第二,我们不能依赖摩尔定律独自继续改进电子产品。最后,我们有了一项新技术,这是前几代人所没有的:集成光子学。这些因素表明,光学神经网络将在这一次真正实现——这种计算的未来可能确实是光子的。