布鲁克海文国家实验室(BNL)的 ATF 上有一台兆电子伏超快电子衍射(MeV Ultrafast Electron Diffraction,MeV UED)装置。它把很短的电子束团打在一片薄晶体上,记录电子散射之后落在探测器上的位置。每一发束团的指向都略有不同,能量也略有高低,许多发累加起来,这些抖动就把要测的衍射斑抹宽了。BNL 的 Xi Yang 能从衍射图样上读出束流参数,办法是对各个衍射斑做高斯拟合,但一帧要 0.4 s 左右,电子枪每秒打几发以上就跟不上了。Xi Yang 的想法是用拟合标注过的帧训练一个网络,再让它去读每一发新的图样。卷积神经网络(Convolutional Neural Network,CNN)的搭建和训练由我完成,由此产生的两篇 Scientific Reports 文章(2021 年与 2022 年)我都是第一作者。
- 0.11 µrad逐发读取真实束团水平指向的 rms 误差
- 0.39 ms论文速度测试中 CNN 在 GPU 上读一帧所需的时间
- 20 分钟换样品之后用几千发带标签的数据在一块 GPU 上重新训练所需的时间
一发束团里的信息
电子在晶体上散射之后,落在荧光屏上形成一个个亮点。衍射斑的位置取决于束流在 x 向和 y 向的指向以及能量,宽度则取决于两个方向的发散角以及能散(energy spread),因此原则上一帧图像里就包含了这六个量。

一个小的 CNN
工作从模拟开始。Xi Yang 用 GPT 把束流从电子枪跟踪到样品,衍射图样则由 Xi Yang 和 Lijun Wu 用 Lijun Wu 的程序算出。这样得到了 10,000 幅钛酸锶晶体的图样,每一幅都带着生成它的六个数作为标签。
我选了 LeNet 式的网络结构,在 CNN 里算是最简单的一种:五轮卷积加池化把一帧图像压成一叠 6×6 的特征图,然后一个全连接层接六个线性输出,每个输出对应一个量。

能散
第一个网络同时学六个量。在它没有见过的图样上,指向和发散角的误差都在各自范围的 2% 以内,能量的结果一般,能散的结果则与猜测相差无几。

问题不在网络本身。一个衍射斑的宽度(相对于它离中心的距离而言)同时来自发散角和能散:
其中 为束流的发散角, 为该衍射斑的布拉格角, 为能量 的能散。
在这组数据里发散角远大于能散。按论文里算过的那个例子,开根号之前两项的比例是 95 比 5,因此能散的信息在图样里是有的,只是被发散角淹没了。
于是我们又做了第二组数据,其中只有能散在变,发散角压到了几 µrad。此时每个衍射斑都沿半径方向拉长,同一个网络就能把能散读到范围的 0.2% 左右。真实束线上的发散角压不到这么小,我们在论文里提议加聚光镜(condenser lens)和光阑来做到这一点,但没有试过。

2020 年的真实数据
接下来是真实数据,即 BNL 的小组 2020 年在二碲化钼(MoTe2)样品上记录的几千发。探测器只能收到一级衍射斑,而高斯拟合定位置远比测宽度准,所以只有 x 向和 y 向的指向以及能量抖动有标签(Xi Yang 逐发拟合的结果)。发散角和能散没有标签可学,我就把输出层减到三个,重新训练。
在没有见过的数据上,网络的读数正落在拟合的标签上:竖直指向与水平指向读得一样好,能量抖动的 rms 误差约为 3 × 10−5。

网络需要多少数据?我用更小和更大的训练集重新训练,误差在三四千发之后就不再下降。
展开的环
训练时间仍然偏长,我想把它缩短。有用的信息几乎都在衍射环上,约占像素的 38%,于是我把环展开成条带,一个方向是半径,另一个方向是角度,在上面训练一个更小的网络。重采样只取半径 91 到 127 像素的一圈,角度每 1° 一步,输入就从 256×256 的图像变成 36×360 的条带,减少了 80%。权重随之减少 70%,训练时间不到原来的一半。

代价是精度,误差大约翻了一倍。我是绕着图像中心展开的,而指向抖动会让整幅图样一起移动,于是条带上各衍射斑的相对位置被打乱了;指向和能量恰恰是从这个排布里读出来的,我用的网络又浅,学不回来。
回到机器的旋钮
Xi Yang 接下来的问题是,能否再用一个网络往回多推一步,从样品处的束流反推出产生它的机器设置。2022 年的文章把两个网络串起来:第一个读探测器,就是我的 CNN;第二个把六个束流参数映射到六个机器设置。这六个设置分别是激光光斑在阴极上 x 向和 y 向的偏移,光斑尺寸,微波幅度,枪相位和螺线管线圈电流;第二个网络用 Xi Yang 的 10,000 次 GPT 模拟训练,模拟中的束团电荷量为 0.5 pC。

只有一个隐藏层的网络在微波幅度上最差,原因可能是空间电荷力使这一段映射强烈非线性。我改成四层的网络,六个量上都更好,但仍有两个设置没有达到机器要求的精度:枪相位的误差是 3.7°,目标是 3°,微波幅度也差一点。
离线
这些工作都没有在机器上运行过。2021 年的网络在 2020 年记录的数据上训练和测试,那篇文章里的「实时」指的是按计时它能做到的速度;2022 年的文章从头到尾都是模拟,它为真实机器做的计划(4 小时数据,10 分钟训练)只是估计。虚拟诊断(virtual diagnostic)也不是新想法,Sanchez-Gonzalez 等人 2017 年就在自由电子激光(Free Electron Laser,FEL)的 X 射线脉冲上做过。我们第一篇文章的标题甚至与他们的相呼应。
数字与图均出自 Zhang 等,Sci. Rep. 11, 13890(2021)与 Sci. Rep. 12, 4240(2022),两篇都是 CC BY 4.0 开放获取,图有裁剪。