Abstract
论文完整题目是《Using reward machines for high-level task specification and decomposition in reinforcement learning》,太长了写不下。这篇论文是在《Reward Machines for Cooperative Multi-Agent Reinforcement Learning》文章之前所写的,这篇论文先提出的RM,然后《Using reward machines for high-level task specification and decomposition in reinforcement learning》把他用在了multi-agent上。这两篇文章解决的是两个不同的任务,一篇是multi-task,一篇是multi-agent。
Abstract主要提了文章的主要工作和贡献。
1. 提出了一种有限状态机Reward Machine,Reward Machine支持reward function的结构,另外还可以分解。(原文是reward machine support the specification of reward function structure,他意思应该是reward machine和reward function结构相似,可以替代。)、
2. 提出了QRM算法,QRM算法可以近似分解reward machine并使用q-learning同时学习子部分的策略。
3. QRM算法还能保住收敛性。
4. 在连续的状态空间中,QRM结合神经网络比层次学习收敛更快。
第四点结合神经网络和QRM如果应用在处理multi-agent问题上不知道会有什么效果。
Introduction
在reinforcement learning中,人们是默认agent不了解环境模型,对于环境状态的转移概率,价值函数都是未知。所以agent要在这个环境上完成任务就需要和环境交互学习转移概率和价值函数。虽然隐藏转移概率是正常的,但是隐藏回报可能有些不太合理。 因为回报其实也是人给的,比如实现跳一跳游戏,成功跳到一个箱子上1分,否则0分,这就是一种reward machine,在学习跳一跳游戏之前我们会人为给定。
在以往的强化学习中,比如q-learning,都会把reward function当成一个黑盒子,执行Action后直接查询reward function得到。但是如果我们可以知道reward function的结构,就可以利用reward function来分解问题加快agent的学习。
本文工作和以往工作的不同:
以往的工作是用一些说明式的语言来描述reward machine,然后把reward machine的结构暴露给agent。而本文中的reward machine是可以是路对不同程度的行为奖励,在每一个状态转移后都会有奖励的返回。
事实上前面有有一篇18年哈佛大学的RL with LTL的文章,和这篇文章类似,哈佛大学的那篇文章也是用LTL来表达reward function,除了缺失转移状态之后的奖励之外,其他的差别不大,Logically-constrained reinforcement learning。看完这篇后再回来对比。
contribution:
- 提出reward machine。reward machine非常灵活,可以由不同方式组成。一个agent在现实世界中从一个状态到另一个状态,那么在reward machine中也会是从一个状态到另一个状态。每一次状态转移完成,reward machine都会输出相应的回报。(他这里的状态转移应该是指在RM里面的状态转移,而不是现实世界里面的状态转移,以往一个RM的状态他可能是由很多给现实世界的状态组成)
RM的优点在于,RM里面的每一个状态可以看成是任务的一个进步,任务就是由这些状态组成,我们可以使用这些信息来分解问题。而且RM很灵活,表达task可以有很多种方式,LTL或者其他逻辑也都可以。 - 提出QRM算法 ,算法能够利用RM的内部结构来分解任务,从而提高采样效率。QRM不会对optimal policy做剪枝操作,而是使用多个q-learning学习子任务的policy(这些子任务是由RM分解的)
Preliminary
首先提一下RL的setting,然后是Q-learning,DQN。
Reinforcement Learning
在RL问题中,agent对环境是一无所知的,如果agent想要了解环境就只能执行操作对环境做交互。而执行的动作也是由环境提供,所以环境可以由一个MDP所表示,Markov Decision Process。
M
=
<
S
,
A
,
r
,
p
,
γ
>
M = <S, A, r, p, γ>
M=<S,A,r,p,γ>。
S
S
S是有限状态的集合。
A
A
A是有限动作动作的集合。
r
r
r是奖励函数:
S
∗
A
∗
S
−
>
R
S * A * S -> R
S∗A∗S−>R。
p
p
p是概率转移矩阵,状态
s
t
s_t
st执行了动作
a
a
a之后转移到
s
t
+
1
s_{t+1}
st+1的概率。
γ
γ
γ是折扣值。
RL问题的目的是要求解最优的的策略
π
(
a
∣
s
)
π(a|s)
π(a∣s),在状态
s
s
s之下应该执行什么样的动作。policy-base的model是基于概率,而value-base的model是基于未来的折扣回报。Q-learning就是一种基于value-base的model。
Q-learning在每一次迭代都会观察状态S然后选取一个行为a,然后通过更新公式:
更新Q表。Q-learning很明显是一个off-policy的算法,他可以从任意的策略中生成的经验中学习。如果不限制 q ( s , a ) q(s,a) q(s,a)的访问次数,那么q-learning可以保证收敛到optimal policy。
DQN是DL和Q-learning的结合。原本的 q ( s , a ) q(s,a) q(s,a)是用一个表来表示,如果动作特别多,或者连续动作那么可能就难以处理,所以DQN使用 q θ ( s , a ) q_{\theta}(s, a) qθ(s,a),这是一个神经网络,带有 θ \theta θ参数的一个神经网络来求解。DQN有两个神经网络 θ , θ ′ \theta,\theta^{'} θ,θ′,第一个神经网络做预测使用,第二个神经网络作为target network,更新时在 m a x max max使用。在训练的时候第二个神经网络是固定的,第一个神经网络更新,当迭代到一定次数的时候将第一个神经网络的值赋值到第二个神经网络里面。
DQN也继承了Q-learning的off-policy特性,但是不保证能收敛到optimal policy。
Reward Machines for Task Specification
本节文章重点,Reward machine。
An RM takes abstracted descriptions of the environment as input, and outputs reward functions.
将环境的抽象描述作为输入,输出reward function的输出。
在不同的时间段会有不同的reward function,而这取决于RM中的状态转移。因此,我们可以把RM定义成一个和时间相关的任务。(这个
R
M
RM
RM有点像LTL)既然有了时间,那么他的状态转移都是和时间相关的,在不同时间内会有不同的reward function,这也依赖于在RM中的状态转移。
现在三个任务需要完成。
- Task1,需要到达c点拿coffee,然后把coffee送到o点
- Task2,需要按照顺序从ABCD巡逻
- Task3,在c点拿到coffee,在m点拿到mail然后送到o点,拿coffee和mail的顺序可以打乱。
这三个任务其实是有交叉的,比如task1和task3就有部分交叉,而然后task则是规定了要走的位置,这几个任务是互相影响的。
先定义命题符号
P
P
P,底层环境
S
S
S,和actions集合
A
A
A,
R
P
S
A
=
<
U
,
u
0
,
δ
u
,
δ
r
>
R_{PSA} = <U, u_0, \delta_u, \delta_r>
RPSA=<U,u0,δu,δr>,元组里面分别是reward machine状态集合,初始状态,状态转移函数,reward-transition function。每促发一次RM里的状态转移,就会调用一次reward-transition function获得reward。
这里的
P
P
P和在前一篇文章中的定义是一样的,就是环境的事件,events。
这些事件不能被理解成是agent执行了某个动作,只能是理解成是environment event,因为这些event不仅仅是影响一个task,是多个task都会被影响到。这和前面一篇文章multi-agent中也有类似。 在底层环境中每走一步,就会产生一个assignments
σ
t
\sigma_t
σt,如果在
P
P
P中的事件是发生了的,那么就赋值为1,否则为0。如何RM就会利用
δ
u
(
u
t
,
σ
t
)
=
u
t
+
1
\delta_u(u_t, \sigma_t) = u_{t+1}
δu(ut,σt)=ut+1,得到相应的reward:
δ
r
(
u
t
,
u
t
+
1
)
=
r
t
\delta_r(u_t,u_{t+1}) = r_t
δr(ut,ut+1)=rt
论文idea还是想使用reward machine来代替reward function,那么这样就需要labeling function在给定了environment state之后输出他的proposition symbol P P P。这里的labeling function和前面一篇multi-agent的一样,只不过表达方式不一样。都是把underlying environment和reward machine联系在一起的工具。
于是整合起来就有了一个新的定义:
按照reward machine的定义定义上面三个task:
Reward Machines for Task Decomposition
论文标题是task decomposition,不过这明显是multi-task来的,这个Task decomposition不是把一个任务分解成多给任务,而是把一个任务里面的策略分解成多个子策略学习。 不过同时学习策略这个是真的有。
QRM learns one subpolicy per state in the RM and uses off-policy learning to train each subpolicy in parallel.
QRM学习RM中每一个状态的子策略,用off-policy learning同时学习。
Q learning + RM = QRM。这一节主要就是提出QRM。
输入需要三个人工定义的集合,proposition symbol
P
P
P(环境事件),labeling function
L
L
L,折扣
γ
γ
γ,reward machine集合
Σ
=
[
.
.
.
<
U
i
,
u
0
i
,
δ
u
i
,
δ
r
i
.
.
.
>
]
\Sigma = [... <U^{i}, u_0^i, \delta^i_u,\delta^i_r ...>]
Σ=[...<Ui,u0i,δui,δri...>] 这些都需要人为定义。 至于任务分解,再RM中有多少个RM state就有多少个q表要学习,所有QRM是把一个task的整一个Q表拆成了多给Q表来学习,更加细化了。所以这三给任务加起来一共需要学习4 + 4 + 5 = 13个Q表。我还没看代码,我觉得可能每一个状态存的Q表可能是所有的
<
s
,
a
>
<s, a>
<s,a>,因为RM中的状态不代表位置信息,这些RM state代表是是任务的完成度,比如task1中
u
0
u_0
u0到
u
1
u_1
u1是任务的一个进步,任务又前进了一步。所有每一个reward machine 的state可能要存储所有的
<
s
,
a
>
<s,a>
<s,a>,这只是猜测,具体还得看代码。
line1是定义所有的输入,line2初始化所有的Q表,对当前任务来说是13个,如果用DQN那就13个神经网络了。
n
u
m
_
e
p
i
s
o
d
e
s
num\_episodes
num_episodes需要迭代多少个循环。算法是一个一个任务来的,一个循环多少次这个意思。line4选择一个任务,然后初始化。然后开始执行任务了。line10-11,选择一个动作,执行这个动作到达下一个状态
s
′
s'
s′,12-19行是更新算法的两行,这里的
q
j
o
q^o_j
qjo是取出所有任务所有的Q表,同时更新。也就是一个经验他不仅仅是会更新到其他任务的当前状态,他还会把其他RMstate的状态也一同更新了,用一个任务的经验学习了所有的Q表。 Reward Machines: Exploiting Reward Function Structure in Reinforcement Learning这篇文章总结了一下RM的算法,里面Page 10就提到:
QRM使用任意一个经验更新每一个Q表。
最重要的循环是第三个循环,QRM会用一个task的经验去更新其他task的Q表,也就是说,这些task会互相促进。比如在执行task1的时候环境是到达了 o o o点,这可能和task1没有什么关系,但是这个步骤可能是和task0和task2有关系,可以用来促进这两个任务的学习。
Convergence Guarantees and Scalability
QRM does not prune optimal policies when decomposing the task.
他这里的分解是指把原来学习整一个大的Q表的策略分解成了学习RM中状态的Q表,而这样做学习到的还是optimal policy。
实际上QRM无论是在执行哪一个任务,他的每一个任务的策略都是同时学习的,因为他执行一个action之后所有的Q表都会给更新一遍。
DQN
用神经网络替代Q表即可。
Experimental Evaluation
实验做了三,两个discrete domain,一个continue domain。
Baselines
Q-learning,分别使用Q-learning来学习每一个任务。
Hierarchical RL approach (HRL),这个方法基于一个选择框架学习策略,每一个选择option是一个元组
<
δ
0
,
π
0
,
τ
0
>
<\delta_0,π_0,τ_0>
<δ0,π0,τ0>,分别是起始状态,选择的策略,以及执行完之后的状态。我们定义每一个在proposition symbol里面的事件都有一个option,每一个策略
π
0
π_0
π0同时优化使其到达到
τ
0
τ_0
τ0中的任意一个状态。讲道理其实这个我也没看太懂,不过
H
R
L
HRL
HRL是不保证能够能够学习到global optimal policy。
HRL-RM,通过RM来修剪掉那些不会产生reward的选择。这个算法还是不能找到global optimal policy。
其他那两个算法我不太了解,Q-learning算法不好是显而易见的,这些task之间是有互相影响的,如果把这些task看成是一个个的agent,这些agent之间是有协作的,而q-learning他分开独立的学习,这样就没办法学习到任务之间的关系,或者说任务之间的协作了。
另外一个是连续空间的学习,也差不多,只不过变成了神经网络罢了。
Conclusion
这篇文章和之前的一篇multi-agent主要都是用分层强化学习来做对比,分层强化学 习其实就是把任务分成多个小目标去实现,其实和RM的想法类似,RM也是把任务分成多个状态来实现。分层强化学习的idea:构建一个两层框架,上级策略学习宏观策略,而下层策略只是做一个监督学习,学习上层所给出的目标。 但是分层强化学习的问题就在于,任务的分层是和reward function分开的,而实际上任务失败和成功是reward function说了算,所以这就导致了分层强化学习可能导致把optimal policy给减掉了。而RM没有这样的问题,任务RM的分层是和reward function联系在了一起,RM本身就是一个reward function。所以RM可以保证一个收敛。
任务分层的算法还有一种比较受欢迎的算法,可以将single-agent转化成multi-agent。他们的idea是训练不同的代理使用不同的reward function,然后让一个仲裁者结合代理对下一步行动的意见。这个算法不太了解,但是也是可以解决问题的。
这篇文章首先提出了reward Machine,并使用reward machine来描述RL任务中的reward function。传统的强化学习中reward function会被当成是一个黑盒子,执行一步操作后与环境交互后就得到reward,agent从reward function中基本得不到什么信息。而其实很多任务是没有必要把任务的结构隐藏起来的,可以把任务的结构告诉agent。而reward machine就是做这样一个事情,通过对任务分解成一个一个的状态,将任务的结构暴露给了agent。reward machine比reward function的信息更多。
1. 首先是多了时序信息,reward machine的分解相当于是分解成了多个状态,而这些状态需要通过一定的事件之后才能转移。
2. 还有任务的结构,这些状态其实就是任务的完成度。
3. 如果是multi-agent和multi-task的任务,他还包含了agent之间的协作信息和task之间的关系。
另外,reward machine的灵活性也强于reward function。如果一个reward function是马尔科夫性的,那么它就可以被表达成reward machine的一个状态。如果reward function是非马尔科夫性的,也就是说如果reward function的定义是 S ∗ ∗ A − > R S^* * A -> R S∗∗A−>R, S ∗ S* S∗是历史状态,只要这个历史状态是能够被环境事件P所表达的,那么他就可以表达成一个reward machine,否则就不行。比如计算多少个命题是真的,这种就没办法用事件event来表示了。reward machine能表达non-markovian的reward function意味着有可能相同的 ( s , a , s ′ ) (s,a,s') (s,a,s′)返回的reward不一定一样,因为他们的历史不一定一样,这样就更灵活了。而且reward machine其实是一个有限状态机,他可以用许多其他不同的逻辑语言来表达。
所以总的来说,reward machine有这么几个优点,灵活,信息更多,保证收敛到optimal policy。
作者做实验所对比的multi-task其实都是互相之间有促进的实验,比如coffee的实验,三个实验其实都是有相互促进的。但是如果在同一个场景里面执行三个毫不相干的任务可能就没有这么好的效果了。在算法的line12-line18行是Q-learning的学习,这里的关键是用一个task的经验去学习其他task的策略(Q表其实就是他们的策略),来达到互相促进的作用,所以如果task之间没有什么联系,那么这样学习可能适得其反。