|
6 | 6 | "source": [
|
7 | 7 | "# 强化学习入门指南\n",
|
8 | 8 | "\n",
|
| 9 | + "本文旨在使用通俗的语言,大致介绍强化学习的脉络结构。\n", |
| 10 | + "\n", |
9 | 11 | "## 宏观来看\n",
|
10 | 12 | "\n",
|
11 | 13 | "宏观地来看,我们学习强化学习需要:\n",
|
|
18 | 20 | "\n",
|
19 | 21 | "## 具体一些\n",
|
20 | 22 | "\n",
|
| 23 | + "### 使用机器人炒股票这个例子\n", |
| 24 | + "想象我们使用强化学习的技术,构建了一个可以为我们自动炒股票的机器人。这个机器人可以观察股票市场,并对某些股票在某个时间节点的买卖做出建议。那么对这个问题建模需要什么呢?后面我会以这个例子来生动地介绍后面的概念。\n", |
| 25 | + "\n", |
21 | 26 | "### 理解强化学习的几大要素\n",
|
22 |
| - "`policy`,`reward function`,`value function`,`modle (of the environment)`,分清`Reward`,`value function`和`q function`的区别。\n", |
| 27 | + "`action`,`state`,`reward function`,`value function`,`policy`,`modle (of the environment)`,分清`Reward`,`value function`和`q function`的区别。\n", |
| 28 | + "\n", |
| 29 | + "在股票机器人的例子中,我们的目标是赚钱,因此:\n", |
| 30 | + "- 动作(action)是买还是卖,或者更具体的,买多少,卖多少。\n", |
| 31 | + "- 状态(state)是机器人对环境的观察,这就非常多样,比如说某支股票的涨跌现状、各种技术面的特征、基本面的特征等等。\n", |
| 32 | + "- 奖励(reward function)是机器人每做一次买卖决策之后,带来的实际收益;\n", |
| 33 | + "- 回报(return):一般用$G$表示,形式化定义:$G_t = R_{t+1} + \\gamma R_{t+2} + ... $,回报的定义很有趣,即某一系列决策后,长期的奖励累加,我们给后面的奖励一个折扣系数,即对未来可能赚的钱,我们的兴趣相对少一些;\n", |
| 34 | + "- 价值函数(value function)是我们对回报的期望,用来衡量处于某个状态有多好;\n", |
| 35 | + "- 环境模型(model)用来模拟环境的行为,给定一个状态和动作,模型可以预测下一个状态和奖励。也就是说,如果我们有一个环境模型,那么每次机器人做了一次交易之后,我们就可以预测出它的下一个状态是什么,收到的奖励有多少(这个观点在炒股票这个例子中听起来不太可行)。\n", |
23 | 36 | "\n",
|
24 | 37 | "### 理解MDP的概念\n",
|
25 |
| - "MDP是对环境的一种建模,能覆盖绝大多数的强化学习问题。满足马尔科夫性质的强化学习任务称为MDP。马尔科夫性质的核心思想是:当前state继承了所有的环境历史信息。\n", |
| 38 | + "MDP是对环境的一种建模,能覆盖绝大多数的强化学习问题。满足马尔科夫性质的强化学习任务称为MDP。马尔科夫性质的核心思想是:**当前state继承了所有的环境历史信息**。也就是说在每次决策的时候,我们只用考虑当前状态就可以了。一个机器人在MDP中的轨迹一般像这样:$S_0, A_0, R_1, S_1, A_1, R_2, S_2, A_2, R_3...$\n", |
26 | 39 | "- `Bellman Expectation Equation`:$v_{\\pi}(s) = \\sum_a\\pi(a|s)\\sum_{s',r}p(s',r|s,a)[r+\\gamma v_{\\pi}(s')]\\;\\;\\forall s \\in S$\n",
|
27 | 40 | "- `Bellman Optimality Equation`:$v_*(s)=\\underset{a\\in A(s)}{max}\\sum_{s',r}p(s',r|s,a)[r+\\gamma v_*(s')]$和$q_*(s,a)=\\sum_{s',r}p(s',r|s,a)[r+\\gamma \\underset{a'}{max}q_*(s', a')]$\n",
|
28 | 41 | "- 二者本质上都是递推公式,其中蕴含的**“backup”**思路,也就是从后一个状态的价值,逆推回前一个状态的价值。\n",
|
| 42 | + "- Bellman Equation表达的是某个状态的价值和其后继状态的价值之间的关系。\n", |
29 | 43 | "\n",
|
30 | 44 | "### 3.有了MDP的概念,接下来考虑如何解决MDP的问题。\n",
|
31 | 45 | "解决MDP的问题的三种基本方法:\n",
|
32 | 46 | "- **动态规划(Dynamic Programming)**:理论上完美,但需要很强的算力和准确的环境model。\n",
|
33 |
| - "- **蒙特卡洛(Monte Carlo Methods)**:不需要模型,可操作性强,但不太适合一步一步的增量计算。\n", |
34 |
| - "- **差分学习(Temporal-Difference Learning)**:不需要模型,也是增量式的,但分析起来很复杂。\n", |
| 47 | + "- **蒙特卡洛(Monte Carlo Methods)**:**不需要模型**,可操作性强,但不太适合一步一步的增量计算。\n", |
| 48 | + "- **差分学习(Temporal-Difference Learning)**:**不需要模型**,也是增量式的,但分析起来很复杂。\n", |
| 49 | + "\n", |
| 50 | + "继续使用机器人炒股票的例子去理解:\n", |
| 51 | + "- 1.动态规划必须保证有环境模型,也就是给定一个状态和动作,我们可以预测下一个状态和奖励;\n", |
| 52 | + "- 2.蒙特卡洛的方法好比,机器人参与了好几个系列的买卖决策操作,然后根据最后的收益,去更新之前的每个状态的价值和策略。\n", |
| 53 | + "- 3.差分学习的方法好比,机器人每一次买卖操作,都会有一个盈亏数据,根据这个数据直接取更新状态的价值和策略。\n", |
| 54 | + "- 从股票的角度看,直观上感觉差分学习的方法更适用。\n", |
35 | 55 | "\n",
|
36 | 56 | "三种基本方法之间又可以相互结合:\n",
|
37 | 57 | "- 蒙特卡洛+差分学习,使用多步bootstrap。\n",
|
38 | 58 | "- 差分学习+模型学习。\n",
|
39 | 59 | "\n",
|
40 |
| - "### 4.接下来考虑model free,即没有状态转移概率。\n", |
41 |
| - "- `planning`:\n", |
42 |
| - " - `MC(Monte-Carlo)`:每次生成一条完整的episode,然后,对某个状态$s$计算平均$G$作为对$v$的估计。$V(s)\\leftarrow average(Return(s))$\n", |
43 |
| - " - `TD(Temporal Difference)`:每做一次决定,都可以更新$v$:$V(S)\\leftarrow V(S)+\\alpha[R+\\gamma V(S')-V(S)]$\n", |
44 |
| - "- `controlling`:\n", |
45 |
| - " - `On-Policy Monte-Carlo Control`:`MC planning`+`greedy policy`\n", |
46 |
| - " - `On-Policy Sarsa Control`:`TD planning`+`greedy policy`,但是更新从$v$变成了$q$,因此叫`SARSA`:$Q(S,A)\\leftarrow Q(S,A)+\\alpha[R+\\gamma Q(S',A')-Q(S,A)]$\n", |
47 |
| - " - Off-Policy:在生成episode的时候,直接使用一种较优的policy去指导它,而不是最终的`target policy`,指导的policy称为`behavior policy`。\n", |
48 |
| - " - `Off-Policy Monte-Carlo Control`:相比`On-Policy Monte-Carlo Control`y加入重要性采样。\n", |
49 |
| - " - `Off-Policy Q-learning`:相比于`Sarsa`,$Q(S,A)\\leftarrow Q(S,A)+\\alpha[R+\\gamma Q(S',A')-Q(S, A)]$\n", |
| 60 | + "\n", |
50 | 61 | "\n",
|
51 | 62 | "### 5.近似函数:\n",
|
52 | 63 | "- 近似价值函数:目标$J(w) = E_{\\pi}[(v_{\\pi}(S)-\\hat v(S,w))^2]$,使近似的价值函数接近实际的价值函数。\n",
|
|
0 commit comments