加速器上有不少调机任务是同一件事反复做。进入输运线的束流稍有变化,校正铁的最优设置就跟着变,于是只好再跑一遍优化器,每一次都像第一次遇到这个问题一样从头开始。一个自然的想法是训练一个神经网络,让它从传感器的读数直接跳到最优设置;但监督学习的每一个训练样本都要带上答案,而每一个答案都要用优化器跑一次才能得到,跑出来的还未必是真正的最优。我的想法是不要这些答案:在策略网络之后接一个可微的奖励模型,让奖励的梯度一路传回策略网络,策略网络就由这个梯度来训练。我把这个方法叫做单步策略(single-shot policy)。我们在模拟中试过它,也在 LBNL 的一台激光合束实验台上试过。文章由 LBNL 主导(Dan Wang 等,我是七位作者中的第五位),还没有发表。
- 0训练策略所需的最优动作个数
- 0.9038模拟中,策略对从未见过的入射束流给出的平均注入效率
- 63.96八路合束模拟中的中心光强,满值为 64
只有一个动作的回合
强化学习(Reinforcement Learning,RL)里的智能体(agent)先做一个动作,观察结果,再做下一个动作,把一个回合里的奖励加起来作为评价。很多调机问题并不需要第二次观察:传感器把状态报出来以后,状态本身就决定了最优动作,文章把这类问题称为确定性问题。因此一个回合可以只有一个动作,并且单独给这个动作打分,单步说的就是这一点。

奖励模型与策略网络
方法里有两个网络:奖励模型 R-Net()以状态和动作为输入,预测奖励;策略网络 P-Net()以状态为输入,给出一个动作。把 P-Net 给出的动作送进 R-Net,预测出的奖励就可以对 P-Net 的权重求导,梯度一路传回去。
其中 为状态, 为策略网络, 为奖励模型, 即策略自己给出的动作所对应的预测奖励。
因此损失函数就是一批状态上预测奖励的平均值取负,训练过程从头到尾不需要知道正确的动作是什么。
增强器到储存环的输运线
第一个测试在模拟中做,对象是 SSRL 把电子从增强器送进 SPEAR3 的那条输运线;RCDS-S 在同一条线上追过一个漂移,也是在模拟里。策略的旋钮(knob)是线前段的四块校正铁,两块水平,两块垂直;它读的是全部九个束流位置探测器(Beam Position Monitor,BPM)上的 x 和 y,要的是输运线末端的注入效率。它看不见入射束流,我们把入射束流的位置和角度随机化。

我们用的模拟程序是 Matlab 下的 Accelerator Toolbox,它不可微,因此这个例子需要一个 R-Net,用几千个拉丁超立方(Latin hypercube)样本拟合。测试用的是 1,000 个两个网络都没有见过的入射束流。校正前,注入效率常常接近于零;走一步之后,平均值接近可能达到的最好值(约 0.904)。

相干合束
相干合束(coherent beam combining)是激光上的同一类问题。几束激光在一片衍射光学元件上叠加,落在中心光斑上的功率取决于它们之间的相对相位,而相位会随时间漂移,仅发热一项就足以造成漂移。相机只能看到这些光束叠出来的图样。我们的模拟里有八束光,排成 3×3 的阵列,中间空着;策略看到的是相机上 5×5 的一小块图像,给出的是八个相位,奖励是中心像素的光强,最大为 64。模拟程序是我们用 PyTorch 写的,本身可微,因此不需要 R-Net。
只用 100 个随机起点训练,策略给出的中心光强就已经接近 64。起点更多,结果更好:用 3,000 个起点训练,均值更接近 64,分布也窄了很多。


接着是 9×9 共 81 束光,这是 LBNL 的组正在努力达到的规模。当时还没有 9×9 的装置,所以这一步只检验方法能否放大。策略读 17×17 的一块图像,给出 81 个相位;训练用了 30,000 个起点,每个起点的相位偏差都在 30 度以内。它把中心光强的均值从约 5,990 提高到约 6,510,文章里直接写明这比小规模的例子差。至于为什么更差,目前还只是我在草稿里留的一条批注。


LBNL 的实验台
硬件测试在 LBNL 的八路合束实验台上做,下面这条曲线记录于 2023 年 9 月 7 日。这套装置属于 LBNL 的激光控制组,DDRM 也是他们的,那是他们原有的一套保持合束的方法。装置是为光纤放大器建的,放大器当时还没有装上,因此这次测试把一台连续(CW)激光分成八路,同样是 3×3 的阵列,中间空着,相位由压电反射镜设定。
真实的实验台没有可微模型,所以这一次 R-Net 只能从数据里学。我们在台上运行随机并行梯度下降(Stochastic Parallel Gradient Descent,SPGD),它把所有相位一起抖动,跟着能提高中心光强的方向走。运行期间记录了 20,000 幅相机图样,每一幅都带着紧接着的那一步相位调整。R-Net 在这些数据上不到一分钟就训练好了;P-Net 不需要现场数据(它的图样是我们生成的),也在一分钟内完成。需要斟酌的是 P-Net 输出的尺度:尺度太大,策略会跑到 R-Net 没有见过的区域;太小,好的答案又够不到。试了几次以后我们定为 1.5。

策略运行时,中心功率保持平稳;暂停以后,功率下降并且抖动。之后我们故意把相位打乱,再把策略打开,功率立刻回到原来的水平。曲线末尾与 DDRM 的对比,按文稿的读法是策略的合束功率更高,稳定性相近而略差。这次运行草稿里还没有数字,只有这条曲线。
还没有写完的文章
SLAC 这一边的工作全部是模拟,没有任何部署。草稿里没有与搜索式优化的速度对比,因此没有可以报告的加速比。文章希望策略能够不经重新训练就应付漂移,但目前没有结果能说明这一点。草稿没有完成,也没有投稿,到现在为止只有 IPAC'24 的一篇摘要。
数字与图出自文稿 "Simplified reinforcement learning enabled deterministic feedback controls in lasers and accelerators: experimental demonstration on laser combining"(Wang,Du,Zhou,Wilcox,Zhang,Huang 与 Ratner,未发表),经 Dan Wang 同意在此展示。单步那张草图是我画的。