-
Notifications
You must be signed in to change notification settings - Fork 0
/
deep-reinforcement-learning.rst
82 lines (57 loc) · 4.75 KB
/
deep-reinforcement-learning.rst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
============
强化学习介绍
============
.. hint::
学习强化学习需要具备的先验知识:1)知道怎么搭建神经网络,2)\ :ref:`vector-chain-rule`\。
术语介绍
--------
随机变量(Random Variable)和观测值(Observation)
概率统计中通常用大小写区分随机变量和它的观测值。随机变量用大写,观测值用小写。
概率密度函数(Probability Density Function, PDF)
它表示在某个确定的取值点附近的可能性。概率密度函数在定义域上的积分:
连续的 :math:`\int_{\mathcal{X}} p(x)dx = 1`,离散的 :math:`\int_{x \in \mathcal{X}} p(x)dx = 1`\。
期望:连续的 :math:`\mathbb{E}[f(X)] = \int_{\mathcal{X}} p(x) f(x) dx`,
离散的 :math:`\mathbb{E}[f(X)] = \int_{x \in \mathcal{X}} p(x) f(x) dx`\。
随机变量的域(Domain)
观测值的取值范围就是观测变量的域,用花体表示,参考\ :ref:`符号表 <probability-statistics-symbols>`\。
随机抽样(Random Sampling)
这一章提到的随机抽样都是又放回的随机抽样。
智能体(Agent)
可以理解为研究对象,比如车、人。
状态(State)
可以理解为当前图像帧。
动作(Action)
智能体能够表现出的行为。
决策函数(Policy Function)
根据 State 判断智能体做出 Action 的可能性,决策函数是一个概率密度函数。
状态转移(State Transition)
根据 Old State 和 Action 判断做出 New State 的可能性,状态转移函数是一个概率密度函数。
奖励和回报(Reward and Return)
回报(Return)也叫累计奖励(Cumulative Future Reward),表示未来获得奖励的总和,记作 :math:`U_t`\。
数学表达式为 :math:`U_t = R_t + R_{t+1} + \dots` 一直加到游戏结束。
由于未来的奖励和现在的奖励通常并不一样吸引人,我们可以给未来的奖励打个折扣,叫做折扣回报,记作
:math:`U_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \dots`
动作价值函数(Action Value Function)
数学表达式为 :math:`Q_\pi(s_t, a_t)=\mathbb{E}[u_t | S_t=s_t, A_t = a_t]`\。因为未来的状态和动作均未知,
可以通过求期望的方式,利用积分把未来的不确定性给积掉,因此 :math:`s_{t+1}, a_{t+1}, \dots` 都被积掉了,
剩下了 :math:`s_t, a_t`\。动作价值函数给动作打分,评价在该决策下,采取这些动作有多大胜算。
最优动作价值函数(Optimal Action Value Function)
数学表达式为 :math:`Q^{*}(s_t, a_t)=\max\limits_{\pi} Q_\pi(s_t, a_t)`\。根据每个决策函数,比较价值函数的值,挑选出最优的价值函数的值。
状态价值函数(State Value Funciton)
数学表达式为 :math:`V_\pi(s_t)=\mathbb{E}_A[Q_\pi(s_t, A)]`\。状态价值函数评价当前状态的好坏,快赢了还是快输了。
:math:`\mathbb{E}_A[V_\pi(s_t)]` 也能用来评价 :math:`\pi` 的好坏: :math:`\pi` 越好 :math:`\mathbb{E}` 越大。
基本原理
--------
因为 :math:`\pi` 和 :math:`p` 都是概率密度函数,我们依靠这种概率模型,在所有可能的取值集合中随机抽样,可以得到强化学习的两个随机性来源:
1. 下一个动作: :math:`\mathbb{P}[A=a | S=s] = \pi(a | s)`\。下一个动作是根据决策函数 :math:`\pi` 随机抽样得到。
2. 下一个状态: :math:`\mathbb{P}[S'=s | S=s, A=a] = p(s' | s, a)`\。下一个状态是根据状态转移函数 :math:`p` 随机抽样得到。
.. note::
因为下一个动作会有一个取值集合,比如上、下、左、右,决策函数的指示根据当前状态,做出每个动作的可能性。
因为下一个状态也会有一个取值集合,比如下雨、晴天,状态转移函数指示在做出当前动作后,分别出现下雨或晴天的可能性。
强化学习的目标是学习决策函数和状态转移函数,从而可以根据这两个函数预测下一个动作和下一个状态,进而使智能体能够做出正确的决策。
因此基本上也就两种基本思路,Policy Based RL 学习 :math:`\pi` 和 Value Based RL 学习 :math:`Q^{*}`\。
通过不断地更新智能体的动作和环境的状态,就会得到一个 :math:`(\text{State, Action, Reward})` 轨迹(Trajectory):
:math:`(s_1, a_1, r_1), (s_2, a_2, r_2), ..., (s_t, a_t, r_t)`\。
在预测过程中通过累计奖励 :math:`U_t` 来判断决策是不是一个好决策, :math:`U_t` 越大越好。因为 :math:`R_i` 依赖于 :math:`S_i` 和 :math:`A_i`,
:math:`U_t` 依赖于 :math:`R_t, R_{t+1}, \dots`\,因此 :math:`U_t` 依赖于 :math:`S_t, A_t, S_{t+1}, A_{t+1}, \dots`\。
更多细节参考 `【金山文档】 深度强化学习, 王树森 <https://kdocs.cn/l/cld4jk5tHgp8>`_