1. 引言
非线性激活函数对于神经网络学习理解非线性函数有着重要作用,神经网络通过在神经元的输出应用激活函数引入非线性因素,使得神经网络可以逼近任何非线性关系[1]。对于神经网络模型,一个合适的非线性函数不仅可以显著提高其泛化能力以及性能,也可以稳定其训练过程,通过避免梯度消失或爆炸来使模型有效收敛[2]。Sigmoid和Tanh函数是近年来经常被应用于各种神经网络模型中的非线性激活函数[3] [4]。Tanh函数在RNN等网络的归一化与对称数据处理中起到重要的作用[5],Sigmoid函数在卷积神经网络(CNN) You Only Look Once (Yolo)模型的多标签预测logistics分类器[6]、递归神经网络(LSTM)的门控机制(如输入门、遗忘门、输出门等) [6] [7]中起到重要作用。但由于传统电子计算中需要晶体管参与执行,所以根据摩尔定律,其计算的速度和能耗不可避免地受到晶体管带来的限制,无法满足神经网络规模扩张的需求[8]-[10]。
光学计算区别于传统电子电路计算结构,凭借其高带宽、低损耗、高速、可拓展性强与兼具集成化、模块化等特点,近年来在信号处理、数学计算和神经网络方面都有着卓越的进展[11] [12]。目前研究者们提出了许多光学计算方法,诸如线性卷积希尔伯特变换[13],以及非线性光学逻辑门等[14] [15]。衍射神经网络(Diffractive Neural Network, D2NN),是一种采取机器学习训练方法的全光神经网络框架[16],根据计算需求的不同,其通过衍射调控光场的相位和幅值,拟合出对应关系。基于衍射的光学计算方法有着很高的模块性、灵活性以及可拓展性[11]。近年来针对D2NN的研究也产生了许多成果,不仅可以减少传统计算中的误差、优化计算流程,同时也在计算机视觉、信息处理等领域单独训练完成某些分类任务[17]-[20],为光学计算的发展提供了一种新的思路。
本文设计了一种基于机器学习方法的衍射处理单元(Diffractive Processing Unit, DPU) [21]的光电非线性计算模块。这个模块使用三个线性光学层和最后的非线性强度激活函数,通过可编程光学神经元来拟合Sigmoid和Tanh两种非线性激活函数。实验结果表明,对于5 × 5数据输入维度,Sigmoid函数实现了9.66 × 10−4的误差损失,Tanh函数实现了1.02 × 10−3的损失。此外,随着输入数据维度从3 × 3增加到9 × 9,Sigmoid函数的误差损失从8.46 × 10−4增加到了1.18 × 10−3。同样,对于Tanh函数,随着MU尺寸从3 × 3增加到9 × 9,误差损失从9.12 × 10−4增加到了1.33 × 10−3。并且,在MNIST手写数字分类任务上,通过实验验证了架构在面对传输中高斯噪声等现实因素干扰时具有相当的稳定性和鲁棒性。
2. 使用须知
2.1. 实验参数设置
本实验的模型基于PyTorch 1.12.1框架、Python 3.9以及CUDA 11.3.58。使用配置GPU为navida GeForce 3050,Ram容量为12 GB,处理器为12 th Gen Inter (R) Core (TM) i7-12700H。在实验过程中,经过测试,使用均方误差(Mean Square Error, MSE)作为损失函数,其计算公式是:
(1)
其中X、Y分别为衍射神经网络的输出与实验设置标签值。并且为了进一步降低训练中的损失率,实验中使用Adam优化器和阶梯式降低学习率。在Sigmoid训练中,学习率设置为20轮下降,
,其中
是当前学习率,每20个epoch后进行一次下降;而在Tanh训练中,学习率同样设置为每20轮下降,学习率设置为
。
模拟时,每层所使用的可编程光学神经元使用随机初始化。关于其他相关的参数,主要和实际实验设备中参数相匹配,其中模拟时,每层所使用的可编程光学神经元使用随机初始化。在实验中,使用波长为532 nm的激光器作为光源,设备中的像素大小设置为16 μm × 16 μm,其中数据在DPU中各种像素范围设置为5 × 5,单层衍射层中的光电子神经元数量配置为200 × 200个,光场在被探测器检测前自由传播15 cm。在衍射层的最后对接收输出的能量分布结果进行平均掩码,步长需要根据输入数据零填充的位置进行调整。
2.2. 数据集与预处理方法
在训练中,可编程的光学神经元由误差反向传播算法优化,损失函数通过对比输出图像的值与设置的标签图像得到。作为训练光电神经网络模块的训练图像集,使用任意的高斯随机向量做成图像矩阵。为了测试不同输入向量大小下的模块性能,图像矩阵大小分别设置为32、52、72、92,训练、验证和测试分别有16000、3000、1000个样本。图像数据输入时为了提高衍射时模拟的数值精度,在预处理中将图像进行限带角谱的零填充映射处理[22],其过程如图1所示。
Figure 1. Schematic diagram of zero-padding
图1. 零填充过程示意图
零填充(Zerp Padding)在模拟自由空间传播中是常用的减少计算混叠误差的方式,但是由于引入了更多的数据点,这种方法也会导致计算负担的增加。研究者为了解决这一问题提出自适应采样角谱方法,通过自适应的零填充与采样参数避免循环卷积误差,从而减少计算复杂度。
在测试非线性计算模式性能的仿真中主要使用MNIST手写数字数据集,该数据集包含60,000张训练图像和10,000张测试图像,每张图像的分辨率为28 × 28像素。为了使这些图像适配DPU中衍射层的分辨率,需要对图像进行插值缩放处理,在保持图像细节的同时,减少图像由于放大而导致的模糊现象。
3. 非线性计算与衍射神经网络传播原理
3.1. 非线性计算模式
Tanh函数和Sigmoid函数主要用于神经网络的分类任务中。Sigmoid公式为:
(2)
其中x为输入向量。Sigmoid函数的值域限定在(0, 1)之间,具有明显的概率解释意义,因此非常适合用于处理具有概率性质的数据,尤其是在二分类问题中常作为输出节点的激活函数。Tanh函数计算公式:
(3)
其中x为输入向量。Tanh函数的值域限定在(−1, 1)之间,具有对称性和零均值的特点,非常适合用于表示具有正负关系的信号或特征数据。与Sigmoid函数相比,Tanh函数通过将输入映射到负值与正值的区间,能够更有效地表示数据的方向性和幅度,从而在特征表达上更具优势,并且能够有效缓解因梯度过小而导致的梯度消失问题。在实际实验的设置中通常随着神经网络模型的需求而设置。
3.2. 衍射层正向传播原理
衍射层的搭建基于Rayleigh-Sommerfeld衍射积分公式,将对应位置作为神经元,其光学波为:
(4)
其中
为波长,
,
。输入光被调制到入射光场,其振幅和相位为复值函数,最后从输出光场的平均振幅能量分布中提取结果,将结果转化为实数,通过光和电的综合作用保证模块的非线性运算。
DPU的整体正向传播过程同样遵循远场区域的Rayleigh-Sommerfeld衍射积分方程。在此过程中,光电神经元对输入节点的加权光场进行求和,并经过复合激活函数产生相应的输出。第i个光电神经元的输出可以表示为:
(5)
其中m代表第m个神经元,
表示第m个SLM相位调制的可训练相位值。
3.3. 神经网络中的误差反向传播
衍射层中具体的参数通过计算机中的正向传播与反向误差传播方法进行训练和修正,最后将训练好的参数部署到DPU中。具体而言,正向传播通过将数据输入神经网络后,每一层神经元根据前一层的输出与权重对数据进行加权计算后传递给下一层,最后由输出层输出网络的预测结果,过程可以表示为:
(6)
其中,
代表第l层的输出,
代表上一层的输入,
是第l层的权重矩阵,
为第l层的偏置向量,
是第l层的激活函数,如ReLU、Sigmoid等。对应到衍射神经网络中则是光场的振幅信息通过角谱衍射理论进行正向传播,表达式为:
(7)
其中,
表示输出光场的复振幅,
,而反
向传播一般通过利用损失函数相对于网络中参数(例如权重和偏置)的梯度来不断迭代调整参数,从而将预测结果误差最小化。具体到DPU的训练过程中则是通过输出图像与标签图像的均方误差来计算神经网络中参数的梯度。反向传播具体过程可以表示为:
(8)
其中
为损失函数对输出的梯度,
为输出层激活函数的导数,
为输出层的误差项。利用公式(1)和公式(8),可以得到损失函数对第l层的误差表达式:
(9)
其中,
代表输出复数光场的梯度,
表示前一层的输出。
4. DPU级联网络
4.1. DPU级联网络性能分析
Figure 2. (a) Schematic diagram of DPU cascade diffraction neural network structure; (b) Schematic diagram of DPU structure
图2. (a) DPU级联衍射神经网络结构示意图;(b) DPU结构示意图
DPU模块可以被视为一个可以对光场相位和振幅信息进行调制的衍射层,前一级的光学神经元作为下一级的光源逐级进行前向传播,层间神经元通过光的自由空间传播相连。DPU依赖光场的并行传播进行信息处理,其运算不依赖于串行指令,因而可以通过光速进行推理。在三层的衍射层中,每层有200 × 200个光学神经元,保证了DPU相比于传统电子神经网络在时间效率方面显著的优势。DPU级联衍射神经网络结构和DPU的结构如图2所示。
在单个的DPU中,首先数字微镜(Digital Micro-Mirror Device, DMD)将输入信息编码为相干光场的振幅,然后空间光调制器(Spatial Light Modulator, SLM)调制其相位分布。输入信息和神经元之间的加权连接是通过自由空间光学衍射建立的,从SLM平面到探测器平面的衍射定义了每个神经元的感受野。在探测器平面上,科学互补金属氧化物半导体传感器(Scientific Complementary Metal Oxide Semiconductor, sCMOS)测量复光场振幅分量的平方,通过光电效应从入射场中提取强度信息。
关于不同输入图像大小下Sigmoid和Tanh训练对比结果和学习曲线如图3、图4所示,输入尺寸较小时,在训练的前20 Batches中有着较好的效果。
Figure 3. Comparison of training results for 5 × 5 image sizes: (a) Sigmoid; (b) Tanh
图3. 5 × 5图像尺寸训练结果对比:(a) Sigmoid;(b) Tanh
Figure 4. (a) Sigmoid mode training and validation MSE curve; (b) Tanh mode training and validation MSE curve
图4. (a) Sigmoid模式训练的MSE曲线;(b) Tanh训练的MSE曲线
在3 × 3和5 × 5输入数据维度下,模型的输出图像与标签图像之间具有较高的相似度,表明系统在较小输入维度时能够较准确地完成非线性映射,保持良好的重构效果,Sigmoid模式最终训练的损失为8.46 × 10−4和9.66 × 10−4,Tanh模式分别为9.12 × 10−4和1.02 × 10−3。随着输入数据维度增大至7 × 7和9 × 9,模型仍能保持主要的数量关系特征,但整体图像质量相较于小尺寸输入有所下降,损失也变得难以收敛,训练过程中波动较大,Sigmoid模式损失为1.08 × 10−3和1.08 × 10−3,Tanh模式损失提升至1.19 × 10−3和1.33 × 10−3。
为了进一步量化不同非线性映射模式的性能表现,实验对Sigmoid和Tanh函数在不同输入维度下的关键指标进行了对比分析。具体而言,通过计算均方误差、结构相似性指数和感知损失的评估指标,衡量不同图像尺寸在图像重构精度、结构保持能力及整体稳定性方面的差异。实验数据表明,在不同指标下,DPU级联非线性计算模块均展现出较高的准确性,验证了系统在不同输入维度下的优越性能。验证结果如表1所示。
Table 1. System resulting data of standard experiment
表1. 标准试验系统结果
函数 |
评价指标 |
均方误差 |
结构相似性 |
感知损失 |
Sigmoid |
3 × 3 |
8.46 × 10−4 |
0.9083 |
0.1435 |
5 × 5 |
9.66 × 10−4 |
0.8779 |
0.1633 |
7 × 7 |
1.08× 10−3 |
0.8402 |
0.1796 |
9 × 9 |
1.18 × 10−4 |
0.8179 |
0.2041 |
Tanh |
3 × 3 |
9.12 × 10−4 |
0.8913 |
0.1562 |
5 × 5 |
1.02 × 10−3 |
0.8530 |
0.1703 |
7 × 7 |
1.19 × 10−3 |
0.8133 |
0.1920 |
9 × 9 |
1.33 × 10−3 |
0.8029 |
0.2107 |
出现这种现象可能是由于衍射层的分辨率在较大输入数据尺寸时会受到显著影响。尤其是当需要精细调制更多像素时,衍射层内的响应速度降低,导致信号处理效率下降。这种情况在训练过程中尤为明显,因为模型性能会随着输入数据尺寸的增加而降低,从而影响模型的学习效率。具体表现为模型的收敛速度变慢以及训练误差的增加。相比之下,较小尺寸的输入数据能够在光学器件的最佳工作范围内操作,确保输入数据的质量更高,从而加速模型的收敛过程,并提高训练结果的稳定性。此外,较大尺寸的输入数据不仅在自由空间传播中可能会出现相邻采样区域的串扰,并且在光学器件上还可能存在严重的边缘失真效应。
4.2. 不同层数对网络非线性能力的影响
不同层数DPU的堆叠对于非线性函数的映射同样有影响。实验结果显示,对于Sigmoid和Tanh函数,在DPU层数较少时,网络在训练过程中难以有效地学习和准确映射复杂的非线性关系,导致输出结果中误差较大。适当增加光学处理层数能够显著提升特征提取能力与表达能力,更深的光学衍射网络通过引入更多的计算层次与相位调制自由度,增加了网络的非线性表达能力与计算自由度,从而获得更精细的拟合效果。实验结果表明,随着DPU层数的增加,系统对非线性函数的拟合精度显著提升。当DPU层数较少时,模型在拟合复杂非线性特征时的输出结果与标签表现出更大的误差。这一现象也反映出,通过增加光学处理层数,模型的计算自由度得到扩展,光场的相位和振幅调制能力也相应增强,系统可以具有更复杂的函数逼近能力,从而在拟合非线性函数时表现出更好的结果。通过测试1至3层DPU在拟合上述非线性函数关系时的性能表现,以分析光学处理层数对非线性函数拟合效果的影响。不同层数衍射层对非线性函数在不同指标下的仿真结果表2所示。
Table 2. Effects of nonlinear ability of different diffraction layers
表2. 不同层数衍射层对非线性能力影响
函数 |
层数 |
均方误差 |
结构相似性 |
Sigmoid |
1层 |
1.50 × 10−3 |
0.8757 |
2层 |
8.97 × 10−4 |
0.8834 |
3层 |
8.46 × 10−4 |
0.9083 |
Tanh |
1层 |
1.66 × 10−3 |
0.8521 |
2层 |
1.02 × 10−3 |
0.8745 |
3层 |
9.12 × 10−4 |
0.8913 |
5. MNIST分类任务测试
为了测试DPU级联衍射神经网络的泛化能力,实验中搭建了一个同时使用Sigmoid和Tanh算子完成的简单手写数字分类任务,并研究其在实际分类任务中的表现效果。分类网络使用3层线性层,在网络前2层的线性层后分别连接Sigmoid算子和Tanh算子,在网络第三层线性层后连接电子SoftMax进行处理。网络结构如图5所示。
Figure 5. Schematic diagram of MNIST classification task structure based on diffractive neural network
图5. 基于衍射神经网络的MNIST分类任务结构示意图
Figure 6. Performance comparison of MNIST classification tasks with different replacement schemes
图6. 不同替换方案MNIST分类任务性能对比
实验结果表明,在使用复数层光电条件下,经过训练的网络能够在较小误差(MSE ≈ 4 × 10−2)的情况下完成对MNIST数据集的分类任务。同时我们为了对比使用不同数量光电函数模块对网络能力带来的影响,设计了只替换Sigmoid函数和只替换Tanh函数的网络作为对照。实验结果表明,在使用复数层光电条件下,经过训练的网络能够在较小误差(MSE ≈ 4 × 10−3)的情况下完成对MNIST数据集的分类任务。同时为了对比使用不同数量光电函数模块对网络能力带来的影响,设计了分别替换Sigmoid函数和Tanh函数算子的网络作为对照,只替换Tanh模块的效果相比之下会存在更多的劣化(MSE ≈ 3 × 10−3)。各类方案对比结果如图6所示。
6. 网络稳定性与鲁棒性测试
光电模块在实际应用中不可避免地存在现实干扰,例如设备物理位置错位、层间误差堆叠、电子设备量化误差、传输中的高斯噪声等,这些因素对于计算模块会导致产生计算精度、计算速度劣化。所以在鲁棒性测试中,分别引入高斯噪声、白噪声、椒盐噪声和不同比特深度等影响因素测试对计算模块性能的影响。白噪声和高斯噪声主要通过扰乱光场相位与强度分布,影响干涉与衍射效果,从而降低系统对特征边缘和灰度梯度的响应能力。而由于这种误差具有连续性和累积性,所以会引起数据误差扩大,从而导致模型的稳定性下降。在白噪声的测试中,通过调整白噪声的信噪比(SNR)来控制噪声的强度,分别在高、中、低信噪比区间内测试噪声对输出图像的影响程度。高斯噪声的分布被设定为
,其中期望值(
)和标准差(
)根据输入数据的尺寸和DPU的特性动态调整,以确保在不同输入数据尺寸下噪声影响的一致性。比特深度作为影响图像表示精度和细节保留的关键因素,增加其深度可以扩大图像的灰度级范围,从而更细腻地捕捉亮度变化,但同时也会增加存储和计算的复杂度。训练阶段使用的图像均为8位比特深度,测试阶段则分别对4位、6位、10位、12位和16位比特深度的图像进行了量化效果测试。
Figure 7. (a) Gaussian noise heat map in Sigmoid mode; (b) Gaussian noise heat map in Tanh mode; (c) Comparison of two calculation modes with different SNR for white noise; (d) Comparison of two calculation modes with different bit depths
图7. (a) Sigmoid模式下高斯噪声热度图;(b) Tanh模式下高斯噪声热度图;(c) 2种计算模式下白噪声不同信噪比对比;(d) 2种计算模式下不同比特深度对比
高斯噪声的测试结果表明,过大的期望值(
)和标准差(
)会导致系统性能的显著下降,但在一定范围内的高斯噪声对整体架构的影响相对较小。系统整体对高斯噪声具有一定的耐受能力。在白噪声测试中,系统的分类性能随着信噪比的变化呈现出明显的差异性。如图7(c)所示,在添加信噪比范围为40 dB到5 dB的限带白噪声时,尽管噪声强度逐渐增加,但由于架构中引入了池化计算等降噪机制,系统在低信噪比环境下仍能保持较高的可靠性。比特深度实验结果表明,当比特深度超过8位时,系统架构表现出较高的可靠性。这一现象也说明,该系统对不同的比特深度具有一定的适应性,并且在较高比特深度下仍能保持稳定的性能。高斯噪声、白噪声和比特深度的测试结果如图7所示。
为了测试MNIST分类光电神经网络的鲁棒性与稳定性,为全非线性替换模型实验中添加高斯噪声与椒盐噪声等现实干扰因素进行测试实验。椒盐噪声为图像的突发性异常像素,在图像中形成孤立扰动点,对图像的边结构造成破坏,会导致衍射层中局部光场突变,破坏衍射层中相位的连续性,从而对整个级联网络中光场的正向传播产生严重干扰。测试中将椒盐噪声分别设置1%、5%、10%的噪声比例(Salt-Pepper Ratio, SPR)进行测试,高斯噪声调整标准差σ条件噪声强度,测试范围分别为0.03、0.06、0.10。实验结果如表3所示。
Table 3. System resulting data of noise test
表3. 噪声测试结果
噪声 |
噪声强度 |
均方误差 |
结构相似性 |
准确率/% |
无噪声 |
无 |
0.0041 |
0.9632 |
93.2 |
高斯噪声 |
σ = 0.03 |
0.0040 |
0.9593 |
93.0 |
σ = 0.06 |
0.0053 |
0.9516 |
91.1 |
σ = 0.1 |
0.0072 |
0.9478 |
89.6 |
椒盐噪声 |
1% |
0.0046 |
0.9412 |
91.4 |
5% |
0.0072 |
0.9352 |
88.7 |
10% |
0.0129 |
0.8933 |
86.3 |
根据实验数据分析,在不同噪声强度下,模型的性能表现出现了明显的变化。引入高斯噪声后,模型的性能随噪声强度的增加而逐渐下降。对于椒盐噪声,模型性能的下降趋势与噪声强度呈现出类似的变化规律,但是椒盐噪声对模型性能的影响随着噪声强度的增加更加明显,特别是在噪声强度较高时,模型的准确率下降更加显著。测试数据说明,该系统在对抗不同的噪声中均表现出相对的鲁棒性,并且在较高噪声影响下仍能保持基本的性能。
7. 总结与展望
本文基于可重构光电元器件设计了DPU级联系统来映射不同光电计算的非线性函数。通过测试证明,本文所提出的光电非线性运算模块在不同非线性函数需求的计算场景下,可以以高精度、低能耗的方式实现Sigmoid和Tanh运算。模块所表现的映射关系与灵活性也证明了衍射神经网络在不同计算需求下均可以作为替换部分代替传统电子神经网络非线性计算的模块。仿真利用自生成的图像数据集,通过用不同规模的输入数据对比测试了光学非线性计算模块的性能,在Sigmoid函数的训练过程中,输入尺寸3 × 3和5 × 5时,最终损失分别为8.46 × 10−4和9.66 × 10−4,且较早达到稳定状态,而当输入尺寸增至7 × 7和9 × 9时,损失值升至1.08 × 10−3,并伴随较大波动;对于Tanh函数,当输入尺寸为3 × 3和5 × 5时,损失分别为9.12 × 10−4和1.02 × 10−3,但在更大输入尺寸7 × 7和9 × 9时,损失增至1.19 × 10−3和1.33 × 10−3。并且根据实验,验证了高斯噪声、系统比特深度等现实因素干扰对运算模块整体性能的影响。这种方法探究了衍射神经网络在映射不同非线性计算的灵活性,并进一步发掘了其在光学计算方面所表现出的潜力。最后实验设计使用MNIST数据集分类神经网络替换非线性计算实验进行泛化性能测试,最终替换模型在手写数字分类任务中呈现低损失率(MSE < 10−2),且出于其模块化设计的结构特征,也可以作为各类光电计算方案中的插入模块作为参考。
在未来的工作中,可以优化DPU的结构和后处理算法来优化整体模块的速度并减少电子运算的处理步骤。高精度的光学元件、接口通信的优化、相机的帧率提高等同样也可以在实际应用中提高模块的性能。同时,对于其他非线性函数的光学实现也可以拓展光学计算的应用范围。
NOTES
*通讯作者。