This commit is contained in:
qiwang067
2021-05-01 23:24:55 +08:00
parent ed7b60fd5b
commit 826a625e13

View File

@@ -96,7 +96,7 @@
强化学习是有一定的历史的,只是最近大家把强化学习跟深度学习结合起来,就形成了`深度强化学习(Deep Reinforcemet Learning)`。深度强化学习 = 深度学习 + 强化学习。这里做一个类比,把它类比于这个传统的计算机视觉以及深度计算机视觉。
* 传统的计算机视觉由两个过程组成。
* 给一张图,我们先要提取它的特征,用一些设计好的特征(feature),比如说 HOG、DPM。
*一张图,我们先要提取它的特征,用一些设计好的特征(feature),比如说 HOG、DPM。
* 提取这些特征后,我们再单独训练一个分类器。这个分类器可以是 SVM、Boosting然后就可以辨别这张图片是狗还是猫。
* 2012 年过后,我们有了卷积神经网络,大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类。它可以实现这种端到端的训练,它里面的参数可以在每一个阶段都得到极大的优化,这样就得到了一个非常重要的突破。
@@ -120,10 +120,10 @@
![](img/1.17.png)
接下来给大家再看一些强化学习里面比较有意思的例子。
* **第一个例子是 [DeepMind 研发的一个走路的 agent](https://www.youtube.com/watch?v=gn4nRCC9TwQ)。**这个 agent 往前走一步,你就会得到一个 reward。这个 agent 有不同的这个形态,可以学到很多有意思的功能。比如怎么跨越这个障碍物,就像那个蜘蛛那样的 agent 。怎么跨越障碍物,像这个人有双腿一样, 这个 agent 往前走。以及像这个人形的 agent怎么在一个曲折的道路上面往前走。这个结果也是非常有意思这个人形 agent 会把手举得非常高,因为它这个手的功能就是为了使它身体保持平衡,这样它就可以更快地在这个环境里面往前跑,而且这里你也可以增加这个环境的难度,加入一些扰动,这个 agent 就会变得更鲁棒。
* **第二个例子是[机械臂抓取](https://ai.googleblog.com/2016/03/deep-learning-for-robots-learning-from.html)。**因为机械臂的应用自动去强化学习需要大量的 rollout所以它这里就有好多机械臂分布式系统可以让这个机械臂尝试抓取不同的物体。你发现这个盘子里面物体的形状、形态其实都是不同的这样就可以让这个机械臂学到一个统一的行为。然后在不同的抓取物下面都可以采取最优的一个抓取特征。你的这个抓取的物件形态存在很多不同一些传统的这个抓取算法就没法把所有物体都抓起来因为你对每一个物体都需要做一个建模这样的话就是非常花时间。但是通过强化学习你就可以学到一个统一的抓取算法在不同物体上它都可以适用。
* **第三个例子是 [OpenAI 做的一个机械臂翻魔方](https://www.youtube.com/watch?v=jwSbzNHGflM)。**这里它们 18 年的时候先设计了这个手指的一个机械臂,让它可以通过翻动手指,使得手中的这个木块达到一个预定的设定。人的手指其实非常精细,怎么使得这个机械手臂也具有这样灵活的能力就一直是个问题。它们通过这个强化学习在一个虚拟环境里面先训练,让 agent 能翻到特定的这个方向,再把它应用到真实的手臂之中。这在强化学习里面是一个比较常用的做法,就是你先在虚拟环境里面得到一个很好的 agent然后再把它使用到真实的这个机器人中。因为真实的机械手臂通常都是非常容易坏而且非常贵你没法大批量地购买。2019 年对手臂进一步改进了,这个手臂可以玩魔方了。这个结果也非常有意思,到后面,这个魔方就被恢复成了个六面都是一样的结构了。
* **第四个例子是[一个穿衣服的 agent](https://www.youtube.com/watch?v=ixmE5nt2o88) ,就是训练这个 agent 穿衣服。**因为很多时候你要在电影或者一些动画实现人穿衣服的场景,通过手写执行命令让机器人穿衣服其实非常困难。很多时候穿衣服也是一个非常精细的操作,那么它们这个工作就是训练这个强化学习 agent然后就可以实现这个穿衣功能。你还可以在这里面加入一些扰动然后 agent 可以抗扰动。可能会有失败的情况(failure case) agent 就穿不进去,就卡在这个地方。
1. **[DeepMind 研发的一个走路的 agent](https://www.youtube.com/watch?v=gn4nRCC9TwQ)。**这个 agent 往前走一步,你就会得到一个 reward。这个 agent 有不同的这个形态,可以学到很多有意思的功能。比如怎么跨越这个障碍物,就像那个蜘蛛那样的 agent 。怎么跨越障碍物,像这个人有双腿一样, 这个 agent 往前走。以及像这个人形的 agent怎么在一个曲折的道路上面往前走。这个结果也是非常有意思这个人形 agent 会把手举得非常高,因为它这个手的功能就是为了使它身体保持平衡,这样它就可以更快地在这个环境里面往前跑,而且这里你也可以增加这个环境的难度,加入一些扰动,这个 agent 就会变得更鲁棒。
2. **[机械臂抓取](https://ai.googleblog.com/2016/03/deep-learning-for-robots-learning-from.html)。**因为机械臂的应用自动去强化学习需要大量的 rollout所以它这里就有好多机械臂分布式系统可以让这个机械臂尝试抓取不同的物体。你发现这个盘子里面物体的形状、形态其实都是不同的这样就可以让这个机械臂学到一个统一的行为。然后在不同的抓取物下面都可以采取最优的一个抓取特征。你的这个抓取的物件形态存在很多不同一些传统的这个抓取算法就没法把所有物体都抓起来因为你对每一个物体都需要做一个建模这样的话就是非常花时间。但是通过强化学习你就可以学到一个统一的抓取算法在不同物体上它都可以适用。
3. **[OpenAI 做的一个机械臂翻魔方](https://www.youtube.com/watch?v=jwSbzNHGflM)。**这里它们 18 年的时候先设计了这个手指的一个机械臂,让它可以通过翻动手指,使得手中的这个木块达到一个预定的设定。人的手指其实非常精细,怎么使得这个机械手臂也具有这样灵活的能力就一直是个问题。它们通过这个强化学习在一个虚拟环境里面先训练,让 agent 能翻到特定的这个方向,再把它应用到真实的手臂之中。这在强化学习里面是一个比较常用的做法,就是你先在虚拟环境里面得到一个很好的 agent然后再把它使用到真实的这个机器人中。因为真实的机械手臂通常都是非常容易坏而且非常贵你没法大批量地购买。2019 年对手臂进一步改进了,这个手臂可以玩魔方了。这个结果也非常有意思,到后面,这个魔方就被恢复成了个六面都是一样的结构了。
4. **[一个穿衣服的 agent](https://www.youtube.com/watch?v=ixmE5nt2o88) ,就是训练这个 agent 穿衣服。**因为很多时候你要在电影或者一些动画实现人穿衣服的场景,通过手写执行命令让机器人穿衣服其实非常困难。很多时候穿衣服也是一个非常精细的操作,那么它们这个工作就是训练这个强化学习 agent然后就可以实现这个穿衣功能。你还可以在这里面加入一些扰动然后 agent 可以抗扰动。可能会有失败的情况(failure case) agent 就穿不进去,就卡在这个地方。
## Introduction to Sequential Decision Making
@@ -337,14 +337,9 @@ A: 针对是否需要对真实环境建模,强化学习可以分为有模型
Learning 和 Planning 是序列决策的两个基本问题。
### Reinforcement Learning
![](img/learning.png)
在强化学习中环境初始时是未知的agent 不知道环境如何工作agent 通过不断地与环境交互,逐渐改进策略。
### Planning
![](img/planning.png)
在 plannning 中环境是已知的我们被告知了整个环境的运作规则的详细信息。Agent 能够计算出一个完美的模型并且在不需要与环境进行任何交互的时候进行计算。Agent 不需要实时地与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解。
@@ -680,3 +675,5 @@ print('平均回合奖励 = {}'.format(np.mean(episode_rewards)))