4. 光学矩阵乘法的基本原理:光场映射与乘加运算的物理机制

光学矩阵乘法之所以能突破电子计算的功耗与延迟瓶颈,其核心在于将矩阵运算的“乘法”与“加法”两个基本操作,直接映射到光场的物理参量上。光在传播过程中,其幅度、相位、偏振等自由度天然支持并行乘加运算:乘法由光场经过调制器或介质时的透射/反射系数实现,加法则由多束光在探测器或波导耦合处的相干叠加或非相干叠加完成。本章将深入拆解这一映射过程,从数学表示到物理实现,再到典型架构与工程约束,建立对光学矩阵乘法底层机制的系统认知。

光学矩阵乘法物理映射机制 输入向量 x x₁ (幅度/相位) x₂ (幅度/相位) x₃ (幅度/相位) ... xₙ (幅度/相位) 光场复振幅 E_in 光载入 矩阵 A 调制阵列 MZI / 微环 / 空间光调制器 a₁₁ a₁₂ a₁ₙ a₂₁ a₂₂ a₂ₙ aₘ₁ aₘ₂ aₘₙ 乘法:E_out = aᵢⱼ · E_in 相位:φ = arg(aᵢⱼ) + φ_in 衍射/波导 汇聚/干涉区 相干叠加 yᵢ = Σⱼ aᵢⱼ · xⱼ 加法:光场复振幅相加 或强度非相干叠加 (功率求和) 光电转换 输出向量 y y₁ = Σ a₁ⱼxⱼ y₂ = Σ a₂ⱼxⱼ y₃ = Σ a₃ⱼxⱼ ... yₘ = Σ aₘⱼxⱼ 光电流 I ∝ |E_out|² 关键物理机制对照 • 乘法:输入光场 E_in 经过调制器,透射系数 t = aᵢⱼ,输出 E_out = aᵢⱼ · E_in • 加法(相干):多路光场在合束器处复振幅叠加,E_sum = Σ E_out,ᵢ,需相位锁定 • 加法(非相干):多路光功率直接相加,I_sum = Σ |E_out,ᵢ|²,无需相位锁定但仅支持正实数 • 编码方式:幅度调制(强度)、相位调制(0/π 或连续)、IQ 调制(幅度+相位) • 检测方式:平衡探测器(相干)、单端 PD(非相干)、阵列探测器(空间并行) • 典型架构:MZI 网格(Reck/Diamond)、微环阵列、空间光调制器 + 透镜、衍射光学

4.1 核心原理:从矩阵元到光场参量的映射

光学矩阵乘法的第一步,是将矩阵 A 的每个元素 aij 和输入向量 x 的每个分量 xj,编码为光场的物理参量。最常用的两种映射方式是幅度映射和相位映射,二者可独立使用,也可组合为复振幅映射(IQ 调制)。

  • 幅度映射(非负实数):将 aij 或 xj 的数值映射为光场的强度透过率或衰减系数。例如,aij = 0.7 表示该调制通道允许 70% 的光功率通过,输出光强为输入光强的 0.7 倍。这种映射实现简单,但只能处理非负实数,且动态范围受限于调制器的消光比(通常 20-30 dB)。
  • 相位映射(符号或复数):将 aij 的符号映射为相位 0 或 π(BPSK 方式),或将复数 aij = |aij|eiφ 的相位 φ 直接映射为光场相位。相位映射不改变光强,但能表达负数甚至复数,是光学矩阵乘法支持一般实数矩阵的关键。
  • IQ 映射(幅度+相位):将复数 aij 拆分为 I 分量(同相)和 Q 分量(正交),分别映射到两个调制器上,再通过 90° 移相器合路。这种方式可以完整表达任意复数,但硬件复杂度翻倍。

在物理实现上,马赫-曾德尔干涉仪(MZI)是最典型的乘法单元。一个 MZI 由两个 50:50 分束器和两个移相器构成,其传输矩阵可表示为:

MZI 传输矩阵(2×2):
[ E_out1 ]   [ cos(θ/2)   i·sin(θ/2) ] [ E_in1 ]
[ E_out2 ] = [ i·sin(θ/2)  cos(θ/2) ] [ E_in2 ]

其中 θ 由两个移相器的相位差决定:θ = φ₁ - φ₂
通过调节 θ,可以实现任意 2×2 酉矩阵的分解

当输入光场 E_in 经过 MZI 时,输出光场的复振幅为 E_out = t(θ) · E_in,其中 t(θ) 是 MZI 的透射系数。这个透射系数就是矩阵元素 aij 的物理载体。通过级联多个 MZI 形成网格(如 Reck 架构或 Clements 架构),即可实现任意 N×N 酉矩阵的分解与重构。

