Chapter 6. Temporal-Difference Learning


时序差分算法(TD)是强化学习中的核心和新颖的算法。
TD特点:
(1).无需完整的环境模型;
(2).bootstrap(判断一个状态的值要依赖其它状态的估计值)。
是 DP 和 MC 的结合。


policy evaluation: prediction problem.
control problem: find an optimal policy.


6.1 TD Prediction

问题描述
解释何为TD,TD 与 MC 以及 DP 的区别 。

1.TD 与 MC 的比较
相同之处:
TD 和 MC 都用经验来解决预测问题。也就是说估计 V ( s t ) V(s_t) V(st) s t s_t st(非终止态) 值的时候,都会用其之后遍历过的状态来估计 s t s_t st的值。
都是 sample-backups。

不同之处:
(1)更新时刻(target):
MC:等到一个 episode 的终止状态时,将返回的累加奖励用于更新。
公式上的体现如下:
constant - α \alpha α MC: $ V(s_t) \leftarrow V(s_t) + \alpha[R_t - V(s_t) ]$
MC 只有当 R t R_t Rt知道了之后才对上述式子更新,也就是等到 episode 的终止状态的时候。


TD:不用等到一个 episode 的终止,下一个时刻( t + 1 t+1 t+1)就可以更新。
公式上的体现如下:
TD(0): V ( s t ) ← V ( s t ) + α [ r t + 1 + V ( s t + 1 ) − V ( s t ) ] V(s_t) \leftarrow V(s_t) + \alpha[r_{t+1} + V(s_{t+1}) - V(s_t)] V(st)V(st)+α[rt+1+V(st+1)V(st)]

TD 更新项为 r t + 1 + V ( s t + 1 ) r_{t+1} + V(s_{t+1}) rt+1+V(st+1),要用到下一个时刻的瞬时奖励和下一个时刻所处状态的估计值,所以下一个时刻就可以更新,而且从中可以看出 TD 是 bootstrap 的。

V π ( s ) = E π { R t ∣ s t = s } ( 6.1.1 ) = E π { ∑ k = 0 ∞ γ k r t + k + 1 ∣ s t = s } = E π { r t + 1 + γ ∑ k = 0 ∞ γ k r t + k + 2 ∣ s t = s } = E π { r t + 1 + γ V π ( s t + 1 ) ∣ s t = s } ( 6.1.2 ) \begin{aligned} V^\pi(s) &= E_\pi\{R_t | s_t=s\} \qquad(6.1.1)\\ &= E_\pi\{\sum_{k=0}^\infty \gamma^k r_{t+k+1} | s_t = s\} \\ &= E_\pi\{r_{t+1} + \gamma\sum_{k=0}^\infty \gamma^k r_{t+k+2} | s_t=s\} \\ &= E_\pi\{ r_{t+1} + \gamma V^\pi(s_{t+1}) | s_t =s\} \qquad(6.1.2) \end{aligned} Vπ(s)=Eπ{Rtst=s}(6.1.1)=Eπ{k=0γkrt+k+1st=s}=Eπ{rt+1+γk=0γkrt+k+2st=s}=Eπ{rt+1+γVπ(st+1)st=s}(6.1.2)

上述中 MC 的目标是(6.1.1),而 TD 的目标是 (6.1.2)。

Tabular TD(0) for estimating
Tabular TD(0) for estimating V π V^\pi Vπ

The backup diagram for TD(0)
The backup diagram for TD(0)


例子(Driving Home example)解释:
Changes recommended by Monte Carlo methods in the driving home example
Changes recommended by Monte Carlo methods in the driving home example

Changes recommended by TD methods in the driving home exampleChanges recommended by TD methods in the driving home example


2.TD 与 DP的比较
不同之处:
DP:
full-backup,基于完整的所有后续节点。
TD:
sample-backup,只基于下一个采样的后续节点。


**3.TD 是 DP 和 MC 的结合** MC的目标是估计值是因为真实的状态期望值是不知道的,我们用采样的数据来代替真实的状态期望值。 DP 的目标是估计值是因为下一个状态的 state-value function是不知道的,我们采用当前对其的估计值来代替真实的期望值。 TD则是 采用采样的期望值估计和 利用当前的估计值来预测。 it samples the expected value and it uses the current estimate $V_t$ instead of the true $V^\pi$.

6.2 Advantages of TD Prediction Methods

问题描述
TD算法的优点。


TD 优于 DP 之处在于不须对模型有完整的掌握,即 P s s ′ a P_{ss'}^a Pssa R s s ′ a R_{ss'}^a Rssa的分布不必事先完全知道。
TD 优于 MC 之处在于递增更新。

TD 与 MC 都收敛,那么谁的收敛速度更快呢?或者说谁学习得更快?
目前,数学上无证明。实际应用中,TD 比 constant- α \alpha α MC 收敛快。


