手机网站大全免费,中铁建设集团招标平台,做签证网站,怎么看一个网站是否被kInverse Reinforcement Learning (IRL) 详解
什么是 Inverse Reinforcement Learning#xff1f;
在传统的强化学习 (Reinforcement Learning, RL) 中#xff0c;奖励函数是已知的#xff0c;智能体的任务是学习一个策略来最大化奖励
而在逆向强化学习 (Inverse Reinforc… Inverse Reinforcement Learning (IRL) 详解
什么是 Inverse Reinforcement Learning
在传统的强化学习 (Reinforcement Learning, RL) 中奖励函数是已知的智能体的任务是学习一个策略来最大化奖励
而在逆向强化学习 (Inverse Reinforcement Learning, IRL) 中情况相反
我们不知道奖励函数 缺失的但是我们有专家的示范轨迹比如专家怎么开车、怎么走路: τ ( s 0 , a 0 , s 1 , a 1 , … , s T ) \tau (s_0, a_0, s_1, a_1, \dots, s_T) τ(s0,a0,s1,a1,…,sT)目标是推断出奖励函数使得专家行为在该奖励下是最优的 简单来说IRL 是从专家行为中推断动机 Initialize an actorIn each iteration The actor interacts with the environrment to obtain some trajectoriesDefine a reward functlon, which makes thetrajectories of the teacher better than the actorThe actor learns to maximize the reward based on the new reward function Output the reward function and the actor learned from the reward function IRL算法之 GAIL 算法详解 GAIL生成对抗模仿学习结合了生成对抗网络 GANGenerator 对抗 Discriminator和 强化学习 Policy Gradient策略梯度 让智能体学会产生像专家一样的轨迹但不直接学习奖励函数只通过模仿专家行为来训练策略 判别器 (Discriminator) 试图区分 “专家轨迹” 和 “生成器轨迹”
判别器的目标是最大化对数似然判别器希望对于专家数据 expert 输出接近 1对于生成数据 policy 输出接近 0 max D E expert [ log D ( s , a ) ] E policy [ log ( 1 − D ( s , a ) ) ] \max_D \mathbb{E}_{\text{expert}} [\log D(s, a)] \mathbb{E}_{\text{policy}} [\log (1 - D(s, a))] DmaxEexpert[logD(s,a)]Epolicy[log(1−D(s,a))]
生成器策略网络 Policy试图“欺骗”判别器让判别器以为它生成的轨迹是专家生成的
生成器的目标是最小化 min π E τ ∼ π [ log ( 1 − D ( s , a ) ) ] \min_{\pi} \mathbb{E}_{\tau \sim \pi} [\log (1 - D(s, a))] πminEτ∼π[log(1−D(s,a))] 这其实可以等价强化学习问题奖励信号变成了 r ( s , a ) − log ( 1 − D ( s , a ) ) r(s, a) - \log (1 - D(s, a)) r(s,a)−log(1−D(s,a)) 这样跟标准的 policy gradient 非常类似只不过奖励是来自判别器 GAIL 简单代码示例
import gym
from stable_baselines3 import PPO
from imitation.algorithms.adversarial import GAIL
from imitation.data.types import TrajectoryWithRew
from imitation.data import rollout# 1. 创建环境
env gym.make(CartPole-v1)# 2. 加载或创建专家模型
expert PPO(MlpPolicy, env, verbose0)
expert.learn(10000)# 3. 收集专家轨迹数据
trajectories rollout.rollout(expert,env,rollout.make_sample_until(min_timestepsNone, min_episodes20)
)# 4. 创建新模型作为 actor
learner PPO(MlpPolicy, env, verbose1)# 5. 使用 GAIL 进行逆强化学习训练
gail_trainer GAIL(venvenv,demonstrationstrajectories,gen_algolearner
)
gail_trainer.train(10000)# 6. 测试训练后的模型
obs env.reset()
for _ in range(1000):action, _states learner.predict(obs, deterministicTrue)obs, reward, done, info env.step(action)env.render()if done:obs env.reset()env.close()