ICLR 2024 Poster
paper
人类模仿学习过程是一个渐进的过程,不可能说当下的基础技能没学扎实,就模仿未来的目标。本篇文章便从这一个基本思想出发,通过自适应调整强化学习中折扣因子实现这一目标。实验环境设置在pixel-based observation-only 的演示下的模仿学习。
method
较小的折扣因子会让智能体注重当下但是却会表现得“短视”,因此需要随着训练的进行不断增加。算法通过一个过程识别器 Φ \Phi Φ输出一个0-T的整数k查询进度,以及一个单调递增函数 f γ ( k ) f_\gamma(k) fγ(k)更新 γ \gamma γ用于RL。
Φ
\Phi
Φ采用计算状态序列的最长单调递增子序列(LIS)。每当接收到最近收集的轨迹时,它就会考虑代理和演示轨迹的前 k + 1 步。如果代理与某些已演示轨迹之间的进度一致性与两个已演示专家轨迹之间的进度一致性相当,那就认为代理当前的策略可以在前 k 步中遵循演示。具体来说,如果下面的不等式成立,就将 k 增加1:
得到k后便是调整
γ
\gamma
γ :
f
γ
(
k
)
=
α
1
/
k
f_\gamma(k) = \alpha^{1/k}
fγ(k)=α1/k,其中
α
\alpha
α为一个取值0.2的超参数。
算法整体流程如下:
其中
{
r
t
}
t
=
1
T
−
1
=
f
r
(
τ
,
D
e
)
\{r_t\}_{t=1}^{T-1} = f_r(\tau, D^e)
{rt}t=1T−1=fr(τ,De)为利用在线真实轨迹与专家轨迹设置奖励设定标准,文章采用Ooptimal transport方法, cost fuction采用轨迹间余弦相似度
def cosine_distance(x, y):
C = torch.mm(x, y.T)
x_norm = torch.norm(x, p=2, dim=1)
y_norm = torch.norm(y, p=2, dim=1)
x_n = x_norm.unsqueeze(1)
y_n = y_norm.unsqueeze(1)
norms = torch.mm(x_n, y_n.T)
C = (1 - C / norms)
return C
def optimal_transport_plan(X,
Y,
cost_matrix,
method='sinkhorn_gpu',
niter=500,
epsilon=0.01):
X_pot = np.ones(X.shape[0]) * (1 / X.shape[0])
Y_pot = np.ones(Y.shape[0]) * (1 / Y.shape[0])
c_m = cost_matrix.data.detach().cpu().numpy()
transport_plan = ot.sinkhorn(X_pot, Y_pot, c_m, epsilon, numItermax=niter)
transport_plan = torch.from_numpy(transport_plan).to(X.device)
transport_plan.requires_grad = False
return transport_plan
结果
算法基于OT算法设置设置奖励,对比GAIFO基于分布匹配的奖励(对抗生成)在某些环境下各有优劣,但是OT结合自适应调整
γ
\gamma
γ, 实现SOTA的效果(额外的实验中,GAIFO+ADS表现同样有提升,证明ADS模块作用明显)
同时,OT+ADS对比fixed 折扣因子以及启发式设定
γ
\gamma
γ变化而言,都有较好的鲁棒性
文章还设定不同的奖励函数以及表征函数(encoder)对结果的影响,都能体现出ADS+OT性能显著