逆强化学习
给定expert (专家)的一组demonstration (示范) D = { τ i } i = 1 n D=\{\tau_i\}_{i=1}^n D={τi}i=1n, 其中 τ i = { ( s i 1 , a i 1 ) , ( s i 2 , a i 2 ) , . . . , ( s i ( n − 1 ) , a i ( n − 1 ) ) , s n } \tau_i = \{(s_{i1}, a_{i1}), (s_{i2}, a_{i2}), ..., (s_{i(n-1)}, a_{i(n-1)}), s_n\} τi={(si1,ai1),(si2,ai2),...,(si(n−1),ai(n−1)),sn}
用这些来恢复专家行为的基本奖励函数
对于逆强化学习的数据集而言,我们只有状态
为了允许使用状态来计算基本奖励函数,我们使用所谓的特征。在这种情况下,特征被定义为一个将状态映射到 d d d维矢量的一个函数 ϕ \phi ϕ, ϕ : s → R d \phi: s\rightarrow R^{d} ϕ:s→Rd。
特征的这个函数可以被任意选择。
一般来说,我们假设 ϕ ( τ ) = ∑ t = 1 ∣ τ ∣ ϕ ( s t ) \phi(\tau)=\sum_{t=1}^{|\tau|} \phi(s_t) ϕ(τ)=∑t=1∣τ∣ϕ(st), 其中 ∣ τ ∣ |\tau| ∣τ∣表示轨迹 τ \tau τ的长度
即一个轨迹 τ \tau τ的特征是这个轨迹所访问的状态的特征之和,重复的状态也会被重复计算。
最大熵逆强化学习
最大熵逆强化学习的总体思路是基于特征-期望匹配的。
即专家提供的演示中特征的访问频率应该等于代理人按照示范恢复的奖励函数访问的特征的预期访问频率。
E π L [ ϕ ( τ ) ] = E π E [ ϕ ( τ ) ] E_{\pi^L}[\phi(\tau)]=E_{\pi^E}[\phi(\tau)] EπL[ϕ(τ)]=EπE[ϕ(τ)]
其中 E π L [ ϕ ( τ ) ] = ∑ τ p π L ( τ ) ϕ ( τ ) E_{\pi^{L}}[\phi(\tau)]=\sum_{\tau} p_{\pi^L}(\tau)\phi(\tau) EπL[ϕ(τ)]=∑τpπL(τ)ϕ(τ)
但是这个的解不唯一,存在模糊性的问题
现在想要优化的问题变为:
arg max p H ( p ) (1) \arg \max_{p} H(p) \tag{1} argpmaxH(p)(1)
s . t . E π L [ ϕ ( τ ) ] = E π E [ ϕ ( τ ) ] (2) s.t. E_{\pi^L}[\phi(\tau)] = E_{\pi^E}[\phi(\tau)] \tag{2} s.t.EπL[ϕ(τ)]=EπE[ϕ(τ)](2)
∑ τ p ( τ ) = 1 , ∀ τ : p ( τ ) > 0 (2) \sum_{\tau}p(\tau)=1, \forall \tau: p(\tau)>0 \tag{2} τ∑p(τ)=1,∀τ:p(τ)>0(2)
这个想要被优化的问题表示:
在学习者和专家的预期特征访问频率相匹配的条件下,我们要在轨迹 τ \tau τ 上找到一个具有最大熵的概率分布 p ( τ ) p(\tau) p(τ)。
通过解决上诉问题,我们有了轨迹的概率分布,但是这如何帮助我们恢复奖励函数 R : S → R R:S\rightarrow R R:S→R?
- 奖励决定了政策,而政策又决定了轨迹分布 p ( τ ) p(\tau) p(τ)。
- 最大熵IRL的一个关键假设是我们知道MDP的行为,即我们知道代表转移概率的完美模型 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t, a_t) p(st+1∣st,at)
- 所以我们唯一需要学习的是奖励函数。
- 为了能够学习奖励,我们需要将其参数化。为此,我们将奖励函数假设为与特征相关的线性函数,即 R ( τ ) = ω T ϕ ( τ ) R(\tau)=\omega^T \phi(\tau) R(τ)=ωTϕ(τ)。
通过使用拉格朗日乘子法对上述优化问题进行求解可得:
min L = ∑ τ p ( τ ) log p ( τ ) − ∑ τ λ τ [ p ( τ ) ϕ ( τ ) − E π E [ ϕ ( τ ) ] ] − λ ( ∑ τ p ( τ ) − 1 ) \min L=\sum_{\tau} p(\tau)\log p(\tau) - \sum_{\tau} \lambda_{\tau}[p(\tau)\phi(\tau)-E_{\pi^E}[\phi(\tau)]]-\lambda (\sum_{\tau}p(\tau)-1) minL=∑τp(τ)logp(τ)−∑τλτ[p(τ)ϕ(τ)−EπE[ϕ(τ)]]−λ(∑τp(τ)−1)
将上式对 p p p进行微分,并令其导数为0,可以得到:
KaTeX parse error: Undefined control sequence: \part at position 7: \frac{\̲p̲a̲r̲t̲ ̲L}{\part p(\tau…
p ( τ ) = exp ∑ τ λ τ ϕ ( τ ) exp ( 1 − λ 0 ) p(\tau)=\frac{\exp \sum_{\tau}\lambda_{\tau}\phi(\tau)}{\exp (1-\lambda_0)} p(τ)=exp(1−λ0)exp∑τλτϕ(τ)
进而,我们可以将其写成如下的形式:
p ( τ ∣ ω ) = 1 Z ( ω ) exp ( ω T ϕ ( τ ) ) p(\tau| \omega)=\frac{1}{Z(\omega)} \exp (\omega^T\phi(\tau)) p(τ∣ω)=Z(ω)1exp(ωTϕ(τ)) 其中 Z ( ω ) = ∑ τ exp ( ω T ϕ ( τ ) ) Z(\omega)=\sum_{\tau}\exp(\omega^T \phi(\tau)) Z(ω)=∑τexp(ωTϕ(τ))
所谓的分区函数𝑍(𝜔)只是将数值归一化,以满足概率分布约束。
我们现在知道了分布的参数化形式,那么如何进行优化呢?
我们可以在所有演示的轨迹 D = { τ i } i = 1 N D=\{\tau_i\}_{i=1}^N D={τi}i=1N上最大化对数似然?即如下所示
ω ∗ = arg max ω L ( ω ) = arg max ω ∑ τ ∈ D log p ( τ ∣ ω ) \omega^*=\arg\ \max_{\omega} L(\omega)=\arg\ \max_{\omega} \sum_{\tau \in D}\log p(\tau|\omega) ω∗=arg maxωL(ω)=arg maxω∑τ∈Dlogp(τ∣ω)
这个可以使用梯度上升法来解决
如何计算状态访问频率呢?
参考文献:
[1] 逆强化学习(二)–基于最大熵的方法 链接:https://yzhihao.github.io/machine%20learning/2017/05/20/%E9%80%86%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0(%E4%BA%8C)-%E5%9F%BA%E4%BA%8E%E6%9C%80%E5%A4%A7%E7%86%B5%E7%9A%84%E6%96%B9%E6%B3%95.html