在阅读强化学习相关的论文时经常会遇到bellman operator和bellman equation,例如:状态动作值函数的贝尔曼等式:
状态动作值函数的贝尔曼算子:
那么这两个东西到底有什么区别呢?首先给出结论,这两个东西的等价的。证明如下:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
)
v_{\pi}(s)=\sum_{a \in \mathcal{A}} \pi(a \mid s)\left(\mathcal{R}_{s}^{a}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{\pi}\left(s^{\prime}\right)\right)
vπ(s)=a∈A∑π(a∣s)(Rsa+γs′∈S∑Pss′avπ(s′))
展开
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
R
s
a
+
γ
∑
a
∈
A
π
(
a
∣
s
)
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
v_{\pi}(s)=\sum_{a \in \mathcal{A}} \pi(a \mid s)\mathcal{R}_{s}^{a}+\gamma\sum_{a \in \mathcal{A}} \pi(a \mid s) \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{\pi}\left(s^{\prime}\right)
vπ(s)=a∈A∑π(a∣s)Rsa+γa∈A∑π(a∣s)s′∈S∑Pss′avπ(s′)
左边项可以写成
R
s
π
=
∑
a
∈
A
π
(
a
∣
s
)
R
s
a
\mathcal{R}_{s}^{\pi}=\sum_{a \in \mathcal{A}} \pi(a \mid s) \mathcal{R}_{s}^{a}
Rsπ=a∈A∑π(a∣s)Rsa
右边项可以写成
P
s
s
′
π
=
∑
a
∈
A
π
(
a
∣
s
)
P
s
s
′
a
\mathcal{P}_{s s^{\prime}}^{\pi}=\sum_{a \in \mathcal{A}} \pi(a \mid s) \mathcal{P}_{s s^{\prime}}^{a}
Pss′π=a∈A∑π(a∣s)Pss′a
于是原来bellman equation变成
v
π
(
s
)
=
R
s
π
+
γ
∑
s
′
∈
S
P
s
s
′
π
v
π
(
s
′
)
v_{\pi}(s)=\mathcal{R}_{s}^{\pi}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{\pi} v_{\pi}\left(s^{\prime}\right)
vπ(s)=Rsπ+γs′∈S∑Pss′πvπ(s′)
对于一个batch的数据,上面的式子进一步简化:
v
π
=
R
π
+
γ
P
π
v
π
v_{\pi}=\mathcal{R}^{\pi}+\gamma \mathcal{P}^{\pi} v_{\pi}
vπ=Rπ+γPπvπ
而对应的bellman operator是这样的:
T
π
(
v
)
=
R
π
+
γ
P
π
v
\mathcal{T}^{\pi}(v)=\mathcal{R}^{\pi}+\gamma \mathcal{P}^{\pi} v
Tπ(v)=Rπ+γPπv
就是用bellman operator更新v,而这个bellman operator由pi决定。和原来bellman equation中更具策略pi更新v本质上是一样的。形式的不同就是把pi提到贝尔曼算子的符号上。
那为什么要改写呢?是因为贝尔曼算子的收缩性能够用来证明v的值最后可以收敛到固定的点。所以贝尔曼算子就是用来理论推导的。
如果有理解不对的地方,希望各位大佬批评指正!