关键认知:光学矩阵乘法的本质,是将矩阵运算的“乘法”转化为光场经过调制器时的“透射/反射系数”,将“加法”转化为多路光场在合束点的“叠加”。因此,矩阵元素的取值范围、精度、动态范围,直接受限于调制器的物理参数(如相位分辨率、消光比、插入损耗)。

4.2 乘加运算的物理机制:干涉与衍射

光学乘加运算的“加法”环节,根据系统架构不同,有两种截然不同的物理机制:相干干涉和非相干叠加。

4.2.1 相干干涉加法

在相干光系统中(如 MZI 网格、微环阵列),所有光路来自同一个激光源,保持固定的相位关系。当多路光场汇聚到同一输出端口时,其复振幅直接相加:

E_out = Σⱼ aᵢⱼ · xⱼ · E_in

输出光强:I_out = |E_out|² = |Σⱼ aᵢⱼ · xⱼ|² · |E_in|²

这种加法是线性叠加,支持复数运算,但要求各光路的相位差保持稳定。任何热漂移、振动或波长漂移都会导致相位误差,从而影响加法精度。因此,相干系统通常需要热稳定控制(如 TEC 温控)和相位校准(如 dithering 算法)。

4.2.2 非相干叠加加法

在非相干系统中(如空间光调制器 + 透镜的 4F 系统),各路光场来自不同空间位置或不同波长,彼此之间没有固定的相位关系。此时探测器响应的是光功率的线性叠加:

I_out = Σⱼ |aᵢⱼ|² · |xⱼ|²

即:I_out = Σⱼ Tᵢⱼ · Pⱼ

其中 Tij = |aij|² 是强度透过率,Pj = |xj|² 是输入光功率。这种加法只支持非负实数,但实现简单、对相位噪声不敏感,适合处理图像、功率分配等非负数据场景。

对比维度 相干干涉加法 非相干叠加加法
支持的数值类型 复数、负数、实数 仅非负实数
相位敏感性 高,需相位锁定 低,对相位不敏感
典型硬件 MZI 网格、微环阵列 SLM + 透镜、衍射光栅
加法精度 受相位噪声限制 受功率波动限制
系统复杂度 高(需反馈控制) 低(开环即可)
典型应用 通用矩阵乘法、神经网络 光功率分配、图像卷积

4.3 典型架构与操作流程

根据矩阵规模和应用场景,光学矩阵乘法主要有三种工程实现架构。每种架构的映射方式和乘加机制各有侧重。

4.3.1 MZI 网格架构(相干)

MZI 网格是目前最成熟的集成光学方案。以 Clements 架构为例,一个 N×N 的酉矩阵通过 N(N-1)/2 个 MZI 级联实现。每个 MZI 的相位配置通过热光或电光效应调节。

  1. 矩阵分解:将目标矩阵 A 通过 SVD 分解为 A = UΣV†,其中 U 和 V 是酉矩阵,Σ 是对角阵。
  2. 酉矩阵映射:将 U 和 V 分解为一系列 2×2 旋转矩阵的乘积,每个旋转矩阵对应一个 MZI 的相位配置。
  3. 对角阵映射:Σ 的对角元素通过可调衰减器(如 MZI 的旁臂衰减)实现幅度缩放。
  4. 光路连接:输入光经过 V 网格 → 衰减阵列 → U 网格,输出即为 A·x。

4.3.2 空间光调制器(SLM)架构(非相干)

SLM 架构利用自由空间光学实现大规模并行。输入向量 x 通过空间光调制器编码为光强分布,经过透镜的傅里叶变换,在频谱面上与矩阵掩模相乘,再经逆变换得到输出。

4F 系统流程:
输入平面 (SLM₁: x) → 透镜₁ (傅里叶变换) → 频谱平面 (掩模: A) → 透镜₂ (逆变换) → 输出平面 (探测器: y)

y = ℱ⁻¹{ A · ℱ{x} }

这种架构的优点是并行度高(可达百万通道),但受限于 SLM 的像素尺寸和帧率,且非相干模式下只能处理非负实数。

4.3.3 微环阵列架构(相干/非相干混合)

微环谐振器(MRR)通过波长选择性实现矩阵乘法。每个微环对应一个矩阵元素,其谐振波长和耦合系数决定 aij 的幅度和相位。多波长光源(WDM)同时输入,不同波长携带不同 xj 分量,在微环阵列中完成乘加后,通过波分解复用器分离输出。

工程经验:选择架构时,需权衡矩阵规模、精度要求、更新速率和系统体积。MZI 网格适合中小规模(N ≤ 64)高精度复数运算;SLM 适合大规模(N ≥ 256)低精度非负运算;微环阵列适合需要快速重配置的 WDM 场景。

4.4 案例拆解:8×8 实数矩阵乘法的 MZI 实现

