
最近我在整理机器学习在物理计算这条线的实践笔记时光学计算是被问得最多的方向之一。好多人一听“深度光学计算”就觉得高深其实拆开看就是把神经网络的权重“刻”到光学器件上让光本身替你做推理。这篇是《机器学习在光学和声学的应用》系列的第一篇主线是深度光学计算及其推理Inference相关的完整技术路径。我会把原理、架构、实操案例和坑都摊开聊适合刚入门光学神经网络的读者也适合已经在做边缘计算推理加速、想了解光速推理方案的人参考。这个方向解决的核心问题很直接电子芯片做神经网络推理带宽和功耗迟早是瓶颈。光没有静态质量传播过程天然可以并行处理海量数据如果我们能把训练好的网络参数映射到透镜、衍射层、干涉仪这类物理器件上输入一张图像或一个信号光跑一趟分类结果就出来了。这就是深度光学计算要做的事。整个技术栈的取舍、实现细节和工程难点我都会结合自己复现过的案例逐一说明。1. 深度光学计算的思路拆解深度光学计算表面上是“深度学习”和“光学”两个词拼在一起但它的底层逻辑和传统光学的“成像优化”完全是两回事。传统光学设计追求的是一个物理上成立的成像关系比如把平行光聚焦到焦点满足阿贝正弦条件深度光学计算追求的是一个可学习的映射关系透镜、衍射面、偏振片都不再以“清晰成像”为目标而是以“神经网络输出正确结果”为目标。1.1 从电子神经网络到光学神经网络神经网络在电子计算机上的运行方式本质上是一连串矩阵乘法和非线性激活。每一层神经元之间都有权重矩阵推理就是输入数据与这些权重逐层运算最后输出概率分布。这个过程中数据搬运消耗的能量往往比计算本身还高这也是冯·诺依曼瓶颈的由来。光学神经网络的思路是把权重矩阵“写进”光的传播过程里。光通过一片衍射元件每个像素点的相位或透过率就是权重光场在传播中自然完成了加权叠加。矩阵乘法在线性光学里几乎是本能的——你想想傅里叶透镜输入面一个复杂光场透镜后焦面就是它的空间频谱这就是一次并行的高维线性变换一秒钟可以完成无数次完全不需要逐像素搬运。当然光学系统天生擅长线性计算非线性激活函数是短板。所以现在的深度光学计算普遍采用“光机电混合”的路线线性计算交给光非线性处理交给探测器或者后续的电子层。这也是我在实际工程里比较推荐的架构纯粹的全光学神经网络虽然好看但落地难度非常高。1.2 推理Inference的含义在这里发生了变化常规谈推理指的是训练好的模型在新数据上做前向传播的过程。在光学计算里推理变成了一次物理过程输入图像经过空间光调制器编码成为光场振幅或相位分布光场穿过若干片训练好的衍射层在输出平面形成强度分布每个探测器收集到的光功率就是对应类别的置信度。也就是说推理不需要 CPU、不需要 GPU、不需要内存只需要一束光。这个过程是真正意义上的“零静态功耗”因为光子在介质中传播不消耗能量只有探测器收集信号时才产生微弱的电耗。做边缘推理加速的人看到这个优势基本都会心动。1.3 这里要区分“深度光学计算”和“光学神经网络”这两个词经常混用但严格来说有区别。光学神经网络Optical Neural NetworkONN是指用光学硬件直接实现神经元连接结构的计算设备深度光学计算Deep Optics更强调“用深度学习的方法去设计光学系统”它不一定是一个完整的神经网络也可能是一个光学前端处理器。举个例子一个端到端的深度光学成像系统前面是一层可学习的掩膜板后面是传统的电子重建网络。掩膜板不是网络但它负责把场景信息做光学域的特征提取压缩了电子后端要处理的数据量。这种混合式设计在我的实际经验里效果很稳也是目前业界落地最多的形式。2. 深度光学计算的核心原理不能光聊概念得把数学和物理原理说透。光学计算听起来玄但你只要掌握了“传播-调制-再传播”这么几个环节结合标量衍射理论基本就能理顺。2.1 衍射神经网络D2NN怎么工作衍射神经网络是我个人认为最直观的纯光学网络结构。它由一层层衍射面堆叠而成每个衍射面上有大量像素点每个像素都能独立调制透过光的相位。训练时我们需要学习的参数就是这些像素的相位值。具体过程是这样输入光场经过空间光调制器或掩膜形成一个初始光场u_0(x, y)这个光场传播到第一片衍射层被该层调制乘上复振幅透过率t_1(x, y)然后继续传播到第二层、第三层。每一层之间的传播距离可以通过角谱法或菲涅尔衍射积分计算。最后在输出平面的特定位置放置探测器探测到的光强I |u_N|^2就是推理结果。这个过程听起来简单但它的参数空间非常庞大——一个 200x200 像素的衍射层就有 4 万个独立可调参数10 层就是 40 万。这些参数正是用标准的反向传播算法训练的前提是正演模型必须可微。2.2 可微物理模型是训练的基石做深度学习的人都熟悉反向传播但在光学计算里反向传播的不再是电子网络里的矩阵而是光场的传播算子。我们需要把“光场从层传播到层”写成一个可微函数然后计算损失函数对每个相位像素的梯度。常用的传播模型有两种。近场距离小、特征尺寸和波长可比时用角谱法它在频域精确成立距离稍远、满足近似条件时用菲涅尔衍射积分计算更简洁。大部分 D2NN 案例用的是角谱法因为它在数值上更稳定对像素尺寸不敏感。前向传播公式可以表示为相邻两层衍射面之间的距离为d_k第k层的复振幅通过率是t_k光场在自由空间传播算子作用下从第k层到达第k1层写成算符形式就是u_{k1} Propagate(t_k * u_k, d_k)。整个网络输出就是所有层和传播算子的复合函数。我在训练时的一个体会是这个模型越精确仿真和实物之间的差距越小。有人为了速度用简化的菲涅尔近似训练出来在仿真里准确率很高一上光学台就对不齐。建议核心实验直接用角谱法。2.3 为什么光传播本身就是在做计算理解这一点是整个技术的钥匙。光学计算的关键在于“乘加运算”是光传播的天然属性光场传播到衍射层每个位置的光场乘上该位置的复振幅透过率这一步是乘法光场在自由空间中继续传播不同位置的子波源发出的球面波在观测面相互叠加这一步是加法。这就构成了完整的“乘加”神经元运算。衍射层相当于权重层自由空间传播相当于层间连接。更妙的是不同频率的光可以同时通过同一光路实现波长分复用多通道并行计算只需要增加一个维度这在电子芯片里需要巨额布线成本。2.4 训练与推理的分离训练过程可以在电子计算机上完成甚至可以用模拟仿真器完成。深层网络参数即每个衍射面上的相位值训练好之后被“冻结”并映射到真实光学器件上。这个映射不是简单把数值打印出来就行要考虑加工精度、相位量化、材料折射率色散等问题。推理就是物理过程了。光走过这些器件输出平面上直接形成置信度分布。因为这个过程很快且没有电子计算功耗所以理论上推理吞吐量极高每秒处理千万帧图像。常见的主流光学器件中空间光调制器可以动态改写相位响应速度受限于液晶刷新率而用光刻或灰度掩膜做成的静态衍射层一旦制作完成就无法改变只能针对特定任务。这两类器件的选择直接决定了你是做“通用光学处理器”还是“专用光学推理芯片”。3. 主流架构与设计选型聊完原理看看实际用的架构。深度光学计算不是只有一种实现不同方案解决的核心问题不同适合的场景也是天差地别。3.1 主流实现方案对比目前主流方案大概有三类自由空间衍射型、导波干涉型、散射介质型。这三种我都调研过各自有非常明显的脾气。架构类型核心机制优势短板典型场景自由空间衍射型光场在多层衍射面间传播结构直观、可全光分类、适合并行大尺寸输入器件体积大、对齐要求高、层间距离控制难图像分类、光学前端导波干涉型光在波导中经方向耦合器和移相器干涉芯片集成度高、参数更新动态、可编程性强损耗较大、规模受限于光刻精度、对温度敏感光子计算芯片散射介质型光透过随机散射介质生成散斑作为随机投影无需精细加工、天然高维映射难以精确建模、标定复杂、稳定性差光学加密、随机特征提取衍射型适合刚入门的人复现因为它对加工精度要求相对友好甚至可以用 3D 打印制造衍射面。导波干涉型适合规模化集成也是很多团队力推的方向但搭建难度陡增。散射介质型属于“懒人方案”利用随机散射当特征提取器配合电子网络做读出不过稳定性得靠标定去补。3.2 端到端的混合架构推荐我的实际建议是不要做纯光学网络而是做“光学前端 电子后端”的混合架构。原因很简单光擅长做高维线性变换这种变换对特征提取特别有效但分类器的最后一层通常需要强非线性用来做类别间决策面这在纯光学里极难实现。混合架构下光学前端是可学习的“物理卷积核”负责把原始图像变成高维特征图电子后端是一个浅层神经网络负责对特征图做最终分类。这样做的好处是光学部分把数据量压缩了电子后端的计算量小到可以忽略系统整体功耗依然可控。我在测试中发现这种方案在仿真里的准确率可以比纯光学 D2NN 高好几个百分点工程上也更好调试——毕竟你随时可以在电子端做补偿。3.3 可学习参数的类型与设计要点在深度光学系统里可学习的参数不只是相位。衍射层的厚度分布、透过率、几何结构的位置偏移、光源波长、层间距都可以变成可学习参数。把这些物理量参数化放进神经网络优化器里就是所谓的“物理信息机器学习”。比较常见的设计是灰度相位调制每个像素的相位延迟量化到有限个等级比如 8 个相位等级这样制造工艺好实现。实现细节上要留意量化误差对网络准确率的冲击这也是仿真到实物表现断层的关键原因之一。我在设计相位量化时踩过坑直接硬量化例如把连续相位四舍五入到最近的四分之一波长会导致梯度断裂模型变得不可微。解决办法是训练时使用软量化技巧或者通过重参数化模拟量化噪声并把它加入前向传播中。这样训练出的网络在真实相位量化器件上性能几乎不降。4. 实操视角光学图像分类器的搭建过程下面用一个我实际做过的简化案例走一遍深度光学计算从仿真到推理设计的完整流程。这个案例是手写数字图像的 10 分类任务用的是四层衍射神经网络训练在电子仿真器上完成测试时用仿真模型替代实物进行推理验证。硬件条件允许的话这套流程可以直接迁移到真实光学平台。4.1 设计目标与参数约束输入图像大小是 28x28 像素插值到 200x200 像素以适配衍射面的空间分辨率。工作波长为 532 纳米衍射层尺寸为 4 毫米 x 4 毫米像素尺寸 20 微米层间距 5 厘米。这个配置在傅里叶分析下满足角谱法的采样条件在实验室也比较好搭建。训练参数总共包括 4 个相位调制层每层 200x200 个相位像素总参数量 16 万。相比动辄千万参数的电子网络这个网络规模很小但对于光学系统16 万个物理可调自由度已经相当可观。优化器用 Adam学习率从 0.01 开始逐步衰减到 1e-4分批大小 64迭代 200 轮。损失函数用交叉熵。4.2 前向模型的代码化实现思路在仿真阶段核心就是把角谱法传播和逐层调制写成可微函数。如果用 PyTorch 实现整体结构就是一个自定义的深度神经网络模块。相位参数用可训练变量定义正向传播在频域完成。每一步传播的核心操作是将输入场做傅里叶变换乘上角谱传递函数H exp(j * 2π * z * sqrt(1 - (λu)^2 - (λv)^2))再做逆傅里叶变换回到空间域。这里u, v是频域坐标z是传播距离λ是波长。因为模型全程可微反向传播可以自然穿透这些算子。值得提醒的是整个正向模型的计算复杂度不低。每层 200x200 像素一次前向传播涉及 4 次傅里叶变换训练一轮 60000 张图在常规显卡上也要跑几个小时。如果你只是想验证想法建议先用 128x128 输入像素尺寸 40 微米训练速度会快很多。4.3 损失函数与训练技巧交叉熵损失在光学计算里同样适用。输出层不是直接的类别概率而是每个探测器位置上的光强。为了让网络学会“把正确的探测器点亮”损失函数会把光强分布映射成类别得分。常用的方式是输出平面上定义 10 个圆形感光区域每个区域内的总光强作为该类别的 logit软最大化后与标签计算交叉熵。训练时我还加入了一项总能量正则化控制输出面各区域能量尽量集中。用我的话说如果不加这个正则项网络倾向于把光均匀摊在所有探测器上因为这样可以降低损失对相位扰动敏感度但这正是测试准确率起不来的原因。另外一个经验是初始相位不要全部设 0。要么用小随机值要么用透镜头相位做初始化。全 0 相位会让早期训练梯度非常对称导致收敛极慢。我当时试了几次才知道这个坑后来固定用均值为 0、标准差为 π/10 的正态分布初始化。4.4 推理阶段的关键细节当训练完成我们得到一组相位参数这组参数可以写成相位图文件用于加工衍射元件。推理测试时输入图像被加载到空间光调制器上用相干光照射光场经过四层衍射面到达探测器阵列每个探测器的输出就是类别结果。这个阶段和仿真有个巨大的区别光路里存在大量噪声和误差源。光束不均匀会导致输入光场振幅分布偏置衍射层表面误差会带来相位失真探测器噪声会直接影响阈值判定。为了提升推理稳健性我在输入侧做了一个振幅归一化并用“同一输入多次测量取平均”的方式做降噪效果非常明显。关于推理速度这个系统理论上没有计算瓶颈限制因素在于空间光调制器的刷新率。我用的实验级液晶空间光调制器刷新率实测在几十赫兹量级换用高速数字微镜器件可以到千赫兹级别。瓶颈在输入编码纯粹的光学传播本身只有纳秒级时延。5. 应用场景、边界与局限深度光学计算的火爆不是空穴来风它确实在多个方向有硬需求。但任何一种技术都有边界光学计算的“光鲜”背后同样有不少现实约束。这个章节我把场景和局限放在一起讲避免读者被技术宣传带偏。5.1 应用场景一边缘推理与低功耗视觉现在很多边缘设备做实时视觉识别遇上最大的问题是功耗。电池容量有限处理器一跑神经网络就发烫。光学推理模块作为预处理前端把高维图像压缩成少量特征信号后续只需要一个极低功耗的线性电子层做读出整体功耗可以压在毫瓦级以下。这对智能摄像头、可穿戴设备很有吸引力。我在项目中的体会是落地时要非常注意环境光的干扰。实验室里用暗室效果好真正放到户外太阳光直接打进来推理准确率会掉得厉害。工程化方案一般会加窄带滤光片把工作波段限定在一个窄窗口内同时用主动光源做编码这样才能提高信噪比。5.2 应用场景二光学矩阵乘法与信号处理另一个重要的应用方向是做光学的矩阵-向量乘法器。通过波导干涉阵列实现可编程的光学乘法可以处理通信信号、雷达信号等高速模拟数据。这类应用不追求全光分类而是把光学矩阵计算嵌入到通信链路中实现超低延迟的信号变换。这种场景下线性精度比网络深度重要得多。波导移相器的相位漂移、制造误差带来的矩阵误差都会直接影响计算结果。常用的补偿策略是做片上校准先用已知向量对系统进行多次测量求解实际矩阵响应再用软件补偿误差。我们的实验表明校准后可以将等效计算精度提升到 8 比特左右。对于很多光学计算任务这个精度可用了。你要理解为什么 8 比特就够了光信号本身携带的信息受散粒噪声限制工程上硬推高比特意义不大。电子计算精度 32 位看起来很美但光学模拟系统的噪声地板就在那摆着与其追求高精度不如发挥光学“大数据并行”的长处。5.3 应用场景三与声学方向的类比这个系列的后半部分会专门聊声学我在这里先做一个小铺垫。声学里的“光学类比”非常有趣比如声子晶体和声学超材料可以看成是声波版的衍射层。深度学习同样可以用来设计声学结构实现声波滤波、声场聚焦、语音特征提取等功能。和光学相比声学计算的优势是尺度大波长长加工容易得多。一套几厘米尺度的声学器件就能操控干赫兹频段的声波实验门槛低特别适合高校实验室入门物理计算。如果你在光学计算上遇到加工瓶颈不妨先在声学系统里把算法跑通再把经验迁移回光学。两者的核心数学框架高度一致都是波动方程和可学习介质的优化组合。5.4 当前主要局限光学计算的局限不能忽略最核心的是以下三点。第一精度有限。当前光学计算硬件的等效计算精度普遍在 6~8 比特这意味着它难以独立承担高精度科学计算任务。第二非线性缺失。光学器件天然难以实现可调强非线性而它是深度学习的核心能力目前只能依赖混合架构。第三可编程性差。静态衍射层一旦制造就很难修改动态空间光调制器又存在刷新率瓶颈很难做到像 GPU 那样通用和敏捷。理解了这些局限之后你对整个领域会发现一个比较现实的走向光学计算和电子计算是互补关系而不是替代关系。光学负责大带宽、低功耗的预处理电子负责精算与控制。任何抱着“光学必定取代电子芯片”想法去做项目的人大概率都会在工程中碰壁。6. 实操中常见问题与避坑清单做深度光学计算很多问题不会出现在仿真里而是出现在从仿真到物理实现的过渡阶段。下面这些坑每一个我都踩过或看别人踩过整理成速查表格希望能帮大家少走弯路。问题症状排查思路解决建议仿真准确率高、实物准确率低光路搭建后分类下降明显检查光学对齐、相位加工误差引入模型失配正则化在训练时注入随机相位噪声相位量化导致性能大跌输出光场结构明显变形检查相位级数是否过低训练时使用软量化模拟硬量化噪声光路中杂散光干扰探测器读数波动大检查背景光、散射光路径加光阑和窄带滤光片减少杂散光空间光调制器响应非线性输入图像畸变测试输入-输出灰度映射曲线在驱动信号前做伽马校正训练梯度不稳定损失曲线震荡检查初始化相位分布改用有物理含义的初始化如透镜相位叠加小扰动角谱法计算过慢训练时间太长检查采样网格过大降低输入像元数或换用更快的菲涅尔近似迭代探测器输出串扰相邻类别响应交叉检查探测器间距与聚焦透镜在探测器前加微透镜阵列聚焦光斑6.1 从仿真到实物的模型失配问题我在实际测试中最深的一个感受是仿真与实物的鸿沟远大于“噪声”二字所能概括。除了物理噪声还存在系统性的标定误差相位调制器的相位-电压响应曲线漂移、衍射层的厚度误差、光源波长的漂移、光学平台振动引起的对准偏差。这些误差在传统成像系统里也许只影响成像质量但在光学计算里它们直接影响分类结果因为它们改变了网络权重本身。一种非常有效的应对策略是“模拟域数据增强”训练阶段对光场传播过程加入随机相位扰动、随机缩放、随机平移模拟现实误差。这样训练出来的模型天然具备容错能力上光路之后表现要稳健得多。实测下来加了域随机的模型比不加的在实物测试准确率上能高出约十几个百分点。6.2 标定与对齐的工程细节光学系统的标定某种程度上比训练神经网络本身更费时间。相位元件的加工误差可以通过干涉测量或者波前传感器标定得到每个像素实际相位延迟的映射表再在训练时就使用这个映射表而不是理想相位值可以很大程度缩小仿真与实物差异。光路对齐也是让人头疼的事情。实际操作中我一般先用一束平行光穿过整个光路用 CCD 记录每个衍射面的位置确保光轴在一条直线上然后再放输入图像最后调输出探测器位置。每一步都要反复验证光斑点位置因为微米级偏差在衍射网络中会被放大成为明显的输出误差。多片空间光调制器的同步也是一个问题建议用外部触发信号同步刷新不要依赖软件延时。6.3 面向不同入门阶段的实践建议如果你是刚接触这个方向我不建议你直接搭全套光学系统。成本高、调试难度大容易劝退。比较好的路线是先在仿真环境里完整实现一个衍射神经网络并训练成功再借助空间光调制器和一套可见光光路做单层衍射验证最后再扩展成多层系统。如果你已经有一定光学基础可以挑战集成光路方案。这需要接触芯片设计、版图绘制、流片测试周期长但收获也大。建议选择成熟工艺和标准单元库尽量避免定制化短板。理论上可行但工程化进度往往取决于你的流片迭代速度我感觉现在能看到一个趋势是“光电共封装”把光学计算芯片和电子驱动电路封装成一个模块这可能是未来工程落地最舒服的形态。6.4 声学方向的实践提示回到系列主题声学应用也值得提前给几个提示。声学系统的波长较长通常不需要微纳加工可以用 3D 打印直接制造声学超材料结构实验门槛低很适合验证物理计算算法。关键要注意声波的多径反射和边界散射在无回声环境中测量效果会好很多。另外声学器件的温度稳定性一般比光学器件好但在强气流环境下相位扰动明显测量时要保持环境稳定。7. 我的体会与后续方向整个深度光学计算和应用探索走下来我自己的体会可以用一句话概括这是一个把“训练”和“推理”物理分离的技术。刚刚接触的人容易陷入两种极端要么觉得光学计算已经能取代电子计算要么觉得它只是实验室玩具。真实的情况是它已经在前置特征提取和高速信号处理等特定任务中展现价值但离通用的计算加速器还有一段路要走。在复现案例的过程中我最有成就感的一刻不是训练准确率达标而是第一次把仿真训练出的相位图“移植”到实验光路看到光场在探测器阵列上形成正确图案。那一刻你会理解所谓推理真的可以只是一束光走过一段空间。它不消耗电流不访问内存甚至没有传统意义上的“运算时钟”。对于想入坑的读者我建议先别急着买光学元件花一周时间把仿真做扎实把数字模型调稳定然后再考虑硬件。光学计算这个领域软件仿真能力和对物理的理解往往比动手搭光路更能决定项目的成败。系列后续文章中我会继续深入声学方向的深度学习和物理计算应用以及更多端到端的实验案例。希望这篇深度光学计算的综述能成为你进入这个方向的一块靠谱的垫脚石。