Skip to content

Commit 19527a0

Browse files
authored
translation(hus): add mdqn_zh version and polish some typo or format problem (#232)
* fix reference format and polish MDQN_en version * translation(hus):add mdqn_zh version and polish some typo or format problem * fix mdqn_zh format problem and typo * words typo and format polish
1 parent 10c1e58 commit 19527a0

File tree

4 files changed

+124
-3
lines changed

4 files changed

+124
-3
lines changed

source/12_policies/dqn_zh.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ DQN
77

88
快速了解
99
-------------
10-
1. DQN 是一个 **无模型(model-free)** 且 **基于值函数(value-based)** 的强化学习算法。
10+
1. DQN 是一个 **无模型(model-free** 且 **基于值函数(value-based)** 的强化学习算法。
1111

1212
2. DQN 只支持 **离散(discrete)** 动作空间。
1313

source/12_policies/index_zh.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
:caption: Q-学习
1919

2020
dqn_zh
21-
21+
mdqn_zh
2222
.. toctree::
2323
:maxdepth: 3
2424
:caption: 探索

source/12_policies/mdqn.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ The target Q value used in MDQN is:
2929
\hat{q}_{\mathrm{m} \text {-dqn }}\left(r_t, s_{t+1}\right)=r_t+\alpha \tau \ln \pi_{\bar{\theta}}\left(a_t \mid s_t\right)+\gamma \sum_{a^{\prime} \in A} \pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)\left(q_{\bar{\theta}}\left(s_{t+1}, a^{\prime}\right)-\tau \ln \pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)\right)
3030
3131
32-
For the log policy :math:`\alpha \tau \ln \pi_{\bar{\theta}}\left(a_t \mid s_t\right)` we used the following formula to calculate
32+
For the log-policy :math:`\alpha \tau \ln \pi_{\bar{\theta}}\left(a_t \mid s_t\right)` we used the following formula to calculate
3333

3434
.. math::
3535

