【2016NIPS】
任务:层次强化学习
本文提出了层次强化学习,顶层使用价值函数让策略模型学习到内在目标,底层则决定具体的动作,从而来满足顶层提出的给定目标
内在目标可以提供更多的探索,从而缓解稀疏反馈的问题,目标定义在entity和相互之间关系的空间中,可以限制探索空间,提高学习效率
模型
整体结构

由两阶段的层次化结构组成
顶层meta-controller输入为状态
s
t
s_t
st,输出为目标
g
t
g_t
gt
下层controller的输入为
g
t
g_t
gt和
s
t
s_t
st,输出为动作
a
t
a_t
at
下个时间步
g
t
g_t
gt不变,直到controller控制下的agent达到该
g
t
g_t
gt,或者游戏结束,则再通过meta-controller获取下一个目标
激励
controller通过内在激励作为目标函数:

用于评估目标
g
t
g_t
gt是否达成
meta-controller通过外在激励作为目标函数:

即从外部环境获得的激励
算法

模型训练时controller和meta-controller均使用DQN算法
controller:

其中
g
g
g为状态
s
s
s时meta-controller输出的目标,
π
a
g
π_{ag}
πag 为动作策略
meta-controller:

对比Q1和Q2,meta-controller的Q2中把controller在完成目标
g
g
g时所使用的N步中获得的外在环境激励
f
t
f_t
ft作为一个整体,作为一个大时间步
即Q2产生的转移(
s
t
s_t
st,
g
t
g_t
gt,
f
t
f_t
ft,
s
t
+
N
s_{t+N}
st+N)比Q1产生的转移(
s
t
s_t
st,
a
t
a_t
at,
g
t
g_t
gt,
r
t
r_t
rt,
s
t
+
1
s_{t+1}
st+1)时间尺度上慢
整体算法如下:

实验
离散随机决策过程
游戏设置:

戏每次从
s
2
s_2
s2开始,可以选择往左或往右,往左必定成功,但是往右只有50%的成功率,否则会往左
游戏终点为
s
1
s_1
s1,如果先到
s
6
s_6
s6再到
s
1
s_1
s1,则激励为1,否则为0.01
将所有的状态作为目标

将本文方法与baseline(Q-learning)进行对比,可以看到Q-learning方法仅能学习到直接到达
s
1
s_1
s1获得0.01的激励,但是层次化方法可以学习到先到
s
6
s_6
s6再到
s
1
s_1
s1
Atari(Montezuma’s Revenge)
游戏设置:

人物(红色)捡到钥匙可以获得100奖励,然后可以用钥匙打开左上角或右上角的门,再获得300奖励,但是捡到钥匙前需要先完成下梯子,再上梯子等一系列复杂动作
内部critic定义为三元组<entity_1, relation, entity2>,在本游戏中,entity_1一直为人物,entity_2可以是其他任意物体,relation可以定义为“到达”
meta-controller的输入为连续的4帧游戏画面(84*84),同时使用物体检测器来获得图像中的物体,输出其中的一个物体作为目标
controller的输入为连续的4帧游戏画面,再加上meta-controller输出目标物体的mask,输出下一步采取的动作
两者网络结构基本为4层卷积结构
训练时采用两阶段的训练方法,第一阶段meta-controller随机输出,而先训练controller,等到controller学会根据目标完成子任务后,两者再一起训练

训练过程中的游戏激励,可以看到DQN网络基本无法获得激励,但是通过层次化方法进行子任务分解后,可以得到不错的结果

训练过程中将钥匙作为目标的完成成功率

训练前期各个物体作为目标的概率几乎一样,但是训练后期发现将钥匙作为目标的概率明显变大

2447

被折叠的 条评论
为什么被折叠?



