模仿学习(Imitation Learning)入门

模仿学习(Imitation Learning)入门在游戏中,我们往往有一个计分板准确定义事情的好坏程度。但现实中,定义Reward有可能是非常困难的,并且人定的reward也有可能存在许多意想不到的缺陷。在没有reward的情况下,让AI跟环境互动的一个方法叫做Imitation-Learning。在没有reward的前提下,我们可以找人类进行示范,AI可以凭借这些示范以及跟环境的互动进行学习。这种模仿学习使得智能体自身不必从零学起,不必去尝试探索和收集众多的无用数据,能大大加快训练进程。这跟supervised-learning有类似之处,如果采用这种

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在游戏中,我们往往有一个计分板准确定义事情的好坏程度。但现实中,定义Reward有可能是非常困难的,并且人定的reward也有可能存在许多意想不到的缺陷。在没有reward的情况下,让AI跟环境互动的一个方法叫做Imitation-Learning。在没有reward的前提下,我们可以找人类进行示范,AI可以凭借这些示范以及跟环境的互动进行学习。这种模仿学习使得智能体自身不必从零学起,不必去尝试探索和收集众多的无用数据,能大大加快训练进程。

这跟supervised-learning有类似之处,如果采用这种做法,我们叫做Behavior-Cloning,也就是复制人类的行为。

但是这种监督学习有一个缺点,如果是智能体进入到一个以前从来没有见到过的状态,就会产生较大的误差,这种误差会一直累加,到最后没有办法进行正常的行为。因此我们需要让实际遇到的数据和训练数据的分布尽量保持一致。

DAgger

前期先让人类去操作policy,拿到足够多的数据以后做完全意义上的offline训练;如果offline训出来效果不好,把效果不好的场景再让人类操作一遍,对各个状态打上动作标签。然后新数据加旧数据一起再训练,直到效果变好为止,这就是DAgger。

在这里插入图片描述

通常第三步人来收集数据也是一个比较麻烦和漫长的过程,我们也可以使用其他算法来代替人类来打标签。

逆强化学习(Inverse Reinforcement Learning)

在强化学习中,我们给定环境(状态转移)和奖励函数,我们需要通过收集的数据来对自身的策略函数和值函数进行优化。在逆强化学习中,提供环境(状态转移),也提供策略函数或是示教数据,我们希望从这些数据中反推奖励函数。即给定状态和动作,建立模型输出对应奖励。在奖励函数建立好后,我们就能新训练一个智能体来模仿给定策略(示教数据)的行为。

GAIL(Generative Adversarial Imitation Learning)

在这里插入图片描述

在IRL领域有名的算法是GAIL,这种算法模仿了生成对抗网络GANs。把Actor当成Generator,把Reward Funciton当成Discriminator。
我们要训练一个策略网络去尽量拟合提供的示教数据,那么我们可以让需要训练的reward函数来进行评价,Reward函数通过输出评分来分辨哪个是示教数据的轨迹,哪个是自己生成的虚假轨迹;而策略网络负责生成虚假的轨迹,尽可能骗过Reward函数,让其难辨真假。两者是对抗关系,双方的Loss函数是对立的,两者在相互对抗中一起成长,最后训练出一个较好的reward函数和一个较好的策略网络。

模仿学习结合强化学习

模仿学习的特点:

  1. 用人工收集数据往往需要较大成本,而且数据量也不会很大,并且存在数据分布不一致的问题。
  2. 人也有很多办不到的策略,如果是非常复杂的控制(例如高达机器人,六旋翼飞行器),人是没办法胜任的。
  3. 训练稳定简单。
  4. 最多只能做到和示教数据一样好,无法超越。

强化学习的特点:

  1. 需要奖励函数。
  2. 需要足够的探索。
  3. 有可能存在的不能收敛问题。
  4. 可以做到超越人类的决策。

因此我们可以把两者结合起来,既有人类的经验,又有自己的探索和学习。我们的做法是进行预训练和微调。AlphaGo正是运用了这种框架。同样星际争霸2的AlphaStar同样也是这种训练框架,得到了超越人类的水平。

在这里插入图片描述

但在运用pretrain和finetune这种框架时我们通常会面临一个问题,就是在预训练过后进行强化学习的时候,我们的策略一开始采集到的数据很可能是非常糟糕的,这会直接摧毁策略网络,导致效果越来越差,训练没法进行。因此我们需要在策略中将一开始的示教数据保留下来,我们可以把示教的数据直接放入reply buffer中,这样可以让策略网络随时进行学习。


我们可以通过加入一个损失函数同时对loss进行优化:

在这里插入图片描述

应用

在这里插入图片描述

在这里插入图片描述

结论

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191864.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月23日 下午9:22
下一篇 2026年1月23日 下午10:01


相关推荐

  • CentOS搭建Ghost博客

    CentOS搭建Ghost博客

    2021年6月1日
    131
  • 【快递100】 物流公司对应编码分享(截止到2021-09-19 最新数据)

    【快递100】 物流公司对应编码分享(截止到2021-09-19 最新数据)数据来自快递 100 官方 下表格已有公司名称对应编码不会改变 大家参考使用公司名称 公司编码 公司类型 圆通速递 yuantong 国内运输商 韵达快递 yunda 国内运输商 中通快递 zhongtong 国内运输商 申通快递 shentong 国内运输商 邮政快递包裹 youzhengguon 国际邮政 百世快递 huitongkuaid 国内运输商 顺丰速运 shunfen

    2026年3月20日
    2
  • Serverlet详解

    Serverlet详解转载 http blog sina com cn s blog 85f5590f0100 html 现在的 JSP 书籍有的是直接讲述 JSP 的使用 然后再讲解 SERVERLET 的使用 也有书籍是先讲述 SERVERLET 的使用 然后讲解 JSP 使用 个人认为第二种相对好一些 至于

    2026年3月17日
    3
  • 有监督学习、无监督学习以及半监督学习详解

    有监督学习、无监督学习以及半监督学习详解相信大家在开始学习机器学习的入门时,首先接触的概念就是监督学习、无监督学习以及半监督学习。在我们开始讲解之前,我们先回顾一下什么是机器学习(ML)?百度百科给出的定义是,机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。从定义中,我们可以发现:(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法…

    2022年5月28日
    51
  • ucosii操作系统基础知识

    ucosii操作系统基础知识1 什么是系统软件 系统软件是应用软件的基础 所有应用软件都要在系统软件上运行 nbsp Windows 系列 windows98win nbsp DosLinuxUnix 等 nbsp 应用软件 能够实现某种特定任务的软件 例如 nbsp office 系列金山 WPS 杀毒软件工具软件等 nbsp 支持系统运行的软件叫 系统软件 nbsp 完成特定任务的软件叫 应用软件 各

    2025年11月14日
    4
  • 扣子(coze)实战 | 5分钟学会Coze核心功能:如何从零搭建一个自动化工作流?

    扣子(coze)实战 | 5分钟学会Coze核心功能:如何从零搭建一个自动化工作流?

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号