1. 简介

工夫差分法次要基于工夫序列的差分数据进行学习,其分为固定策略和非固定策略两种。固定策略工夫差分法以Sarsa算法为代表;非固定策略以Q-Learning算法为代表。

  1. Sarsa算法

Sarsa(state-action-reward-state-action)算法的目标是预计动作值函数q(s,a),即预计在策略下对任意状态s上所有可能执行动作a的动作值函数q(s,a)。其动作值函数表达式函数为:

image.png

式子中的=rt+1+q(st+1,at+1)——工夫差分指标(Target);

-q(st,at)——工夫差分误差(Error)。

式子中的动作值函数的每一次更新都须要用到5个变量:以后状态s、以后动作a、环境反馈处分r、下一时间步状态s’和下一时间步动作a’。这5个变量组合成(s,a,r,s’,a’),便是工夫差分管制Sarsa算法的由来。其具体算法流程如下:

输出:随机状态s

输入:动作值函数q(s,a)

(1) 初始化:

(2)对于任意状态s,设置q(s,a)为任意值

(3)反复教训轨迹:

(4) 初始化状态s

(5) 依据动作值q,在状态s下执行动作a

(6) 反复教训轨迹中工夫步t:

(7) 依据动作值q,在状态s下执行动作a

(8) 更新动作值函数:q(s,a)←q(s,a)+[r+q(s’,a’)-q(s,a)]

(9) 记录新的状态和动作,s←s’,a←a’

(10) 直至终止状态s

(11)输入动作值函数q(s,a)

image.png

Sarsa算法首先随机初始化动作值函数q,随后迭代式地进行教训轨迹的采样。在采集某一条教训轨迹时,智能体首先依据贪心策略(Greedy Policy),在状态s下抉择并执行动作a;接下来在环境中进行学习,并更新动作值函数q(s,a),直至算法完结。

  1. Q-Learning算法

Q-Learning算法在动作值函数q(s,a)更新中,采纳的是不同于抉择动作时所遵循的策略。该算法动作值函数q(s,a)的更新如下:

image.png

与Sarsa算法相比拟,区别在于Q-Learning算法更新Q值时,工夫差分指标应用动作值函数最大值maxq(st+1,at),与以后抉择动作所应用的策略无关,因而动作值Q往往是最优的。

其算法流程如下所示。与Sarsa相似,区别在进入反复教训轨迹的循环后,Q-Learning算法在初始化状态s后,间接进入该教训轨迹的迭代中,并依据贪心策略在状态s’下抉择动作a’。

输出:随机状态s

输入:动作值函数q(s,a)

(1)初始化:

(2)对于任意状态s,设置q(s,a)为任意值

(3)反复教训轨迹:

(4) 初始化状态s

(5) 反复教训轨迹中工夫步t:

(6) 依据动作值q,在状态s下执行动作a

(7) 执行动作a,取得处分和下一时间步的状态s’

(8) 更新动作值函数:q(s,a)←q(s,a)+a[r+maxq(s’,a)-q(s,a)]

(9) 记录新的状态,s←s’

(10) 直至终止工夫步Ts

(11)输入动作值函数q(s,a)

image.png

  1. 总结

工夫差分法与蒙特卡罗法相似,基于采样数据预计以后价值函数。不同的是工夫差分法采纳动静规划法中的晋升算法(Boosting)计算以后价值函数,而蒙特卡罗是在每次采样完结之后能力计算以后的价值函数。

image.png

从算法来看,这就是他们两最大的不同之处了。因为Sarsa是说到做到型,所以也能够称之为on-policy,在线学习,能够学着本人在做的事件。而Q- learning是说到但并不一定做到,所以它也叫作Off-policy,离线学习。而因为有了maxQ,Q-learning也是一个特地怯懦的算法。为什么说他怯懦呢,因为Q-learning永远都会抉择最近的一条通往指标的路线,不论这条路会有多危险。而Sarsa则是相当激进,他会抉择躲避非凡状况,达到目标是主要的,首先要保障安全性,这就是应用Sarsa办法的不同之处。