机器学习之二十二(读书笔记)

  • Deep Reinforcement Learning(深度强化学习)

三十五、Deep Reinforcement Learning(深度强化学习)

AI = RL + DL
  
1、介绍
  在 Reinforcement Learning里面会有一个Agent和一个Environment,这个Agent会有Observation(也叫State)去看这个Environment的种种变化,Agent会做一些事情,它做的事情就叫做Action,会影响环境,因为它对环境造成一些影像所以它会得到Reward,这个Reward就告诉它说这个影响是好的还是不好的。
在这里插入图片描述
  比如机器看到一杯水,做出打翻水的动作,environment说别这样做;
在这里插入图片描述
  再比如,机器看到一滩水,把它打扫干净,反馈说谢谢。
在这里插入图片描述
  机器的目标就是它要去学习采取action,可以让reward可以被maximize。
  
  以AlphaGo为例子,一开始machine的observation是棋盘(可以用一个19x19的matrix来表示它),接下来take action,落下一颗棋子到棋盘上,environment(在这里是你的对手)因为你落子的位置受到影响而作出反应。
在这里插入图片描述
  机器看到另一个observation以后它就要决定它的action,再落子在另外一个位置…
  下围棋是一个比较困难的reinforcement learning task,因为在多数的时候你得到的reward都是0,因为你落子下去通常什么也没发生,只有在你赢了或者输了才会得到reward。只有在少数情况下才能得到reward,这是一个困难的问题。
在这里插入图片描述
  
2、与supervised learning比较training的方法
  以下围棋为例:
  (1)Supervised:
  告诉机器看到下图左的盘式你就落子在5-5位置,看到下图右的盘式就落子在3-3位置。
在这里插入图片描述
  Supervised Learning不足的地方是:当我们会reinforment learning的时候往往是连人都不知道正确答案是什么。所以这个task不太容易做Supervised Learning。机器可以看着棋谱学,但是棋谱上面的应对不见得是最optimal的,所以用Supervised Learning学出来的Agent不一定是真正最厉害的Agent。Supervised Learning就是从老师那里学,老师告诉它说看到什么样的盘式下到什么位置。
  
  (2)Reinforcement:
  让机器找某个人跟它下围棋,下完以后如果赢了它就得到positive reward,输了就得到negative reward。没有人告诉它下的过程中哪些步骤是好的,哪些步骤是不好的,它要自己想办法去知道,在Reinforcement Learning里面你是从过去的经验去学习的。
在这里插入图片描述
  在做Reinforcement Learning下围棋这个task里面,机器需要大量的training的example。AlphaGo的解法就是learn两个machine让它们自己互下。
在这里插入图片描述
  
  Reinforcement Learning也可以被用在chat-bot上面。chat-bot就是learn一个seq2seq的model,input是一句话,output是机器的回答。如果用
  (1)Supervised:
  告诉machine,如果有人跟你说“hello”,你就要讲“hi”;如果有人跟你说“bye bye”,你就要讲“goodbye”。
在这里插入图片描述
  (2)Reinforcement:
  让machine胡乱去跟人讲话,如果人生气了,machine就会知道它的某句话可能讲的不太好,但是没有人告诉它说哪句话讲得不好,要自己想办法去发掘这件事情。
在这里插入图片描述
  怎么做?
  learn两个Agnet,让它们互讲,对话完还是要有人告诉它们说它们讲得好还是不好。
在这里插入图片描述
  问题是无法判断这个对话到底是好还是不好,这是一个尚待克服的问题。
  文献中的方法说(不一定是最好的):人去写一些规则,这个规则会去检查对话记录,如果讲的好就给它positive reward,讲的不好就给它negative reward。
在这里插入图片描述
3、Applications
  更多applications:
  (1)Interactive retrieval(交互式检索);
在这里插入图片描述
  
  Reinforcement Learning现在最常见的application就是打电玩:
在这里插入图片描述
  machine像人一样去打电玩,machine看到的就是pixel,看到这个画面它要采取什么action,是它自己决定的。
