在自定义环境中定义奖励和状态观测信号
连续奖励
连续奖励函数会随着环境状态观测和动作的变化而不断变化。一般来说,连续奖励信号能提高训练过程中的收敛性,并能简化网络结构。
二次调节器 (QR) 成本函数就是连续奖励的一个例子,其长期累积奖励可表示为
J
i
=
−
(
s
τ
T
Q
τ
s
τ
+
∑
j
=
i
τ
s
j
T
Q
j
s
j
+
a
j
T
R
j
a
j
+
2
s
j
T
N
j
a
j
)
J_i=-\left(s_\tau^TQ_\tau s_\tau+\sum_{j=i}^\tau s_j^T Q_j s_j + a_j^T R_j a_j + 2s_j^T N_ja_j\right)
Ji=−(sτTQτsτ+j=i∑τsjTQjsj+ajTRjaj+2sjTNjaj)
其中,
Q
τ
Q_τ
Qτ、
Q
Q
Q、
R
R
R 和
N
N
N 是权重矩阵。
Q
τ
Q_τ
Qτ 是终端权重矩阵,仅在回合结束时使用,
s
s
s 是状态观测向量,
a
a
a 是动作向量,
τ
\tau
τ 是该回合的终端迭代。该成本函数的(瞬时)奖励为
r
i
=
s
i
T
Q
i
s
i
+
a
i
T
R
i
a
i
+
2
s
i
T
N
i
a
i
r_i = s_i^TQ_is_i + a_i^TR_ia_i + 2s_i^TN_ia_i
ri=siTQisi+aiTRiai+2siTNiai
这种 QR 奖励结构鼓励智能体以最少的动作努力使 s s s 趋于零。基于 QR 的奖励结构是调节或静止点问题(如钟摆摆动或调节双积分器的位置)的理想奖励结构。有关使用 QR 奖励的训练示例,请参阅Train DQN Agent to Swing Up and Balance Pendulum 和 Compare DDPG Agent to LQR Controller。
平滑的连续奖励,如 QR 调节器,有利于微调参数,并能提供类似于最优控制器(LQR/MPC)的策略。
离散奖励
离散奖励函数随着环境观测或行动的变化而不连续地变化。这些类型的奖励信号会使收敛速度变慢,并需要更复杂的网络结构。离散奖励通常是通过环境中发生的事件来实现的–例如,当一个智能体超过某个目标值时,它就会获得正奖励;当它违反某个性能约束时,它就会受到惩罚。
虽然离散奖励会减慢收敛速度,但也能引导智能体走向环境状态空间中更好的奖励区域。例如,基于区域的奖励,如当智能体接近目标位置时的固定奖励,可以模拟最终状态约束。此外,基于区域的惩罚也可以鼓励智能体避开状态空间的某些区域。
混合奖励
在许多情况下,提供一种混合奖励信号是有益的,这种信号既有连续奖励成分,也有离散奖励成分。离散奖励信号可用于驱动系统远离不良状态,而连续奖励信号则可在目标状态附近提供平滑奖励,从而提高收敛性。例如,在 Train DDPG Agent to Control Sliding Robot中,奖励函数有三个组成部分:
r
1
r_1
r1、
r
2
r_2
r2 和
r
3
r_3
r3
r
1
=
10
(
(
x
t
2
+
y
t
2
+
θ
t
2
)
<
0.5
)
r
2
=
−
100
(
∣
x
t
∣
≥
20
∣
∣
∣
y
t
∣
≥
20
)
r
3
=
−
(
0.2
(
R
t
−
1
+
L
t
−
1
)
2
+
0.3
(
R
t
−
1
−
L
t
−
1
)
2
+
0.03
x
t
2
+
0.03
y
t
2
+
0.02
θ
t
2
)
r
=
r
1
+
r
2
+
r
3
\begin{aligned} &r_1 = 10\left(\left(x_t^2+y_t^2+\theta_t^2\right)<0.5\right)\\[2ex] &r_2 = -100\left(\ \mid x_t\mid\ \geq20\ ||\ \mid \ y_t\mid\ \geq20\right)\\[2ex] &r_3 = -\Big(0.2(R_{t-1}+L_t-1)^2+0.3(R_{t-1}-L_t-1)^2+0.03x_t^2+0.03y_t^2+0.02\theta^2_t\Big)\\[2ex] &r= r_1+r_2+r_3 \end{aligned}
r1=10((xt2+yt2+θt2)<0.5)r2=−100( ∣xt∣ ≥20 ∣∣ ∣ yt∣ ≥20)r3=−(0.2(Rt−1+Lt−1)2+0.3(Rt−1−Lt−1)2+0.03xt2+0.03yt2+0.02θt2)r=r1+r2+r3
其中:
-
r 1 r_1 r1 是基于区域的连续奖励,只适用于机器人的目标位置附近。
-
r 2 r_2 r2 是一个离散信号,当机器人远离目标位置时会受到较大惩罚。
-
r 3 r_3 r3 是连续的 QR 惩罚,适用于机器人的所有状态。
根据控制规范生成奖励
对于已经存在工作控制系统的应用,成本函数或约束条件等规格可能已经存在。在这种情况下,您可以使用 generateRewardFunction 自动生成一个以 MATLAB 编码的奖励函数,作为奖励设计的起点。该函数允许您根据以下内容生成奖励函数:
- 在 mpc(模型预测控制工具箱)或 nlmpc(模型预测控制工具箱)控制器对象中定义的成本和约束规范。此功能需要使用模型预测控制工具箱软件。
- Simulink Design Optimization 模型验证块中定义的性能约束。
在这两种情况下,当违反约束条件时,都会使用惩罚函数(如外部惩罚函数(默认)、双曲惩罚函数或障碍惩罚函数)计算负奖励。
从生成的奖励函数开始,您可以调整成本和惩罚权重,使用不同的惩罚函数,然后在环境中使用生成的奖励函数来训练智能体。
状态观测信号
创建自定义环境时,选择哪些信号作为操作和观测点取决于您的应用。例如,在控制系统应用中,误差信号的积分(有时是导数)通常是有用的观测值。此外,对于参考跟踪应用,将时变参考信号作为观测信号也很有帮助。
在定义观测信号时,最佳做法是在观测向量中包含所有可用的环境状态。
如果不这样做,就会导致不同的环境状态产生相同的观测结果。对于这种状态,智能体策略(假设它是观察结果的静态函数)返回相同的操作。这样的策略通常是不成功的,因为通常情况下,成功的策略需要通过返回不同的操作来对不同的环境状态做出反应。
例如,对摆动的钟摆进行图像观测时,虽然有位置信息,但本身并没有足够的信息来确定钟摆的速度。在这种情况下,无法感知速度的静态策略将无法稳定摆锤。但是,如果可以测量或估算出摆锤的速度,那么将其作为观测向量的附加项,就能为静态策略提供足够的信息来稳定摆锤。
当并非所有状态都可以作为观测信号时(例如,因为测量这些状态是不现实的),一种可能的变通方法是使用一个估计器(作为环境的一部分)来估计未测量状态的值,并将这些估计值作为观测值提供给智能体。或者,也可以在策略中使用 LSTM 等递归网络。这样做的结果是,策略具有状态,因此可以将其状态作为环境状态的内部表示。因此,即使没有足够的信息来根据当前观测结果重建正确的环境状态,这样的策略也能根据其内部状态的不同值返回不同的操作。
原文地址:https://blog.csdn.net/m0_72748751/article/details/136554802
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!