source/12_policies/mdqn_zh.rst

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
MDQN
2+
^^^^^^^
3+
4+
概述
5+
---------
6+
MDQN 是在 `Munchausen Reinforcement Learning <https://arxiv.org/abs/2007.14430>`_ 中提出的。 作者将这种通用方法称为 “Munchausen Reinforcement Learning”
7+
(M-RL), 以纪念 Raspe 的《吹牛大王历险记》中的一段著名描写, 即 Baron 通过拉自己的头发从沼泽中脱身的情节。
8+
从实际使用的角度来看, MDQN 和 DQN 之间的关键区别是 Soft-DQN (传统 DQN 算法的扩展)的即时奖励中添加了一个缩放的 log-policy 。
9+
10+
核心要点
11+
-------------
12+
1。 MDQN 是一种 **无模型 (model-free)** 且 **基于值函数 (value-based)** 的强化学习算法。
13+
14+
2。 MDQN 只支持 **离散 (discrete)** 动作空间。
15+
16+
3。 MDQN 是一个 **异策略 (off-policy)** 算法。
17+
18+
4。 MDQN 使用 **epsilon贪心 (eps-greedy)** 来做探索 (exploration)。
19+
20+
5。 MDQN 增加了 **动作间隔 (action gap)** , 并具有隐式的 **KL正则化 (KL regularization)** 。
21+
22+
23+
关键方程或关键框图
24+
---------------------------
25+
MDQN 中使用的目标 Q 值 (target Q value) 是:
26+
27+
.. math::
28+
29+
\hat{q}_{\mathrm{m} \text {-dqn }}\left(r_t, s_{t+1}\right)=r_t+\alpha \tau \ln \pi_{\bar{\theta}}\left(a_t \mid s_t\right)+\gamma \sum_{a^{\prime} \in A} \pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)\left(q_{\bar{\theta}}\left(s_{t+1}, a^{\prime}\right)-\tau \ln \pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)\right)
30+
31+
32+
我们使用以下公式计算 log-policy 的值: :math:`\alpha \tau \ln \pi_{\bar{\theta}}\left(a_t \mid s_t\right)`
33+
34+
.. math::
35+
36+
\tau \ln \pi_{k}=q_k-v_k-\tau \ln \left\langle 1, \exp \frac{q_k-v_k}{\tau}\right\rangle
37+
38+
其中 :math:`q_k` 在我们的代码中表示为 `target_q_current` 。 对于最大熵部分 :math:`\tau \ln \pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)` 我们使用相同的公式进行计算,其中 :math:`q_{k+1}` 在我们的代码中表示为 `target_q` 。
39+
40+
我们将 :math:`\tau \ln \pi(a \mid s)` 替换为 :math:`[\tau \ln \pi(a \mid s)]_{l_0}^0`` 因为对数策略项 (log-policy term) 是无界的, 如果策略变得过于接近确定性策略 (deterministic policy) ,可能会导致数值性问题 (numerical issues) 。
41+
42+
同时还将 :math:`\pi_{\bar{\theta}}\left(a^{\prime} \mid s_{t+1}\right)` 替换为 :math:`softmax(q-v)` ,因为这是在官方实现中使用的方法,但他们并未在论文中提及。
43+
44+
我们使用上述改动后的配置在 asterix 进行测试,得到了与原论文相同的结果, 即MDQN可以增加动作间隙 (action gap) 。
45+
46+
.. image:: images/action_gap.png
47+
:align: center
48+
49+
伪代码
50+
---------------
51+
.. image:: images/mdqn.png
52+
:align: center
53+
54+
扩展
55+
---------------
56+
- TBD
57+
58+
59+
实现
60+
----------------
61+
MDQNPolicy 的默认配置如下:
62+
63+
.. autoclass:: ding.policy.mdqn.MDQNPolicy
64+
:noindex:
65+
66+
67+
MDQN 使用的 TD error 接口定义如下:
68+
69+
.. autofunction:: ding.rl_utils.td.m_q_1step_td_error
70+
:noindex:
71+
72+
73+
实验 Benchmark
74+
------------------
75+
76+
.. list-table:: Benchmark and comparison of mdqn algorithm
77+
:widths: 25 15 30 15 15
78+
:header-rows: 1
79+
80+
* - environment
81+
- best mean reward
82+
- evaluation results
83+
- config link
84+
- comparison
85+
* - | Asterix
86+
| (Asterix-v0)
87+
- 8963
88+
- .. image:: images/benchmark/mdqn_asterix.png
89+
- `config_link_asterix <https://github.com/opendilab/DI-engine/blob/main/dizoo/atari/config/serial/asterix/asterix_mdqn_config.py>`_
90+
- | sdqn(3513) paper(1718) dqn(3444)
91+
* - | SpaceInvaders
92+
| (SpaceInvaders-v0)
93+
- 2211
94+
- .. image:: images/benchmark/mdqn_spaceinvaders.png
95+
- `config_link_spaceinvaders <https://github.com/opendilab/DI-engine/blob/main/dizoo/atari/config/serial/spaceinvaders/spaceinvaders_mdqn_config.py>`_
96+
- | sdqn(1804) paper(2045) dqn(1228)
97+
* - | Enduro
98+
| (Enduro-v4)
99+
- 1003
100+
- .. image:: images/benchmark/mdqn_enduro.png
101+
- `config_link_enduro <https://github.com/opendilab/DI-engine/blob/main/dizoo/atari/config/serial/enduro/enduro_mdqn_config.py>`_
102+
- | sdqn(986.1) paper(1171) dqn(986.4)
103+
104+
105+
106+
我们的配置和论文中的配置的主要区别如下:
107+
108+
- 我们收集了100个样本,进行了十次训练。而在原论文中,收集了4个样本,进行了一次训练。
109+
- 我们每500个迭代更新一次目标网络 (target network) ,而原论文每2000个迭代更新一次目标网络。
110+
- 我们用于探索的epsilon从1逐渐下降到0.05,而原论文的epsilon是从0.01到0.001。
111+
112+
P.S.:
113+
114+
- 以上结果是在 **seed 0** 上运行同样配置得到的。
115+
- 对于像DQN这样的离散动作空间算法, 一般采用Atari环境集来进行测试, Atari 环境一般通过10M ``env_step`` 的最高均值奖励(highest mean reward)训练来评估。关于Atari环境的更多细节请参考: `Atari 环境教程 <../env_tutorial/atari.html>`_
116+
117+
参考文献
118+
----------
119+
120+
- Vieillard, Nino, Olivier Pietquin, and Matthieu Geist. "Munchausen reinforcement learning." Advances in Neural Information Processing Systems 33 (2020): 4235-4246.
121+

0 commit comments

Comments
 (0)