在这里插入图片描述
  
  举例来说,让machine玩space invader:(1)首先machine会看到一个observation,这个observation就是荧幕画面里的pixel,开始的observation就叫它 s 1 s_1 s1,machine看到这个画面以后它要决定它take哪个action(只有三个:往右,往左,fire),每次machine take一个action以后它会得到一个reward(就是左上角的分数),假设这次的action是往右移,那么不会得到任何的reward,reward r 1 r_1 r1=0。
  (2)machine take完这个action以后它的action会影响环境,所以machine看到的observation就会不一样了,现在machine看到的observation叫做 s 2 s_2 s2,这个时候machine决定take射击这个action。假设它成功杀了一个外星人,它就会得到一个reward r 1 r_1 r1=5。
  (3)杀了一个外星人之后observation就变了,这个process就一直进行下去,直到某一天在第T个回合的时候得到的reward r T r_T rT以后,进入了一个state,这个state是一个terminal state,它会让这个游戏结束。
在这里插入图片描述
在这里插入图片描述
  这个游戏开始到结束叫做一个episode(插曲)。对machine来说做的事情就是不断去玩这个游戏,学习怎么在这个episode里面maximize它可以得到的reward。
  
  
4、Reinforcement Learning的难点
  (1)Reward delay
  比如在space invader这个游戏里面,只有开火才能得到reward。但是这样得到的结果就是machine疯狂开火,对它来说往左移往右移没有任何reward,它不想这样做,实际上,往左移往右移这些moving对开火能不能得到reward这件事情是有很关键的影响的。往左移往右移本身不会让你得到reward,但是可以在未来帮助你得到reward。machine需要有远见。
  (2)Agent所采取的行为会影响它之后所看到的东西
  Agent需要学会去探索这件世界。比如说,如果在这个space invader里面你的Agent只会往左移往右移,从来不开火,那它永远不知道开火可以得到reward。
  
  
Outline:
  reinforcement learning的方法分成两大块:(1)Policy-based ;(2)Value-based
  Policy-based 方法里面会learn一个负责做事的actor;Value-based方法里面会learn一个不做事的critic。但是我们要把actor和critic加起来叫做Actor-Critic方法。
  model-based方法预测未来会发生什么事。
在这里插入图片描述
  AlphaGo用到的方法:
在这里插入图片描述
  
(一)Policy-based Approach(learn a actor)
  所谓的actor就是一个function,这个actor通常写成 π \pi π,这个function的input就是machine看到的observation,output就是machine要采取的action。我们要透过reward帮助我们找出这个function。
  Action = π \pi π(Observation)
  
  找这个function有三个步骤:
在这里插入图片描述
  如果你的actor是一个neural network,就是在做Deep Reinforcemnt Learning。
在这里插入图片描述
  machine有几个可以采取的action,output就有几个dimension。假设现在在玩space invader这个游戏,我们可以采取的action就是左移,右移和开火。output layer就只需要三个neuron。这个neural network怎么决定要采取哪一个action呢?
  通常的做法是你把image丢到network里面去,它可以告诉你每一个output dimension所对应的分数。
在这里插入图片描述
  在做policy gradient时通常会假设你的actor是stochastic(随机的)。
  那用neural network当作actor有什么好处?传统的做法是直接存一个table,这个table告诉我说看到这个observation我就采取这个action,看到另外一个observation我就采取另外的action。但是这种方法没办法做到玩电玩。
  neural network的好处是它可以举一反三,有些画面就算machine从来没有看过,它也有可能可以得到一个合理的结果。
  
  我们要决定一个function的好坏也就是我们要决定一个actor的好坏。在supervised learning里面我们决定function好坏的方式如下:
  给我们一个neural network,它的参数假设已知为 θ \theta θ
在这里插入图片描述
  我们需要找一个参数去minimize这个total loss。
  
  在Reinforcement Learning里面一个actor好坏的定义是非常类似的:
在这里插入图片描述
  我们需要去maximize整个游戏玩完以后得到的total reward。但是就算拿同一个actor玩这个游戏,每次玩完以后 R θ R_\theta Rθ 都会是不一样的。由于这个游戏有随机性,我们希望不是maximize某一次玩游戏的时候得到的 R θ R_\theta Rθ,我们希望去maximize的其实是 R θ R_\theta R

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值