本课从 模仿学习 开始讲起。模仿学习是一种由 传统有监督学习 启发而来的用于控制理论的方法。
(基于价值的思路和传统的监督学习结合,便提出一系列基于生成 价值数据集 (Qtable)的方法,而基于 policy 的思路和 监督学习结合,就是 基于生成 action 数据集的方法,那就是模仿学习。)
“Generally, it doesnt work.”: 模仿学习有很多问题 及相应的研究
- 黑线是训练轨迹: 人为给出的, 被模仿的
- 红线: expected 指的是 数学期望. 实际是 policy 模型 预测的最优线路
指的是, 有监督学习的 模仿学习 一定会有误差
主要原因是,
- 有监督学习要求, 测试集 和 训练集 的自变量需要来自同一个数据分布( $o_{t}$ 的分布相同) ,
- 但 policy 由于 自身的绝对存在的误差 产生不同的 action, 导致不同的 observation 分布 ($p_{data}(o_t) \ne p_{\pi_{\theta}}(o_t)$)
令 $p_{data}(o_t) = p_{\pi_{\theta}}(o_t)$ : DAgger:
- 人工对 policy obervation 标注 正确的 action
observation 偏差的原因:
- 人类的 Action 不是 蒙特卡洛的: 蒙特卡洛 假设 是同一个observation 不管几次 都会采取同样的行为 - 研究一: - 用连续的一段 Ob 来对应 Action 相对更合理 - "RNN + CNN 图像处理" 处理 不定长的图像序列 (history) - ![Pasted image 20221231113932](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-57250f9b5ef81cc8b1fc6e5787fd467a-Pasted%20image%2020221231113932.png?token=ALYUVK4DKH5HQPVKJNQD4VTDWUVMC) - 研究二: Causal Confusing: 模仿学习 观察 与 动作 之间的 因果关系 模型无法准确把握 - 刹车指示灯亮, - ![Pasted image 20221231114425](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-223ac4b2752740d4b42e416cf442f0b5-Pasted%20image%2020221231114425.png?token=ALYUVKYLVENFWJWSTNTFMHDDWUVMG) - Q1 我的思考: 可以, 因为包含了时间序列关系可以表示因果关系, - Q2 我思: 可以, 通过人为的标注矫正错误归因 - Multimodal Behavior (多峰概率分布的行为) - Policy 的决策是取概率分布的期望 (求平均) - 当 action 是 连续分布(高斯分布), 如果两种 **相反但都合理的** action 相互抵消, 则得出期望为第三种不合理的 Action - 即, 实际上 action 的 分布应该是一个多峰的分布, 这样的分布很难训练. 常用的连续分布: 高斯分布是单峰的 - ![Pasted image 20221231115501](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-84e75762a256cd604f38a512334ebdb2-Pasted%20image%2020221231115501.png?token=ALYUVK43TDQFKU6MVGH2IRDDWUVMM) - 高斯输出混合: 预测出多个 高斯分布求平均 - latent variable: 加一个特制的噪声, 不容易实现 - ![Pasted image 20221231115714](https://raw.githubusercontent.com/casual-lab/Images/master/2023/01/04-1672817267-3d8396254235a45b8db85851f1ef74b1-Pasted%20image%2020221231115714.png?token=ALYUVK4CQ27ZOV2RYFZB34LDWUVMO) - Autoregressive Discretization: - 由上, 离散 action 分布 不存在 单峰分布 抵消的问题, 一种思路是吧连续变量离散化. - 如果把高维度动作离散化,每个动作维度的每个离散值分别训练一个概率网络, 计算量大不现实。 - Autoregressive discretization:它首先把动作的第1维离散为多个动作,比如3个,这些动作有个对应的softmax层来处理,当运行向前传播后,我们只要从softmax进行采样就能得到最优动作; - 接着把第1个动作和之前的图像作为第2个softmax网络的输入,输出第2个最优动作;然后重复上述过程直到输出所有动作。 - 本质是共用了一部分网络
如何实现 模仿学习
一些理论:定义 奖励函数 或者 代价函数
定义一个 奖励函数 (或代价函数)
- 如何定义
- 简单的 behavior cloning
- 不论是 奖励函数 还是 损失函数,最终优化的都应该是 基于 learned policy 的 奖励/损失,而不是 基于 expert‘s policy 的。这也是为什么 behavior cloning 不行,以及 DAgger 的思路来源
下面的分析是,系统分析,behavior cloning 的 bound(?)以及如何 formalize 这一(?expert policy 到 learned policy)分布迁移的问题。
如果使用 0-1 损失函数如图,如果第一步走错,那么第二步的 observation 就是 专家没有见过的,因此 数据集中没有这个数据。就好像走钢丝。某一点处出错,之后的都不可能正确。
因此,$\epsilon$ 是犯错的概率上线,则损失期望的上届如图。T 是总的路径步数。
更一般的建模是,policy 在没有见过但相似的 state 也能表现很好。将 State 视作一个概率分布。但单纯的 cloning $p_{train} \ne p_{\theta}$ ,训练集和智能体所遇到的 state 不是同分布的。
因此 DAgger 人为给 $p_{\theta}$ 加标签, 使得 $p_{\theta}=p_{train}$ , so:
进一步的减少假设, 实际上 当 $p_{train}(s_t)\ne p_{\theta}(s_t)$ 如上图.
$p_{\theta}$ 表示的是一个智能体, 基于自己 learned policy 探索观察到的 state 的分布概率. 类比于走钢丝的思路:
- 一方面 $(1-\epsilon)^{t}$ 是 在 $s_t$ 之前 t 个 timestep 完全按照 expert 的行为 (按照数据集) 走, 那么 基于此的 $s_t$ 条件概率 就是 训练集中 $s_t$ 的概率分布, 即 $p_{train}$
- 另一方面 如果一步走错, 则沿着 learned policy 分布 和 相应的 state 分布 双重概率 的马尔科夫链探索形成的总体的 state (未知) 概率分布 $p_{mistake}$
其他的 模仿学习思路
这里介绍了一个. 收集同一个目标的不同路径的数据很难, 因为智能体经常会由于随机性无法准确地到达同一个目标, 因此 这样的数据智能 专家来提供
既然智能体可能随机地到达不同的地方, 那么可以把所有结果不同的 决策过程 收集起来. 吧最终的结果也作为条件来构建条件变量. 因此称作 conditioned policy
Latent Plan, 就是 是用少量的 专家决策数据, 使用对智能体进行 behavior cloning, 在模仿过程中随机地又产生很多随即状态.
这些状态在这个目标中可能没有用, 但可能是其他目标的中间计划 (latent plan 隐计划). 如果把这个 状态 作为结果, 实际上是智能体无意间摸索出到达这个状态的 决策过程.
通过将目标也作为条件来构造条件概率, 就把这些随即摸索出来的 决策数据 也能使用起来。
如果将这个思路更进一步,可以不使用任何专家数据,而是使用一些 随机决策生成的数据 同样可以摸索出一些中间状态的路径,并基于此达到人类希望的目标
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。