在当下,带有人类直觉的计算机被应用到很多案例中,比如计算机日常识别图像中的物体、转录语音、外语翻译、诊断医疗状况、玩复杂的游戏和驾驶汽车等等。
促成这些惊人发展的技术称为深度学习,这个术语指的是被称为人工神经网络的数学模型。深度学习是机器学习的一个子领域,是基于将复杂模型与数据拟合的计算机科学的一个分支。
虽然机器学习已经存在了很长时间,但深度学习近些年才开始崭露头角。因为越来越多的计算能力被广泛应用在各个领域——可以轻松收集并用于训练神经网络的大量数据。
千禧年左右,计算能力开始突飞猛进,当时图形处理单元 (GPU) 开始被 用于非图形计算领域,并且在过去十年的发展里这种趋势逐渐普及。但深度学习的计算需求增长得更快,这种动态促使工程师开发专门针对深度学习的电子硬件加速器,谷歌的TPU就是一个很好的例子。
本文笔者将介绍解决这个问题的一种不同以往的方法——使用光学处理器用光子而不是电子来执行神经网络计算。
人工神经元是使用在某种数字电子计算机上运行的特殊软件构建的。该软件为给定的神经元提供多个输入和一个输出。每个神经元的状态取决于其输入的加权和,非线性函数(称为激活函数)应用于该输入。最后,这个神经元的输出就成为各种其他神经元的输入。
这张计算机渲染图描绘了作者和他的同事为使用光执行神经网络计算而设计的光子芯片上的图案。
减少神经网络的能源需求可能需要使用光计算加持
为了保证计算效率,我们会给神经元进行分组,数据在相邻的组之间传输。通过线性计算方式进行科学计算,但随着网络规模的增长,神经元和组越来越多,线性计算越来越复杂。现代计算机硬件已经针对矩阵运算进行了很好的优化,线性计算也已经是高性能计算的基础。
深度学习需要越来越多的乘法累加运算。以 LeNet 为例,这是一种开创性的深度神经网络,旨在进行图像分类。1998 年,它被证明在识别手写字母和数字方面优于其他机器技术。但到 2012 年,神经网络AlexNet的乘法累加运算次数是 LeNet 的 1600 倍,能够识别图像中数千种不同类型的对象。
从 LeNet 最初的成功发展到 AlexNet,需要将计算性能提高近 11 倍。在这 14 年的时间里,摩尔定律提供了大部分增长条件。现在的挑战是保持这种趋势,因为摩尔定律已经到达一个瓶颈了,通常的解决方案是在问题上投入更多的计算资源以及时间、金钱和精力。
训练眼下一个大型的神经网络通常会反应出显著的环境因素。例如,一个2019年的案例发现,训练某个深度神经网络进行自然语言处理所产生的二氧化碳排放量是汽车在其整个生命周期中通常与驾驶相关的二氧化碳排放量的五倍。
不可否认,数字电子计算机的改进使深度学习得以蓬勃发展。但这并不意味着进行神经网络计算的唯一方法就是使用此类机器。几十年前,当数字计算机还相对原始时,一些工程师使用模拟计算机来解决困难的计算。随着数字电子技术的改进,那些模拟计算机被淘汰了。现在可能是再次采用该策略的时候了,特别是当模拟计算可以通过光学方式完成时。
光纤可以支持比电线更高的数据速率。这就是为什么从 1970 年代后期开始,所有长途通信线路都采用光纤的原因。从那时起,光数据链路取代了铜线,跨度越来越短,一直到数据中心的端到端通信。光数据通信速度更快,功耗更低。光学计算也具有同样的优势。
但是通信数据和用它计算之间有很大的区别。这就是模拟光学方法遇到障碍的地方。传统计算机基于晶体管,晶体管是高度非线性的电路元件——这意味着它们的输出不仅仅与其输入成正比。非线性算法对晶体管执行开关命令,执行逻辑命令通常是电子设备来完成。但是光子遵循麦克斯韦方程,这意味着光学设备的输出通常与其输入成正比。
为了说明如何做到这一点,我将在这里描述一个光子设备,当它与一些简单的模拟电子设备耦合时,可以将两个矩阵相乘。这种乘法将一个矩阵的行与另一个矩阵的列组合在一起。
光学计算速度更快,功耗更低
该设备中的基本计算单元是一个称为分束器的光学元件,可以把它想象成一个 45 度角的半镀银镜子。从侧面向其中发送一束光,分束器将允许一半光直接穿过它,而另一半则从成角度的镜子反射,使其与入射光束成 90 度反弹。
现在将第二束光垂直于第一束光照射到该分束器中,使其照射到成角度的镜子的另一侧。该第二光束的一半将类似地以 90 度角透射和反射。两个输出光束将与第一个光束的两个输出组合。所以这个分束器有两个输入和两个输出。
要使用此设备进行矩阵乘法,需要生成两个光束,其电场强度与要相乘的两个数字成正比。我们称这些场强为 x和y。将这两束光照射到分束器中,分束器将合并这两束光。这种特殊的分束器会产生两个输出,其电场值为 ( x + y )/√2 和 ( x ? y )/√2。
除了分束器之外,这种模拟倍增器还需要两个简单的电子元件——光电探测器——来测量两个输出光束。这里不测量这些光束的电场强度,测量光束的功率,该功率与其电场强度的平方成正比。
这意味着如果将一个数字编码为具有一定强度的光束,将另一个数字编码为另一种强度的光束,将它们发送通过这样的分束器,用光电探测器测量两个输出,并在将它们相加之前抵消产生的部分电信号,就得到一个与两个数字的乘积成正比的信号。
将输出信号馈送到电容器中,然后只要脉冲持续,它就会积累电荷。然后在相同的持续时间内再次脉冲输入,这次编码两个要相乘的新数字。需要多次重复此过程,每次执行一个乘法累加运算。
其中最耗能的部分是读取该电容器上的电压,这需要一个模数转换器。但是不必在每个脉冲之后都这样做——可以等到一系列的结束,比如 N 个脉冲。这意味着该设备可以使用相同的能量执行N 次乘法累加运算,以读取N是小还是大的答案。这里,N对应于神经网络中每层的神经元数量。
因为相同的值通常用作多个神经元的输入。与其将这个数字多次转换为光——每次都消耗能量——它可以只转换一次,产生的光束可以分成许多通道。通过这种方式,输入转换的能源成本可以在许多操作中分摊。
将一束光束分成多个通道不会比光透镜更复杂,但将透镜放在芯片上就很棘手。因此,这种正在开发的以光学方式执行神经网络计算的设备很可能最终成为一种混合体,它将高度集成的光子芯片与单独的光学元件结合在一起。
光子学具有将深度学习加速几个数量级的潜力
目前光学计算技术还有许多挑战需要克服。一是提高模拟光学计算的精度和动态范围,达到电子设备所需要的效果。这些光学处理器会受到各种噪声源的影响,而且用于输入和输出数据的数模转换器和模数转换器精度有限。这需要更高的精度,尤其是神经网络训练。
将光学元件集成到芯片上也存在困难。由于这些组件的尺寸为几十微米,它们无法像晶体管一样紧密地封装,因此所需的芯片面积会迅速增加。麻省理工学院研究人员在2017 年对这种方法的演示涉及一个边长为 1.5 毫米的芯片,即使是最大的芯片也不大于几平方厘米,这限制了可以通过这种方式并行处理的矩阵的大小。
在理论上,光子学有可能将深度学习加速几个数量级。基于当前可用于各种组件(光调制器、检测器、放大器、模数转换器)的技术,可以合理地认为神经网络计算的能源效率可以比当今的电子处理器高 1,000 倍。
模拟光学计算中的许多概念已有数十年历史。有些甚至早于硅计算机。光学矩阵乘法的方案, 甚至是光学神经网络的方案,在 1970 年代首次得到证明。但这种方法并没有流行起来。这次会有所不同吗?可能,出于三个原因。
首先,深度学习已经不仅仅是学术上的理论知识,现在已经在生活中被真正使用。其次, 我们不能仅仅依靠摩尔定律来继续改进电子产品。最后,我们有了新技术:集成光子学。这些因素表明,光学神经网络会是深度学习的计算关键技术。