Page 141 - 《软件学报》2025年第12期
P. 141

5522                                                      软件学报  2025  年第  36  卷第  12  期


                                                      
                                                             −L t + L 0
                                                       ∆L t→0 =
                                                      
                                                      
                                                      
                                                               L 0
                                                      
                                                      
                                                  ∆L =                                               (2)
                                                      
                                                      
                                                              −L t + L t−1
                                                       ∆L t→t−1 =
                                                      
                                                      
                                                      
                                                                 L t−1
                    公式  (1) 和公式  (2) 分别表示吞吐量和延迟的变化量, 根据公式             (3) 计算吞吐量和延迟的奖励. 奖励函数计算
                 公式如下:

                                                       2
                                               ((1+∆ t→0 ) −1)|1+∆ t→t−1 |, ∆ t→0 > 0
                                               
                                               
                                             r =                                                     (3)
                                                        2
                                                −((1−∆ t→0 ) −1)|1−∆ t→t−1 |, ∆ t→0 ⩽ 0
                    在传统的单目标优化的强化学习方法中将奖励函数设置为标量形式, 如                        CDBTune +[2] 使用的  DDPG  方法将奖
                 励     r 表示为单次调优后吞吐量和延迟的奖励的线性组合, 如公式               (4) 所示:
                                                                                                      (4)
                                                      r = α×r T +β×r L
                    为了避免预先设置偏好带来的繁琐迭代过程和不利因素, 以及将多目标优化任务简单线性变换为单目标优化
                 任务带来的缺陷, 本文将奖励形式向量化表示为:

                                                        r =< r T ,r L >                               (5)
                    基于以上符号描述和定义, 本文原生多目标强化学习算法                  N-MODDPG  的实现代码如算法       1 所示. N-MODDPG
                 采用  4  个神经网络, 其中   Actor 和  Critic 分别模拟策略和价值函数, 且各自用一个目标网络来解决               Q  值高估的问
                 题. 算法中第    1–3  行初始化各个网络参数及优先经验回放池               R; 算法中第    4  行设置模型训练的轮次        episode
                 的个数; 第  5  行使用  OU  随机过程初始化随机噪声        N; 算法的第   6  行从数据库系统中获取运行时度量参数            Metrics,
                 并处理为每个     episode 的初始状态   s 0 ; 从第  7  行开始, 每个  episode 持续  T  轮, 每轮将初始状态输入给  Actor 网络
                 π(s t |θ ), 将其输出加上随机噪声   N (增加对环境的探索性) 作为动作         a t  (第  8  行), 执行当前动作  a t  获取向量化的奖
                     π
                 励   < r T ,r L > 状态  s t+1 , 第  8  行操作具体含义为: 把动作处理为适当的数据库系统参数写入相应配置文件中, 重启数
                 据库系统使配置参数生效, 执行基准测试获得数据库系统当前性能, 由提前设置的奖励函数处理为向量奖励, 数据
                                               (
                 库系统重启后状态发生变化:          s t → s t+1 t ∈ [0,T]), 将获取到的数据  < s t ,a t ,r t , s t+1 > 放入优先经验回放池  R  中; 算法
                 中第  10–15  行用于更新  Critic 网络和  Actor 网络的参数, 包括通过数据采样获取更新操作所用的样本、用目标网
                 络  [26] 计算  TD Target 来指导  Critic 网络的更新、计算  TD Target 和当前  Q  值的差值  TD-error 来构造损失函数用于
                 更新  Critic 网络、使用随机策略梯度更新        Actor 网络, 最后更新目标网络.
                 算法  1. N-MODDPG.
                                                 Q
                        π
                                                                 π
                 1. θ 和 Q  θ 随机初始化 Critic 网络 Q(s, a|θ ) 和 Actor 网络 π(s|θ )
                           π′
                        Q
                   Q′
                               π
                 2. θ  ← θ , θ  ← θ 初始化目标网络权重参数
                 3. 初始化优先经验回放池 R
                 4. for episode = 0 → E do
                            N  初始化
                 5.  随机噪声
                 6.  获得初始状态 s 0
                 7.  for t = 0 → T do
                             π
                 8.   a t  = π(s t |θ ) +  N
                 9.   执行动作 a t , 得到向量奖励 r t  =<r T , r L > 和状态 s t+1 , 将 <s t , a t , r t , s t+1 > 存入 R
                 10.    从 R 中采样批量为 n 的多维数组 <s i , a i , r i , s i+1 >
                 11.    if update then
                                           π′
                                              Q′
                                 ′
                 12.    y i  = r i  +  γQ (s i+1 , π′(s i+1 |θ )|θ )
                 13.    //最小化损失函数 L 来更新 Critic 网络
   136   137   138   139   140   141   142   143   144   145   146