【强化学习】GAIL

Generative Adversarial Imitation Learning(GAIL)

GAN

基本概念

在这里插入图片描述
在GAN生成对抗网络中,包含两个模型,一个生成模型,一个判别模型。

  • 生成模型:负责生成看起来真实自然,和原始数据相似的实例。
  • 判别模型:负责判断给出的实例是真实的还是人为伪造的。
    生成模型努力去欺骗判别模型,判别模型努力不被欺骗,这样两种模型交替优化训练,都得到了提升。

算法流程

在这里插入图片描述
在上面的流程图中,Generator接收一个随机的噪声,根据这个噪声生成图片,discriminator判断这个图片是不是真实的,D(x)表示x为真实图片的概率,也可以看做是分数,如果为1就是100%真实,如果为0,就表示是伪造的图片。

训练过程

Generator和Discriminator构成了一个动态博弈的过程,如果Generator恢复了真实数据的分布,也就是说生成了和真实数据一模一样的样本,那么判别模型就无法判别图片的真实性,就只能给出50%的真实概率,基本等于乱猜,此时双方的利益都得到最大化,Generator生成的图片有50%的概率被判别正确,Discriminator有50%的概率猜对,此时生成模型和判别模型都不会再更新自己的权重,其实也利用了最大熵原理

GAN模型的目标函数:
min ⁡ G max ⁡ D V ( D , G ) = E x − P d a t a ( x ) [ l o g D ( x ) ] + E z − p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D,G) = E_{x-P_{data}(x)}[logD(x)] + E_{z-p_z(z)}[log(1-D(G(z)))] minGmaxDV(D,G)=ExPdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

在训练中,D要最大化logD(x)和log(1-D(G(z))),G要最小化log(1-D(G(z))),也就是最大化D的损失
或者可以直接理解为G网络的loss是log(1-D(G(z))),D的loss是-(log(D(x)))+log(1-D(G(z)))
因此G网络训练的目标是让D(G(z))趋近于1,这样G的loss就会变小,而D网络是一个2分类,目标是分清真实数据和伪造数据,也就是希望D(x)区间于1,D(G(z))趋近于0,这也就体现了对抗的思想
在这里插入图片描述
简单理解:对于辨别器,如果得到的是生成图片辨别器应该输出 0,如果是真实的图片应该输出 1,得到误差梯度反向传播来更新参数。对于生成器,首先由生成器生成一张图片,然后输入给判别器判别并的到相应的误差梯度,然后反向传播这些图片梯度成为组成生成器的权重。直观上来说就是:辨别器不得不告诉生成器如何调整从而使它生成的图片变得更加真实。

GAIL

对于之前的IRL算法,都是先根据计算出奖励函数,而后根据奖励函数进行强化学习,优化策略,最后靠近专家策略。这样的做法在高维度的数据中,计算成本比较大,而且都是在计算奖励函数,并没有直接得出state-action之间的关系。
GAIL算法则跳过了计算奖励函数的部分,直接寻找专家策略

而对于Inverse Reinforcement Learning想要到达的结果和GAN相同,也就是Generator生成的策略(或者轨迹分布)与专家策略相同。
在这里插入图片描述

算法

在这里插入图片描述
输入:专家轨迹,随机初始策略和判别器的参数 θ 0 , w 0 \theta_0,w_0 θ0w0
Step 1:开始循环
Step 2:根据初始策略生成样本轨迹
Step 3:使用梯度策略更新判别器参数
E ^ τ i [ ∇ w l o g ( D w ( s , a ) ) ] + E ^ τ E [ ∇ w l o g ( 1 − D w ( s , a ) ) ] \hat{E}_{\tau_i}[\nabla_w log(D_w(s,a))]+\hat{E}_{\tau_{E}}[\nabla_w log(1-D_w(s,a))] E^τi[wlog(Dw(s,a))]+E^τE[wlog(1Dw(s,a))]
Step 4:使用判别器产生的 D w ( s , a ) D_w(s,a) Dw(s,a)看做代价函数,利用TRPO算法对 θ \theta θ做梯度下降,更新Generator

理论

问题表述: π \pi π为给定状态下选择状态,A为稳定随机策略集合,P(s’|s,a)为环境动力学函数,也就是状态转移概率, γ \gamma γ为折扣率, π E \pi_E πE为专家策略,期望定义为:
E π [ c ( s , a ) ] = E [ ∑ t = 0 ∞ γ t c ( s t , a t ) ] E_\pi [c(s,a)] = E[\sum^\infty_{t=0}\gamma^t c(s_t,a_t)] Eπ[c(s,a)]=E[t=0γtc(st,at)]

对于一般的IRL(例如学徒学习):
m i n i m i z e π m a x c ∈ C E π [ c ( s , a ) ] − E π E [ c ( s , a ) ] minimize_\pi max_{c\in C} E_\pi [c(s,a)]-E_{\pi_E}[c(s,a)] minimizeπmaxcCEπ[c(s,a)]EπE[c(s,a)]

也就是用线性方程来表示,希望产生的策略期望无限接近专家策略期望。在GAIL中扩展了这个公式,一项利用凸函数 ψ \psi ψ,另一项利用最大熵原理,定义了因果熵,也就将问题转换为了在函数族C中寻找最优的优化问题:
m a x c ∈ C ( m i n π ∈ ∏ − H ( π ) + E π [ c ( s , a ) ] ) − E π E [ c ( s , a ) ] max_{c\in C}(min_{\pi \in \prod}-H(\pi) + E_\pi[c(s,a)]) - E_{\pi_E}[c(s,a)] maxcC(minπH(π)+Eπ[c(s,a)])EπE[c(s,a)]
其中,H( π \pi π) = E π [ − l o g π ( a ∣ s ) ] E_\pi[-log\pi(a|s)] Eπ[logπ(as)]为策略 π \pi π的折扣因果熵,因为在实际运行中专家策略无法直接获取,就只能通过专家轨迹的采样来估计,最终问题转为为最大因果熵中寻找代价函数的过程,策略熵最大化,进而是的期望代价函数最小化
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度强化学习是结合了深度学习和强化学习的一种方法,用于解决具有高维状态空间和动作空间的复杂任务。最新的深度强化学习算法包括以下几种: 1. 深度Q网络(Deep Q-Network,DQN):DQN是深度强化学习中的经典算法,通过使用深度神经网络来近似Q值函数,实现了对高维状态空间的建模。DQN的改进版本包括Double DQN、Dueling DQN等。 2. 策略梯度方法:策略梯度方法通过直接优化策略函数来学习最优策略。其中,Proximal Policy Optimization(PPO)和Trust Region Policy Optimization(TRPO)是目前应用较广泛的算法。 3. 深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG):DDPG是一种用于连续动作空间的深度强化学习算法。它通过同时学习一个确定性策略和一个Q值函数来实现对连续动作空间的建模。 4. 深度强化学习中的模型(Model):传统的强化学习算法通常需要与环境进行大量的交互来学习策略,而模型可以用来预测环境的动态变化,从而减少与环境的交互次数。最新的研究中,一些算法如Imagination-Augmented Agents(I2A)和World Models等将模型引入到深度强化学习中。 5. 深度逆强化学习(Deep Inverse Reinforcement Learning,DIRL):DIRL是一种通过观察专家的行为来学习任务奖励函数的方法。最新的研究中,一些算法如Generative Adversarial Imitation Learning(GAIL)和Maximum Entropy Inverse Reinforcement Learning(MaxEnt IRL)等被提出来解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值