diff --git a/docs/chapter1/chapter1.md b/docs/chapter1/chapter1.md index d6c27c8..c9bbddb 100644 --- a/docs/chapter1/chapter1.md +++ b/docs/chapter1/chapter1.md @@ -4,10 +4,7 @@ ![](img/1.1.png) -* **强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。** - -* 示意图由两部分组成:agent 和 environment。 -* 在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个动作(action),一个决策。然后这个决策会放到环境之中去,环境会根据 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent 的目的就是为了尽可能多地从环境中获取奖励。 +**强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。** 示意图由两部分组成:agent 和 environment。在强化学习过程中,agent 跟 environment 一直在交互。Agent 在环境里面获取到状态,agent 会利用这个状态输出一个动作(action),一个决策。然后这个决策会放到环境之中去,环境会根据 agent 采取的决策,输出下一个状态以及当前的这个决策得到的奖励。Agent 的目的就是为了尽可能多地从环境中获取奖励。 ![](img/1.2.png) @@ -24,7 +21,7 @@ ![](img/1.3.png) -在强化学习里面,这两点其实都不满足。举一个 Atari Breakout 游戏的例子,这是一个打砖块的游戏,控制木板,然后把这个球反弹到上面来消除这些砖块。 +在强化学习里面,这两点其实都不满足。举一个 Atari Breakout 游戏的例子,这是一个打砖块的游戏,控制木板左右移动把球反弹到上面来消除砖块。 * 在游戏过程中,大家可以发现这个 agent 得到的观测不是个独立同分布的分布,上一帧下一帧其实有非常强的连续性。这就是说,得到的数据是相关的时间序列数据,不满足独立同分布。 * 另外一点,在玩游戏的过程中,你并没有立刻获得反馈,没有告诉你哪个动作是正确动作。比如你现在把这个木板往右移,那么只会使得这个球往上或者往左上去一点,你并不会得到立刻的反馈。所以强化学习这么困难的原因是没有得到很好的反馈,然后你依然希望 agent 在这个环境里面学习。 @@ -196,11 +193,11 @@ POMDP 可以用一个 7 元组描述:$(S,A,T,R,\Omega,O,\gamma)$,其中 $S$ 对于一个强化学习 agent,它可能有一个或多个如下的组成成分: -* 首先 agent 有一个 `策略函数(policy function)`,agent 会用这个函数来选取下一步的动作。 +* `策略函数(policy function)`,agent 会用这个函数来选取下一步的动作。 -* 然后它也可能生成一个`价值函数(value function)`。我们用价值函数来对当前状态进行估价,它就是说你进入现在这个状态,可以对你后面的收益带来多大的影响。当这个价值函数大的时候,说明你进入这个状态越有利。 +* `价值函数(value function)`,我们用价值函数来对当前状态进行估价,它就是说你进入现在这个状态,可以对你后面的收益带来多大的影响。当这个价值函数大的时候,说明你进入这个状态越有利。 -* 另外一个组成成分是`模型(model)`。模型表示了 agent 对这个环境的状态进行了理解,它决定了这个世界是如何进行的。 +* `模型(model)`,模型表示了 agent 对这个环境的状态进行了理解,它决定了这个世界是如何进行的。 ### Policy @@ -237,12 +234,19 @@ $$ 所以你未来可以获得多少的奖励,它的这个期望取决于你当前的状态和当前的行为。这个 Q 函数是强化学习算法里面要学习的一个函数。因为当我们得到这个 Q 函数后,进入某一种状态,它最优的行为就可以通过这个 Q 函数来得到。 ### Model -![](img/1.28.png) 第三个组成部分是模型,**模型决定了下一个状态会是什么样的,就是说下一步的状态取决于你当前的状态以及你当前采取的行为。**它由两个部分组成, -* 概率:这个转移状态之间是怎么转移的。 +* 概率:这个转移状态之间是怎么转移的,如下式所示: + +$$ +\mathcal{P}_{s s^{\prime}}^{a}=\mathbb{P}\left[S_{t+1}=s^{\prime} \mid S_{t}=s, A_{t}=a\right] +$$ + +* 奖励函数:当你在当前状态采取了某一个行为,可以得到多大的奖励,如下式所示: +$$ +\mathcal{R}_{s}^{a}=\mathbb{E}\left[R_{t+1} \mid S_{t}=s, A_{t}=a\right] +$$ -* 奖励函数:当你在当前状态采取了某一个行为,可以得到多大的奖励。 ![](img/1.29.png) @@ -252,9 +256,9 @@ $$ 我们来看一个走迷宫的例子。 -* 这个例子要求 agent 从 start 开始,然后到达 goal 的位置。 -* 这里设定的奖励是每走一步,你就会得到一个负的奖励。 -* 这里可以采取的动作是往上下左右走。 +* 要求 agent 从 start 开始,然后到达 goal 的位置。 +* 每走一步,你就会得到一个负的奖励。 +* 可以采取的动作是往上下左右走。 * 当前状态用现在 agent 所在的位置来描述。 ![](img/1.31.png) @@ -295,8 +299,8 @@ A: 对于一个状态转移概率已知的马尔可夫决策过程,我们可 **另外,我们是可以通过 agent 到底有没有学习这个环境模型来分类。** -* 第一种是 `model-based(有模型)` RL agent,它通过学习这个状态的转移来采取动作。 -* 另外一种是 ` model-free(免模型)` RL agent,它没有去直接估计这个状态的转移,也没有得到环境的具体转移变量。它通过学习价值函数和策略函数进行决策。Model-free 的模型里面没有一个环境转移的模型。 +* `model-based(有模型)` RL agent,它通过学习这个状态的转移来采取动作。 +* ` model-free(免模型)` RL agent,它没有去直接估计这个状态的转移,也没有得到环境的具体转移变量。它通过学习价值函数和策略函数进行决策。Model-free 的模型里面没有一个环境转移的模型。 我们可以用马尔可夫决策过程来定义强化学习任务,并表示为四元组 $$,即状态集合、动作集合、状态转移函数和奖励函数。如果这四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则机器可以对真实环境进行建模,构建一个虚拟世界来模拟真实环境的状态和交互反应。 @@ -450,8 +454,8 @@ for step in range(100): ![](img/1.46.png) 在 OpenAI Gym 里面有很经典的控制类游戏。 -* 比如说 Acrobot,就是把这个两节铁杖,然后甩了立起来。 -* CartPole 是通过控制一个平板,让这个木棍立起来。 +* 比如说 Acrobot 就是把两节铁杖甩了立起来。 +* CartPole 是通过控制一个平板,让木棍立起来。 * MountainCar 是通过前后移动这个车,让它到达这个旗子的位置。 大家可以点[这个链接](https://gym.openai.com/envs/#classic_control)看一看这些环境。在刚开始测试强化学习的时候,可以选择这些简单环境,因为这些环境可以在一两分钟之内见到一个效果。 diff --git a/docs/chapter1/img/1.1.png b/docs/chapter1/img/1.1.png index 5b62908..9b23653 100644 Binary files a/docs/chapter1/img/1.1.png and b/docs/chapter1/img/1.1.png differ diff --git a/docs/chapter1/img/1.3.png b/docs/chapter1/img/1.3.png index ebf8841..e737bc6 100644 Binary files a/docs/chapter1/img/1.3.png and b/docs/chapter1/img/1.3.png differ diff --git a/docs/chapter1/img/1.36.png b/docs/chapter1/img/1.36.png index 0dd57c7..321b4db 100644 Binary files a/docs/chapter1/img/1.36.png and b/docs/chapter1/img/1.36.png differ diff --git a/docs/chapter1/img/1.46.png b/docs/chapter1/img/1.46.png index 0eeda98..0923f6c 100644 Binary files a/docs/chapter1/img/1.46.png and b/docs/chapter1/img/1.46.png differ diff --git a/docs/chapter1/img/1.47.png b/docs/chapter1/img/1.47.png index ee03264..a0bcbce 100644 Binary files a/docs/chapter1/img/1.47.png and b/docs/chapter1/img/1.47.png differ diff --git a/docs/chapter1/img/1.9.png b/docs/chapter1/img/1.9.png index 58480c5..3892956 100644 Binary files a/docs/chapter1/img/1.9.png and b/docs/chapter1/img/1.9.png differ diff --git a/docs/chapter1/img/learning.png b/docs/chapter1/img/learning.png index ca0630a..ae4fc01 100644 Binary files a/docs/chapter1/img/learning.png and b/docs/chapter1/img/learning.png differ diff --git a/docs/chapter1/img/planning.png b/docs/chapter1/img/planning.png index 6a80959..7192883 100644 Binary files a/docs/chapter1/img/planning.png and b/docs/chapter1/img/planning.png differ