Skip to content

Commit 6aba85c

Browse files
author
cer
committed
update
1 parent fbaca67 commit 6aba85c

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

learning_route.ipynb

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"source": [
77
"# 强化学习入门指南\n",
88
"\n",
9+
"本文旨在使用通俗的语言,大致介绍强化学习的脉络结构。\n",
10+
"\n",
911
"## 宏观来看\n",
1012
"\n",
1113
"宏观地来看,我们学习强化学习需要:\n",
@@ -18,35 +20,44 @@
1820
"\n",
1921
"## 具体一些\n",
2022
"\n",
23+
"### 使用机器人炒股票这个例子\n",
24+
"想象我们使用强化学习的技术,构建了一个可以为我们自动炒股票的机器人。这个机器人可以观察股票市场,并对某些股票在某个时间节点的买卖做出建议。那么对这个问题建模需要什么呢?后面我会以这个例子来生动地介绍后面的概念。\n",
25+
"\n",
2126
"### 理解强化学习的几大要素\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",
2336
"\n",
2437
"### 理解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",
2639
"- `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",
2740
"- `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",
2841
"- 二者本质上都是递推公式,其中蕴含的**“backup”**思路,也就是从后一个状态的价值,逆推回前一个状态的价值。\n",
42+
"- Bellman Equation表达的是某个状态的价值和其后继状态的价值之间的关系。\n",
2943
"\n",
3044
"### 3.有了MDP的概念,接下来考虑如何解决MDP的问题。\n",
3145
"解决MDP的问题的三种基本方法:\n",
3246
"- **动态规划(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",
3555
"\n",
3656
"三种基本方法之间又可以相互结合:\n",
3757
"- 蒙特卡洛+差分学习,使用多步bootstrap。\n",
3858
"- 差分学习+模型学习。\n",
3959
"\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",
5061
"\n",
5162
"### 5.近似函数:\n",
5263
"- 近似价值函数:目标$J(w) = E_{\\pi}[(v_{\\pi}(S)-\\hat v(S,w))^2]$,使近似的价值函数接近实际的价值函数。\n",

reinforcement_learning.ipynb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@
182182
"这样收益可以统一使用下面的Expected Discounted Return表示。\n",
183183
"\n",
184184
"### Expected Discounted Return\n",
185-
"- $G_t = R_{t+1} + \\gamma R_{t+2} + ... = \\sum_{k=0}^{\\infty} \\gamma ^k R_{t+k+1}$\n",
185+
"- 回报:$G_t = R_{t+1} + \\gamma R_{t+2} + ... = \\sum_{k=0}^{\\infty} \\gamma ^k R_{t+k+1}$\n",
186186
"- $\\gamma$是参数,且$0\\leq \\gamma \\leq 1$,被称为**discount rate**。\n",
187187
"- 含义:一个奖励,如果是在k个时间节点以后收到,那么对于当前来说,它的价值是即时奖励的$\\gamma^{k-1}$倍。\n",
188188
"- 从$G_t$的定义,很容易获得递推式:$G_t = R_{t+1} + \\gamma G_{t+1}$\n",
@@ -494,21 +494,21 @@
494494
"metadata": {
495495
"anaconda-cloud": {},
496496
"kernelspec": {
497-
"display_name": "Python 3",
497+
"display_name": "Python 2",
498498
"language": "python",
499-
"name": "python3"
499+
"name": "python2"
500500
},
501501
"language_info": {
502502
"codemirror_mode": {
503503
"name": "ipython",
504-
"version": 3
504+
"version": 2
505505
},
506506
"file_extension": ".py",
507507
"mimetype": "text/x-python",
508508
"name": "python",
509509
"nbconvert_exporter": "python",
510-
"pygments_lexer": "ipython3",
511-
"version": "3.6.4"
510+
"pygments_lexer": "ipython2",
511+
"version": "2.7.14"
512512
}
513513
},
514514
"nbformat": 4,

0 commit comments

Comments
 (0)