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 网络