下面通过一个具体的 8×8 实数矩阵乘法案例,完整展示从矩阵分解到硬件配置的工程流程。

背景与目标:某边缘计算设备需要实时执行 8×8 矩阵乘法,矩阵元素为 [-1, 1] 范围内的实数,更新频率为 1 kHz。要求单次乘法延迟小于 10 μs,功耗低于 5 W。

初始参数:

目标矩阵 A(示例,8×8 实数):
A = [ 0.82  -0.31  0.45  ... ]
    [ 0.12   0.67 -0.23  ... ]
    [ ...                     ]

输入向量 x:8 维实数向量,范围 [-1, 1]
精度要求:8 bit(即量化误差 < 1/256 ≈ 0.004)

分析判断过程:

  1. 矩阵分解:对 A 进行 SVD,得到 A = UΣVT。由于 A 是实数矩阵,U 和 V 是正交矩阵(酉矩阵的实数特例)。
  2. MZI 数量估算:8×8 正交矩阵需要 8×7/2 = 28 个 MZI 实现 U,28 个 MZI 实现 VT,加上 8 个衰减器实现 Σ,共 64 个有源器件。
  3. 相位配置计算:每个 MZI 的相位 θ 通过 Givens 旋转角度计算。例如,U 矩阵的第一个旋转角度 θ₁ = atan2(U[1][2], U[1][1])。
  4. 量化误差分析:8 bit 相位分辨率对应相位步进 2π/256 ≈ 0.0245 rad,引入的矩阵元素误差约为 0.0245(一阶近似),满足 0.004 的精度要求。

实际操作步骤:

步骤 1:在 Python 中完成 SVD 分解
import numpy as np
U, s, Vt = np.linalg.svd(A)

步骤 2:将 U 和 Vt 分解为 Givens 旋转序列
def givens_decomposition(Q):
    n = Q.shape[0]
    angles = []
    for i in range(n-1):
        for j in range(i+1, n):
            # 计算旋转角度消除 Q[j][i]
            theta = np.arctan2(Q[j][i], Q[i][i])
            angles.append(theta)
            # 应用旋转到 Q
            R = np.eye(n)
            R[i][i] = np.cos(theta); R[i][j] = np.sin(theta)
            R[j][i] = -np.sin(theta); R[j][j] = np.cos(theta)
            Q = Q @ R.T
    return angles

步骤 3:将角度量化为 8 bit 相位控制字
phase_code = np.round(angles / (2*np.pi) * 256) % 256

步骤 4:将相位控制字写入 MZI 驱动 DAC

结果对比:

指标 仿真预期 实测结果 偏差分析
矩阵乘法精度 (MSE) < 1e-4 2.3e-4 相位量化 + 热漂移
单次乘法延迟 < 10 μs 8.5 μs 光速传播 + PD 响应
系统功耗 < 5 W 4.2 W 热光调相功耗为主
更新速率 1 kHz 1.2 kHz DAC 更新速率限制

风险与代价:热光调相器存在热串扰,相邻 MZI 的相位会相互影响,需要额外的校准算法补偿。此外,8 bit 相位分辨率在高温环境下(> 70°C)可能劣化为 7 bit 有效位数,需预留温度控制余量。

复盘经验:MZI 网格的精度瓶颈不在光学本身,而在相位控制的稳定性和量化误差。建议采用闭环相位控制(每个 MZI 集成一个光电二极管监测输出功率),并预留至少 1 bit 的相位冗余。

4.5 常见误区与设计要点

误区一:混淆光强与光场复振幅。在非相干系统中,探测器输出的是光功率(正比于 |E|²),而非光场复振幅 E。如果矩阵元素包含负数,必须使用相干系统或差分检测(如平衡探测器),否则负数信息会丢失。
误区二:忽略插入损耗的累积效应。每个 MZI 的插入损耗约 0.1-0.5 dB,28 个 MZI 级联后总损耗可达 3-14 dB。这意味着输入光功率需要足够高,或需要在中间级加入光放大器(如 SOA),否则输出信噪比会严重劣化。
误区三:认为相位映射可以完全替代幅度映射。虽然相位可以表达负数,但纯相位调制无法实现幅度缩放。实际系统中,矩阵的奇异值(Σ 对角元素)必须通过幅度衰减实现,因此需要同时具备相位和幅度调制能力。
设计要点总结:
  • 明确矩阵元素的数值范围:负数必须用相干系统,非负可用非相干系统。
  • 估算级联损耗:N×N 矩阵的 MZI 数量为 N(N-1),损耗预算要提前规划。
  • 相位控制精度:8 bit 相位分辨率通常足够,但需考虑温度漂移。
  • 检测方式:相干系统用平衡探测器,非相干系统用单端 PD。
  • 校准策略:出厂前需进行相位校准,运行中建议定期自校准。