6.3 Optimality of TD(0)

问题描述
TD(0)算法的优点。

当采样数据少的时候,使用TD(0)算法,我们可以利用其特性反复使用可用的数据进行迭代训练。
batch updating:
updates are made only after processing each complete batch of training data.

6.3-143

batch MC: 计算的是最小化均方差
batch TD: 计算的是最大化似然估计。

TD 比 MC 快的原因在于 TD 计算的是真的确定性等价预测。
compute the true certainty-equivalence estimate.


6.4 TD Control

问题描述
如何利用TD思想来找寻最优策略? 主要介绍 on-policy 和 off-policy 下的两种典型算法,分别为Sarsa 算法和 Q-learning 算法。


我们考虑控制决策问题时,采用的基本思想仍是GPI。

1.Sarsa:On-Policy TD Control
学习的是 action-value function 而不是 state-value function。
sarsa

我们考虑的是从 state-action pair 到 state-action pair 的转移,然后从中学习 state-value pairs的值。

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha[r_{t+1} + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+1+γQ(st+1,at+1)Q(st,at)]
s t + 1 s_{t+1} st+1是终止状态时,规定 Q ( s t + 1 , a t + 1 ) Q_(s_{t+1},a_{t+1}) Q(st+1,at+1) = 0。
我们从五元组中就可以得到从某个状态到下一个状态的转移的信息。这也是Sarsa算法名称的由来。
sarsa: on-policy
Sarsa:An on-policy TD control algorithm.


2.Q-learning:Off-Policy TD Control
Q-learning(Watkin, 1989).
这一节讲述one-step Q-learning.

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + γ max ⁡ a Q ( s t + 1 , a ) − Q ( s t , a t ) ] Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha[r_{t+1} + \gamma \max\limits_a Q(s_{t+1},a) -Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+1+γamaxQ(st+1,a)Q(st,at)]

Q-learning
Q-learning:An off-policy TD control algorithm.

backup for Q-learning
The backup diagram for Q-learning


6.5 Actor-Critic Methods

问题描述
actor-critic method 的基本思想。

actor-critic method是 Policy Gradient(actor) 和 Function Approximation(critic) 的结合。
actor:the policy structure select actions.
基于概率选行为。
critic:the estimated value function critizes the actions.
基于 actor 的行为评判行为的得分。

actor 会根据 critic 的评分修改概率选行为的概率。

actor-critic

actor-critic 优点在于可以进行单步更新,但是缺点是critic 难以收敛。之后的 DDPG(Deep Deterministic Policy Gradient) 对其进行了改进。

所用到的公式:
TD error:
δ t = r t + 1 + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_{t+1} + \gamma V(s_{t+1}) - V(s_t) δt=rt+1+γV(st+1)V(st)
Gibbs softmax method:
π t ( s , a ) = P r { a t = a ∣ s t = s } = e p ( s , a ) ∑ b e p ( s , a ) \pi_t(s,a) = Pr\{a_t=a| s_t=s\} = \frac{e^{p(s,a)}}{\sum_b e^{p(s,a)}} πt(s,a)=Pr{at=ast=s}=bep(s,a)ep(s,a)
p ( s , a ) p(s,a) p(s,a):actor 处于状态 S S S, 选择动作 a a a的概率。
其更新方式:
(1). p ( s t , a t ) ← p ( s t , a t ) + β δ t p(s_t,a_t) \leftarrow p(s_t,a_t) + \beta\delta_t p(st,at)p(st,at)+βδt
(2). p ( s t , a t ) ← p ( s t , a t ) + β δ t ( 1 − π t ( s t , a t ) ) p(s_t,a_t) \leftarrow p(s_t,a_t) + \beta\delta_t(1-\pi_t(s_t,a_t)) p(st,at)p(st,at)+βδt(1πt(st,at))


6.6 R-Learning, Games, Afterstates, and Other Speical Cases

问题描述
对于不带折扣的连续任务,我们可以采用 R-Learning 算法。
Games, Afterstates

R-learning
R-learning:An off-policy TD control algorithm for undiscounted, continuing tasks.

ρ π = lim ⁡ n → ∞ 1 n ∑ t = 1 n E π { r t } \rho^\pi = \lim\limits_{n\rightarrow\infty} \frac{1}{n} \sum\limits_{t=1}^n E_\pi\{ r_t\} ρπ=nlimn1t=1nEπ{rt}


6.9 Summary

TD思想的含义。
TD思想与DP、MC的比较。
TD思想的实现方式。(主要是Sarsa 和 Q-learning。 还有actor-critic method 和 R-learning)



第一版第六章:Richard S. Sutton and Andrew G. Barto.《An Introduction to Reinforcement Learning》
现已有第二版

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值