本节对应2020版的Lecture20。(由于本人对IRL并不是很熟,内容目前全部基于Lecture中的内容,有错误的地方请指出。)
1. 为什么要引入Inverse Reinforcement Learning
前文的模仿学习方法是直接喂给算法人类给出的好的行为数据,智能体直接学习行为。但与人类通过模仿进行学习的过程其实是有区别的,人类在模仿过程中会更智能一个级别,比如学习“老师”为什么会做出该行为,可能会做出不一样的但结果相同的动作(我个人理解为举一反三的过程)。将该思路类比到智能体上,就是不让智能体直接学得动作,而是间接学得rewards从而学得行为。另外一个要引入IRL得原因在于有些任务如果用经典RL算法学习的话可能很难定义精准的Reward表达式,所以可以通过从demonstrations中推断的方式学得较为合理的Reward,再将该reward应用到经典强化学习算法框架中。
2. Inverse RL问题的定义
IRL问题与经典RL问题定义对比如下:(这里把reward function进行参数化)
上图右侧为IRL的较为正式的问题定义,这里的前提条件为给定智能体的状态和动作,有时状态转移函数已知。从expert数据中采样轨迹
τ
i
=
(
s
0
,
i
,
a
0
,
i
,
s
1
,
i
,
…
)
\tau_i=(\textbf s_{0,i},\textbf a_{0,i},\textbf s_{1,i},\dots)
τi=(s0,i,a0,i,s1,i,…),利用这些数据不断更新奖赏函数
r
ψ
r_{\psi}
rψ的参数,更新完参数之后可以利用前几篇中的RL方法学习梯度。
3. 经典方法
Lecture中第二部分介绍了两种较为经典的IRL算法,第一种是feature matching+maximum margin方法,第二种是maximum entropy IRL的方法。
3.1 Feature Matching IRL & Maximum Margin Planning
最经典的方法是feature matching的方法,该方法的思路是将reward function用线性函数表达:
r
ψ
(
s
,
a
)
=
∑
i
ψ
i
f
i
(
s
,
a
)
=
ψ
T
f
(
s
,
a
)
r_{\psi}(\textbf s, \textbf a)=\sum_{i}\psi_i f_i (\textbf s, \textbf a)=\psi^T \textbf f(\textbf s, \textbf a)
rψ(s,a)=i∑ψifi(s,a)=ψTf(s,a)
这里的
f
\textbf f
f是从专家数据中获取的features。在构建好参数化的奖赏函数
r
ψ
r_{\psi}
rψ的基础之上,假设存在一个在该奖赏函数下的一个最优策略,记为
π
r
ψ
\pi^{r_{\psi}}
πrψ,这时候的目标是选取一组参数
ψ
\psi
ψ使其尽可能满足条件:
E
π
r
ψ
[
f
(
s
,
a
)
]
=
E
π
∗
[
f
(
s
,
a
)
]
E_{\pi^{r_{\psi}}}[\textbf f(\textbf s,\textbf a)]=E_{\pi^{*}}[\textbf f(\textbf s,\textbf a)]
Eπrψ[f(s,a)]=Eπ∗[f(s,a)]。这里的
π
∗
\pi^*
π∗指的是从专家数据中获得的近似的最优策略。 以上为feature matching IRL的目标。
有了上述目标,通过什么方法能使上述等式条件满足呢?feature matching中用了个类似SVM中的trick,即最大化Margin,如下:
上述目标经过一些变形可以得到:
ψ
T
E
π
r
ψ
[
f
(
s
,
a
)
]
=
E
π
r
ψ
[
ψ
T
f
(
s
,
a
)
]
=
E
π
r
ψ
[
r
(
s
,
a
)
]
\psi^TE_{\pi^{r_{\psi}}}[\textbf f(\textbf s,\textbf a)]=E_{\pi^{r_{\psi}}}[\psi^T\textbf f(\textbf s,\textbf a)]=E_{\pi^{r_{\psi}}}[r(\textbf s, \textbf a)]
ψTEπrψ[f(s,a)]=Eπrψ[ψTf(s,a)]=Eπrψ[r(s,a)],因此这里的max margin的本质目的就是
E
π
r
ψ
[
r
ψ
(
s
,
a
)
]
≈
E
π
∗
[
r
∗
(
s
,
a
)
]
E_{\pi^{r_{\psi}}}[r_{\psi}(\textbf s,\textbf a)]\approx E_{\pi^{*}}[r_*(\textbf s,\textbf a)]
Eπrψ[rψ(s,a)]≈Eπ∗[r∗(s,a)]
但是上述问题存在几个问题:由于是最大化margin,因此过程中会出现reward function并不是唯一的问题,如下图,使智能体学到同一种行为的reward function存在很多种,该方法无法判断哪种reward是最优的,因而也就无法判断Policy是否最优,也无法精确判断那些expert data是suboptimal的(可以通过加入松弛变量slack variables来解决)。除此之外,以上的优化目标涉及到了复杂的约束条件,不适合深度学习。
3.2 Maximum Entropy IRL
另一种经典方法是maximum entropy IRL方法,该方法需要回顾一下之前用概率图模型修改RL问题框架的内容。该框架的关键点如下:
- 引入最优变量(Optimality Variable): p ( O t ∣ s t , a t ) = exp ( r ( s t , a t ) ) p(O_{t}|\textbf s_t, \textbf a_t)=\exp (r(\textbf s_t, \textbf a_t)) p(Ot∣st,at)=exp(r(st,at))
- 重新表达最优轨迹:
p
(
τ
∣
O
1
:
T
)
p(\tau|O_{1:T})
p(τ∣O1:T),其计算方式如下:(具体过程可以参考之前课程的总结)
p ( τ ∣ O 1 : T ) = p ( τ , O 1 : T ) p ( O 1 : T ) ∝ p ( τ ) ∏ t exp ( r ( s t , a t ) ) = p ( τ ) exp ( ∑ t r ( s t , a t ) ) p(\tau|O_{1:T})=\frac{p(\tau,O_{1:T})}{p(O_{1:T})}\propto p(\tau)\prod_{t}\exp(r(\textbf s_t, \textbf a_t))=p(\tau)\exp(\sum_{t}r(\textbf s_t, \textbf a_t)) p(τ∣O1:T)=p(O1:T)p(τ,O1:T)∝p(τ)t∏exp(r(st,at))=p(τ)exp(t∑r(st,at))
而IRL的目的是通过expert data得到reward function,因此可以在此框架的基础上将reward参数化,即
r
ψ
r_{\psi}
rψ,并将最优变量
O
t
O_{t}
Ot表达成
p
(
O
t
∣
s
t
,
a
t
)
=
exp
(
r
ψ
(
s
t
,
a
t
)
)
p(O_{t}|\textbf s_t, \textbf a_t)=\exp (r_{\psi}(\textbf s_t, \textbf a_t))
p(Ot∣st,at)=exp(rψ(st,at)),上文中的
p
(
τ
∣
O
1
:
T
)
p(\tau|O_{1:T})
p(τ∣O1:T)就正比于:
p
(
τ
∣
O
1
:
T
,
ψ
)
∝
p
(
τ
)
exp
(
∑
t
r
ψ
(
s
t
,
a
t
)
)
p(\tau|O_{1:T},\psi)\propto p(\tau)\exp(\sum_{t}r_{\psi}(\textbf s_t, \textbf a_t))
p(τ∣O1:T,ψ)∝p(τ)exp(∑trψ(st,at)),由于上述公式中的
p
(
τ
)
p(\tau)
p(τ)与reward参数
ψ
\psi
ψ无关,所以可以省略。在通过最大对数似然的方式对reward 参数进行更新之前,还需要通过归一化处理精确表达一下
p
(
τ
∣
O
1
:
T
,
ψ
)
p(\tau|O_{1:T},\psi)
p(τ∣O1:T,ψ),假设给定多条最优轨迹
τ
i
\tau_i
τi时:
p
(
τ
i
∣
O
1
:
T
,
ψ
)
=
p
(
τ
i
)
exp
(
r
ψ
(
τ
)
)
∫
p
(
τ
i
)
exp
(
r
ψ
(
τ
)
)
d
τ
i
p(\tau_i|O_{1:T},\psi)=\frac{p(\tau_i)\exp (r_{\psi}(\tau))}{\int p(\tau_i) \exp (r_{\psi}(\tau))d\tau_i}
p(τi∣O1:T,ψ)=∫p(τi)exp(rψ(τ))dτip(τi)exp(rψ(τ))
最大似然方法的目标就是:
max
ψ
∏
i
N
p
(
τ
i
∣
O
1
:
T
,
ψ
)
\max_{\psi}\prod_i^Np(\tau_i|O_{1:T},\psi)
ψmaxi∏Np(τi∣O1:T,ψ)
两边取对数就是:
max
ψ
log
(
∏
i
N
p
(
τ
i
∣
O
1
:
T
,
ψ
)
)
=
max
ψ
∑
i
N
log
p
(
τ
i
∣
O
1
:
T
,
ψ
)
→
max
ψ
1
N
∑
i
N
r
ψ
(
τ
i
)
−
log
Z
\max_{\psi}\log\bigg(\prod_i^Np(\tau_i|O_{1:T},\psi)\bigg)=\max_{\psi}\sum_i^N \log p(\tau_i|O_{1:T},\psi)\to \max_{\psi}\frac{1}{N}\sum_i^N r_{\psi}(\tau_i)-\log Z
ψmaxlog(i∏Np(τi∣O1:T,ψ))=ψmaxi∑Nlogp(τi∣O1:T,ψ)→ψmaxN1i∑Nrψ(τi)−logZ
最终的优化目标就转化为了:
max
ψ
1
N
∑
i
N
r
ψ
(
τ
i
)
−
log
Z
\max_{\psi}\frac{1}{N}\sum_i^Nr_{\psi}(\tau_i)-\log Z
ψmaxN1i∑Nrψ(τi)−logZ
这里的
Z
=
∫
p
(
τ
i
)
exp
(
r
ψ
(
τ
)
)
d
τ
i
Z=\int p(\tau_i) \exp (r_{\psi}(\tau))d\tau_i
Z=∫p(τi)exp(rψ(τ))dτi。之后就可以通过对目标函数求梯度的方式进行参数的更新,梯度如下:
∇
ψ
L
=
1
N
∑
i
=
1
N
∇
ψ
r
ψ
(
τ
i
)
−
1
Z
Z
′
=
1
N
∑
i
=
1
N
∇
ψ
r
ψ
(
τ
i
)
−
1
Z
∫
p
(
τ
i
)
(
exp
(
r
ψ
(
τ
i
)
)
)
′
d
τ
i
=
1
N
∑
i
=
1
N
∇
ψ
r
ψ
(
τ
i
)
−
1
Z
∫
p
(
τ
i
)
exp
(
r
ψ
(
τ
i
)
)
∇
ψ
r
ψ
(
τ
i
)
d
τ
i
=
1
N
∑
i
=
1
N
∇
ψ
r
ψ
(
τ
i
)
−
∫
(
1
Z
p
(
τ
i
)
exp
(
r
ψ
(
τ
i
)
)
)
∇
ψ
r
ψ
(
τ
i
)
d
τ
i
=
1
N
∑
i
=
1
N
∇
ψ
r
ψ
(
τ
i
)
−
∫
p
(
τ
i
∣
O
1
:
T
,
ψ
)
∇
ψ
r
ψ
(
τ
i
)
d
τ
i
\nabla_{\psi} \mathcal L = \frac{1}{N}\sum_{i=1}^{N}\nabla_{\psi}r_{\psi}(\tau_i)-\frac{1}{Z}Z'= \frac{1}{N}\sum_{i=1}^{N}\nabla_{\psi}r_{\psi}(\tau_i)-\frac{1}{Z}\int p(\tau_i) (\exp (r_{\psi}(\tau_i)))'d\tau_i\\= \frac{1}{N}\sum_{i=1}^{N}\nabla_{\psi}r_{\psi}(\tau_i)-\frac{1}{Z}\int p(\tau_i) \exp (r_{\psi}(\tau_i))\nabla_{\psi}r_{\psi}(\tau_i)d\tau_i \\=\frac{1}{N}\sum_{i=1}^{N}\nabla_{\psi}r_{\psi}(\tau_i)-\int \bigg(\frac{1}{Z} p(\tau_i) \exp (r_{\psi}(\tau_i))\bigg)\nabla_{\psi}r_{\psi}(\tau_i)d\tau_i\\=\frac{1}{N}\sum_{i=1}^{N}\nabla_{\psi}r_{\psi}(\tau_i)-\int p(\tau_i|O_{1:T},\psi)\nabla_{\psi}r_{\psi}(\tau_i)d\tau_i
∇ψL=N1i=1∑N∇ψrψ(τi)−Z1Z′=N1i=1∑N∇ψrψ(τi)−Z1∫p(τi)(exp(rψ(τi)))′dτi=N1i=1∑N∇ψrψ(τi)−Z1∫p(τi)exp(rψ(τi))∇ψrψ(τi)dτi=N1i=1∑N∇ψrψ(τi)−∫(Z1p(τi)exp(rψ(τi)))∇ψrψ(τi)dτi=N1i=1∑N∇ψrψ(τi)−∫p(τi∣O1:T,ψ)∇ψrψ(τi)dτi
所以上述损失函数的梯度也可以理解成:
∇
ψ
L
=
E
τ
∼
π
∗
(
τ
)
[
∇
ψ
r
ψ
(
τ
)
]
−
E
τ
∼
p
(
τ
∣
O
1
:
T
,
ψ
)
[
∇
ψ
r
ψ
(
τ
)
]
\nabla_{\psi} \mathcal L=E_{\tau\sim\pi^*(\tau)}[\nabla_{\psi}r_{\psi}(\tau)]-E_{\tau\sim p(\tau|O_{1:T},\psi)}[\nabla_{\psi}r_{\psi}(\tau)]
∇ψL=Eτ∼π∗(τ)[∇ψrψ(τ)]−Eτ∼p(τ∣O1:T,ψ)[∇ψrψ(τ)]
上式种第一部分是通过expert data(即假设通过最优策略
π
∗
\pi^*
π∗得到的数据)得到的对Reward的估算,第二部分是通过使用参数化的reward function得到的期望。接下来的问题是如何进一步计算上述表达式的第二部分,推导过程如下:
这里的第一部分是参数化reward之后通过推断得到的最优策略,之前的对于该量的推导如下(不含参数
ψ
\psi
ψ):
p
(
a
t
∣
s
t
,
O
1
:
T
)
=
π
(
a
t
∣
s
t
)
=
p
(
a
t
∣
s
t
,
O
t
:
T
)
=
p
(
a
t
,
s
t
∣
O
t
:
T
)
p
(
s
t
∣
O
t
:
T
)
=
p
(
a
t
,
s
t
,
O
t
:
T
)
/
p
(
O
t
:
T
)
p
(
s
t
,
O
t
:
T
)
/
p
(
O
t
:
T
)
=
p
(
O
t
:
T
∣
s
t
,
a
t
)
p
(
s
t
,
a
t
)
/
p
(
O
t
:
T
)
p
(
O
t
:
T
∣
s
t
)
p
(
s
t
)
/
p
(
O
t
:
T
)
=
p
(
O
t
:
T
∣
s
t
,
a
t
)
p
(
s
t
,
a
t
)
p
(
O
t
:
T
∣
s
t
)
p
(
s
t
)
=
β
t
(
s
t
,
a
t
)
β
t
(
s
t
)
p
(
a
t
∣
s
t
)
=
β
t
(
s
t
,
a
t
)
β
t
(
s
t
)
p(\textbf a_t|\textbf s_t,O_{1:T})=\pi (\textbf a_t|\textbf s_t)=p(\textbf a_t|\textbf s_t,O_{t:T})=\frac{p(\textbf a_t,\textbf s_t|O_{t:T})}{p(\textbf s_t|O_{t:T})}\\=\frac{p(\textbf a_t,\textbf s_t, O_{t:T})/p(O_{t:T})}{p(\textbf s_t,O_{t:T})/p(O_{t:T})}=\frac{p(O_{t:T}|\textbf s_t,\textbf a_t)p(\textbf s_t,\textbf a_t)/p(O_{t:T})}{p(O_{t:T}|\textbf s_t)p(\textbf s_t)/p(O_{t:T})}\\ =\frac{p(O_{t:T}|\textbf s_t,\textbf a_t)p(\textbf s_t,\textbf a_t)}{p(O_{t:T}|\textbf s_t)p(\textbf s_t)}=\frac{\beta_t(\textbf s_t,\textbf a_t)}{\beta_t(\textbf s_t)}p(\textbf a_t|\textbf s_t)=\frac{\beta_t(\textbf s_t,\textbf a_t)}{\beta_t(\textbf s_t)}
p(at∣st,O1:T)=π(at∣st)=p(at∣st,Ot:T)=p(st∣Ot:T)p(at,st∣Ot:T)=p(st,Ot:T)/p(Ot:T)p(at,st,Ot:T)/p(Ot:T)=p(Ot:T∣st)p(st)/p(Ot:T)p(Ot:T∣st,at)p(st,at)/p(Ot:T)=p(Ot:T∣st)p(st)p(Ot:T∣st,at)p(st,at)=βt(st)βt(st,at)p(at∣st)=βt(st)βt(st,at)
第二部分与forward messages有关(在forward messages的基础上假设之后的状态-动作对都是最优的),这里回顾一下之前关于该量的推导(不含参数
ψ
\psi
ψ):
p
(
s
t
∣
O
1
:
T
)
=
p
(
s
t
,
O
1
:
T
)
p
(
O
1
:
T
)
=
p
(
s
t
,
O
1
:
t
−
1
,
O
t
:
T
)
p
(
O
1
:
T
)
=
p
(
O
t
:
T
∣
s
t
,
O
1
:
t
−
1
)
p
(
s
t
,
O
1
:
t
−
1
)
p
(
O
1
:
T
)
=
p
(
O
t
:
T
∣
s
t
)
p
(
s
t
,
O
1
:
t
−
1
)
p
(
O
1
:
T
)
=
p
(
O
t
:
T
∣
s
t
)
p
(
s
t
∣
O
1
:
t
−
1
)
p
(
O
1
:
t
−
1
)
p
(
O
1
:
T
)
∝
β
t
(
s
t
)
p
(
s
t
∣
O
1
:
t
−
1
)
p
(
O
1
:
t
−
1
)
∝
β
t
(
s
t
)
α
t
(
s
t
)
p(\textbf s_t|O_{1:T})=\frac{p(\textbf s_t,O_{1:T})}{p(O_{1:T})}=\frac{p(\textbf s_t,O_{1:t-1},O_{t:T})}{p(O_{1:T})}\\=\frac{p(O_{t:T}|\textbf s_t,O_{1:t-1})p(\textbf s_t,O_{1:t-1})}{p(O_{1:T})}\\=\frac{p(O_{t:T}|\textbf s_t)p(\textbf s_t,O_{1:t-1})}{p(O_{1:T})}\\= \frac{p(O_{t:T}|\textbf s_t)p(\textbf s_t|O_{1:t-1})p(O_{1:t-1})}{p(O_{1:T})}\\ \propto \beta_t(\textbf s_t)p(\textbf s_t|O_{1:t-1})p(O_{1:t-1})\\ \propto \beta_t(\textbf s_t)\alpha_t(\textbf s_t)
p(st∣O1:T)=p(O1:T)p(st,O1:T)=p(O1:T)p(st,O1:t−1,Ot:T)=p(O1:T)p(Ot:T∣st,O1:t−1)p(st,O1:t−1)=p(O1:T)p(Ot:T∣st)p(st,O1:t−1)=p(O1:T)p(Ot:T∣st)p(st∣O1:t−1)p(O1:t−1)∝βt(st)p(st∣O1:t−1)p(O1:t−1)∝βt(st)αt(st)
进一步化简可以得到:
基于上述推导过程,可以得到以下最大熵IRL算法:
之所以上述算法被称为maximum entropy的原因就在于:在线性reward的情况下它最大化了在该参数化Reward下策略的熵,且约束条件是两种策略下期望相等。其合理性在于在使用参数化reward的最优策略的情况下feature的期望与expert policy数据下的期望相同(匹配了expert policy的features),并且最大化了策略的随机性。
4. 与深度学习结合的方法
以上的方法需要枚举所有state-action pairs,并计算相应的visitation frequency。如果遇到状态和动作空间维数都很高的情况下,枚举所有可能情况是不现实的,所以需要引进新的方法,比如上文的maxEnt方法与深度学习方法结合。
4.1 Guided Cost Learning Algorithm
这里回顾上文计算得到的损失函数的梯度:
也可以通过采样的方式来估算梯度,这里的第一部分是由expert data的最优策略分布采样得到,第二部分是通过soft optimal policy进行采样,回顾其公式如下:
p
(
τ
i
∣
O
1
:
T
,
ψ
)
=
p
(
τ
i
)
exp
(
r
ψ
(
τ
)
)
∫
p
(
τ
i
)
exp
(
r
ψ
(
τ
)
)
d
τ
i
p(\tau_i|O_{1:T},\psi)=\frac{p(\tau_i)\exp (r_{\psi}(\tau))}{\int p(\tau_i) \exp (r_{\psi}(\tau))d\tau_i}
p(τi∣O1:T,ψ)=∫p(τi)exp(rψ(τ))dτip(τi)exp(rψ(τ))
从上述公式可以看出,如果用两种不同的分布的话进行数据采样的话其实不是一种很高效的做法,这里可以选择使用Importance sampling的方式只用一个分布进行采样。回顾Importance sampling的原理如下:
∇
ψ
L
=
E
τ
∼
π
∗
(
τ
)
[
∇
ψ
r
ψ
(
τ
)
]
−
E
τ
∼
p
(
τ
∣
O
1
:
T
,
ψ
)
[
∇
ψ
r
ψ
(
τ
)
]
\nabla_{\psi} \mathcal L=E_{\tau\sim\pi^*(\tau)}[\nabla_{\psi}r_{\psi}(\tau)]-E_{\tau\sim p(\tau|O_{1:T},\psi)}[\nabla_{\psi}r_{\psi}(\tau)]
∇ψL=Eτ∼π∗(τ)[∇ψrψ(τ)]−Eτ∼p(τ∣O1:T,ψ)[∇ψrψ(τ)]
如果只用expert data进行梯度计算的话,由上述importance sampling的公式可以得到:
∇
ψ
L
=
E
τ
∼
π
∗
(
τ
)
[
∇
ψ
r
ψ
(
τ
)
]
−
E
τ
∼
π
∗
(
τ
)
[
p
(
τ
∣
O
1
:
T
,
ψ
)
π
∗
(
τ
)
∇
ψ
r
ψ
(
τ
)
]
\nabla_{\psi} \mathcal L=E_{\tau\sim\pi^*(\tau)}[\nabla_{\psi}r_{\psi}(\tau)]-E_{\tau\sim \pi^*(\tau)}[ \frac{p(\tau|O_{1:T},\psi)}{ \pi^*(\tau)}\nabla_{\psi}r_{\psi}(\tau)]
∇ψL=Eτ∼π∗(τ)[∇ψrψ(τ)]−Eτ∼π∗(τ)[π∗(τ)p(τ∣O1:T,ψ)∇ψrψ(τ)]
这里的importance sampling weight记作 w j = p ( τ ∣ O 1 : T , ψ ) π ∗ ( τ ) ∝ p ( τ ) exp ( r ψ ( τ ) ) π ∗ ( τ ) = p ( s 1 ) ∏ t p ( s t + 1 ∣ s t , a t ) exp ( r ψ ( s t , a t ) ) p ( s 1 ) ∏ t p ( s t + 1 ∣ s t , a t ) π ∗ ( a t ∣ s t ) = exp ( ∑ t r ψ ( s t , a t ) ) ∏ t π ( a t ∣ s t ) w_j=\frac{p(\tau|O_{1:T},\psi)}{ \pi^*(\tau)}\propto \frac{p(\tau)\exp (r_{\psi}(\tau))}{ \pi^*(\tau)}=\frac{p(\textbf s_1)\prod_t p(\textbf s_{t+1}|\textbf s_t, \textbf a_t)\exp(r_{\psi}(\textbf s_t, \textbf a_t))}{p(\textbf s_1)\prod_t p(\textbf s_{t+1}|\textbf s_t, \textbf a_t)\pi^*(\textbf a_t | \textbf s_t)}=\frac{\exp(\sum_tr_{\psi}(\textbf s_t, \textbf a_t))}{\prod_t \pi(\textbf a_t | \textbf s_t)} wj=π∗(τ)p(τ∣O1:T,ψ)∝π∗(τ)p(τ)exp(rψ(τ))=p(s1)∏tp(st+1∣st,at)π∗(at∣st)p(s1)∏tp(st+1∣st,at)exp(rψ(st,at))=∏tπ(at∣st)exp(∑trψ(st,at))
经过以上的推导,可以将关于
ψ
\psi
ψ的损失函数的梯度写成如下:
整个的guided cost learning的算法框架如下:
整个算法更精简的思路是先更新reward function的参数
ψ
\psi
ψ,再根据Reward function使用策略梯度方法:
4.2 IRL & GANs
上述流程与深度学习中的GAN非常类似,GAN的最终目标是分辨不出generator和discriminator产生的数据的区别。
以上是GAN中的discriminator的目标函数部分,这里解释一下相关量:这里的判别模型是
D
ψ
(
x
)
D_{\psi}(x)
Dψ(x),一个二分类器,表示数据
x
x
x来自真实数据而非生成数据的概率。因此上述损失函数中的第一部分代表数据来自真实数据的概率,而第二部分表示,来自生成器的概率。由于判别器的目标是估计样本来自真实数据的概率,如果来自真实数据则输出大概率,所以判别器的目标是最大化损失函数。(这里补充一下生成器的目的是希望该损失函数最小,原因在于它要降低判别模型对数据来源判断正确的概率,直观解释就是让判别器分辨不出来数据到底来自真实数据还是生成的数据),所以整个目标函数是:
这里先求解最优的discriminator,使用的方法是让该损失函数对 D ( x ) D(x) D(x)求导的梯度为0,推导过程如下(直接展开期望):
这里的
p
data
(
x
)
p_{\text{data}}(\textbf x)
pdata(x)和
p
generator
(
x
)
p_{\text{generator}}(\textbf x)
pgenerator(x)对应lecture中的
p
∗
(
x
)
p^*(\textbf x)
p∗(x)和
p
θ
(
x
)
p_{\theta}(\textbf x)
pθ(x),分别为expert data获取的最优策略数据和由策略获得的数据 。对于IRL的情况,目标就是让在
π
θ
(
τ
)
\pi_{\theta}(\tau)
πθ(τ)下的轨迹
p
θ
(
τ
)
p_{\theta}(\tau)
pθ(τ)接近最优策略:
p
∗
(
τ
)
=
p
(
τ
∣
O
1
:
T
,
ψ
)
∝
p
(
τ
)
exp
(
r
ψ
(
τ
)
)
p^*(\tau)=p(\tau|O_{1:T},\psi)\propto p(\tau)\exp (r_{\psi}(\tau))
p∗(τ)=p(τ∣O1:T,ψ)∝p(τ)exp(rψ(τ)),将式子带入最优discriminator的公式可以得到:
结合了GAN的整个IRL算法框架为:
以上方法的判别器表达式过于繁琐,还可以进一步简化,直接对判别器进行参数化,
D
ψ
D_{\psi}
Dψ,该方法的特点如下:
但是毕竟一切都是trade-off,简化的方法最大的好处就是方便实现,但也存在着一些问题,比如该方法的判别器在算法收敛之后是处于‘一无所知’(概率为0.5)的状态,而且该方法也不会对reward进行优化。