C. 人工智能 — 强化学习 - 概述
概述
- 思路
- Agent -> Action -> Environment
- Environment -> Reward -> Agent
- 难点
- 大部分情况下,reward = 0
- 难点
- 应用场景
- Alpha Go:下围棋
- 聊天机器人
- 服务器节电:DeepMind、Google
- 即时战略游戏
- 难点
- Reward delay
- Agent的行为会影响环境
- 难点
- 分类
- On-policy:Agent一边学习,一边跟环境互动
- Sample出来的data不能复用
- Off-policy:Agent通过观察别人跟环境互动来学习
- Sample出来的data可以复用
- 算法
- Proximal Policy Optimization(PPO)
- PPO2 algorithm
- On-policy:Agent一边学习,一边跟环境互动
Policy-based
- 概述
- policy-based是将计算出来的期望reward当作选择action的概率,期望的reward越大,对应的action被选中的概率也就越大,但不一定就会被选中,只是概率。典型代表Policy Gradient。
- Actor
- 概述
- Actor是以s为输入,输出对应的action和其概率。
- Learning an Actor
- 早期是一张表格
- 最新的技术是:NN
- Action 的Reward,由于游戏具有一定的随机性,因此可以计算他的期望值
- 需要拿整盘棋结局的Reward,而不是某一个Action的Reward
- Reward 也可以是一个NN
- 寻找一个函数:Gradient Ascent
- 缺点
- 由于无法sample到如此多的样本,因此Reward具有不稳定性
- 优化
- Add a Baseline(Normalization)
- 解决 Reward都是正的问题或者没有出现的Action概率会不断减少的问题,使得Reward 有正有负
- Assign Suitable Credit
- 问题
- 输掉的游戏,并不是所有的Action都是好的
- 赢的游戏,也不是所有的Action都是不好的
- 理论上 Sample 的样本,不可能多到把这些情况都区分出来
- 思路
- 每个Action的reward,不再是整场的reward,而是这个Action之后所有的reward的总和
- 计算当前Action的reward,加入加权值的计算,离Action越远,reward影响程度越小
- 问题
- Add a Baseline(Normalization)
- 缺点
- 概述
Value-based
- 概述
- value-based是根据计算出来的期望reward,选择最大的期望reward所对应的action。这个Reward 指的是 后续所有的Action的期望的Reward
- Critic
- 概述
- Critic则是以s为输入,输出对应的reward期望值。
- Critic 也可以是NN
- Monte-Carlo
- 步骤
- 先做大量的观察,计算样本 StateN 对应的 cumulated reward GN,可以通过NN训练处一个模型
- 在执行的时候,输入StateA,输出值尽可能的靠近GA,输入StateB,输出值尽可能的靠近GB
- 缺点
- 使用这种方式的时候方差很大,因为一场完整的游戏过程中有很多的偶然因素影响。即使你使用完全一样的策略,最后得到的Ga也会不一样。
- 步骤
- Temporal - difference approach
- Monte-Carlo的方法,比较把游戏进行到结束。而这种方式不需要将游戏玩到结束。
- 步骤
- 先做大量的观察,计算样本 StateN 对应的 cumulated reward GN,可以通过NN训练处一个模型
- 缺点
- 因为这里训练的是r的值,而r只是单独的一步,所以它的方差会比较小。这里也有一个问题,就是你的V VV值不一定能够估计的准,因此也会造成误差。
- 概述
- Another Critic
- 概述
- 输入 state,action,输出对应的reward的期望值
- 概述
- Q-Learning
Actor + Critic
- 算法
- Actor + Critic
- 原理
- 用Q-learning当中的V(即时值)和Q(均值/期望值)来替换policy gradient公式里面的累积reward和baseline
- 缺点
- 在这个时候我们需要估计两个network,Q和V,这会导致整个模型的结果更加不稳定,因此引入advantage actor-critic
- 原理
- Advantage Actor-Critic
- 原理
- 先用一个actor π\piπ 与环境做互动,利用TD或MC的方法学习V值
- 根据学到的V值对actor进行更新π→π′\pi \rightarrow \pi'π→π′,替换原来的π\piπ 之后继续与环境互动
- 重复上述步骤
- 注意
- actor π(s)\pi(s)π(s)'s 和 critic Vπ(s)V^\pi(s)Vπ(s) 网络的前几层的参数是可以共享的,因为他们具有相同的输入s,在对s的处理上可以共享该部分参数。
- 使用output entropy 作为 π(s)\pi(s)π(s) 的正则项的时候,最好用较大的entropy
- 原理
- A3C(Asynchronous Advantage Actor-Critic)
- 效率来源: multi-workers
- 原理
- 每个worker都会copy全局参数
- 每个worker都与环境进行互动,并得到sample data
- 计算梯度
- 更新全局参数(直接更新,不管之前的全局参数是否被更新)
- Pathwise Derivative Policy Gradient
- 特点
- 对于最原始的actor-critic,critic只会告诉actor,某个行动是好的还是坏的。
- 而这里引入的Pathwise Derivative Policy Gradient不仅仅会告诉actor某一个action的好坏,还会告诉actor应该采取哪一个action(使用以下训练出来的actor告知)
- 原理(类似 GAN)
- Actor:生成Action
- Q-Learning:生成 Qvalue
- 特点
- Actor + Critic
稀疏Reward(Sparse Reward)
- 难点
- 当reward的分布非常分散时,对于机器而言学习如何行动会十分困难。
- 比如说要让一个机器人倒水进水杯里,如果不对机器人做任何指导,可能它做很多次尝试,reward都一直是零。(不知道杯子在哪,不知道拿着手上的水壶干嘛,不知道水壶靠近杯子之后应该怎么做)因此,在训练或指导一个actor去做你想要它做的事情时,需要进行reward shaping
- 思路
- Reward Shaping(Curiosity)
- 原理
- 在原来的模型当中,actor与环境做互动,根据环境给的state,采取一定的action,并得到reward。而新的模型引入了一个新的函数,ICM(自定义的Reward,而不是环境给的Reward)
- 网络结构
- 将提取的ata_tat 和sts_tst 的特征作为输入,输出 st+1s_{t+1}st+1 的提取特征的估计。然后真实的 st+1s_{t+1}st+1 的提取特征用来与估计值比较,得到两者之间的差别。两者差别越大则reward rir^iri 越大,也就是说,模型鼓励actor去冒险。
- 用来提取与action相关的游泳的特征,输入 sts_tst 和st+1s_{t+1}st+1 的 ϕ\phiϕ 值,输出估计的action atˆ\hat{a_t}at^,如果估计的action和真实的action ata_tat 接近,则 ϕ\phiϕ 可以用来提取有用的特征。
- 当没有network 2的时候,由network 1给出来的较大的reward意味着 st+1s_{t+1}st+1 很难预测,模型会鼓励actor去冒这个险,但有的时候很难预测的这个state可能是一点都不重要的,因此需要引入network 2来进行重要性计算。比如说,在一个游戏中,对于游戏背景并不会进行太多的state的规定,如果有的时候机器学习到站在一棵树下会导致state难以预测,那么就可能会一直站在树下,但是这一行为对于游戏而言完全没有意义,因此不予考虑。
- 原理
- Curriculum Learning(课程式学习)
- 原理
- 意味着学习的任务从简单到困难(为机器设计一套课程计划)
- 比如前文提到的机器人倒水的例子,最开始可以人引导机器人手臂到杯子的附近,教它做倒水的动作,之后再慢慢改变水杯,水壶等变量,让机器从简单学到复杂。
- Reverse Curriculum Generation
- Given a goal state Sg
- Sample some state S1 “close” to Sg
- Start from state S1, each trajectory has reward R(S1)
- Delete S1 whose reward is too large(alreay learned)or too small(too difficult at this moment)
- Sample S2 from S1, start from S2
- 原理
- 级联强化学习(Hierarchical Reinforcement Learning)
- 原理
- 如果低一层的agent没法达到目标,那么高一层的agent会受到惩罚(高层agent将自己的愿景传达给底层agent)
- 如果一个agent到了一个错误的目标,那就假设最初的目标本来就是一个错误的目标(保证已经实现的成果不被浪费)
- 原理
- Reward Shaping(Curiosity)
模仿学习(Imitation Learning)
- 问题
- 机器也可以和环境进行互动,但是不能明显的得到reward
- 在某些任务中很难定义reward
- 人为涉及的奖励可能会得到不受控制的行为
- 思路
- Behavior Clone
- Dataset Aggregation:
- 通过行为克隆得到一个 actor π1
- 使用 π1和环境进行互动
- 让专家对观察对象作标签 π1
- 使用新的数据来训练 π2
- 缺点
- agent可能会复制专家所有的动作,包括一些无关的动作。如果机器只有有限的学习能力,可能会导致它复制到错误的行为。有些行为必须被复制,但有些可以被忽略,但监督学习对所有的误差都平等处理。
- 在监督学习中,我们希望训练数据和测试数据有相同的分布,但是在行为克隆中,训练数据来自于专家的分布,而测试数据来自于actor,因为专家的 π 和actor的是不一样的,生成的state也是不一样的,分布可能会不相同,因此引入 IRL
- Dataset Aggregation:
- Inverse Reinforcement Learning(Learning by demonstration)
- 特点
- 没有Reward
- 这里的模型和GAN十分相似,actor就是generator,reward function就是discriminator。
- 适用场景
- 很多时候,很难定义Reward
- 原理(类似GAN) — 确保 专家总是正确的/最厉害的
- 根据 专家经验 + Environment + Inverse Reinforcement Learning,推导出Reward Function
- 生成的reward function需要满足专家的累积reward总是比actor的大
- 使用reward function来训练一个新的actor替换原来旧的actor
- 重复上述步骤.
- 使用场景
- Parking Lot Navigation
- Robot
- 特点
- Third Person Imitation Learning
- Behavior Clone