IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习之二十二(读书笔记) -> 正文阅读

[人工智能]机器学习之二十二(读书笔记)

  • 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。
在这里插入图片描述
2、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。
??
??
3、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θ?期望值。我们希望这个期望值越大越好,这个期望值就衡量了某一个actor的好坏。
??
??这个期望值实际上要怎么计算出来呢?
??假设一场游戏就是一个trajectory(轨迹) τ \tau τ,它是一个sequence,里面包含了: τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . , s T , a T , r T } \tau = \begin{Bmatrix} s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T \end{Bmatrix} τ={s1?,a1?,r1?,s2?,a2?,r2?,...,sT?,aT?,rT??}
?? R ( τ ) R(\tau) R(τ)代表说在这款游戏里面最后得到的total reward: R ( τ ) = ∑ t = 1 T r τ R(\tau) = \sum_{t = 1}^{T} r_\tau R(τ)=t=1T?rτ?
??当我们用某一个actor去玩这个游戏的时候,每一个 τ \tau τ都会有一个出现的几率, τ \tau τ代表某一个可能的从游戏开始到结束的过程。每一个游戏出现的过程可以用一个几率来描述它:
在这里插入图片描述
??那么 R θ R_\theta Rθ?的期望值就写成:
在这里插入图片描述
??实际上要穷举所有的 τ \tau τ是不可能的,所以让actor去玩这个游戏玩N场,得到 { τ 1 , τ 2 , . . . , τ N } \begin{Bmatrix} \tau^1,\tau^2,...,\tau^N \end{Bmatrix} {τ1,τ2,...,τN?},玩N场这个游戏就好比你从 P ( τ ∣ θ ) P(\tau | \theta) P(τθ)去sample出N个 τ \tau τ
??所以期望值可以改写成:
在这里插入图片描述
??
??知道怎么衡量actor,接下来就看怎么选一个最好的actor:Gradient Ascent
在这里插入图片描述
??实际运算过程:
在这里插入图片描述
??
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
??在某一次玩游戏时,看到observation时采取某一个action而最后整个游戏得到了好的结果,我们就要调整我们的参数让在这个observation采取这个action的几率变大。反之,变小。在这里插入图片描述
??
??如果 R ( τ n ) R(\tau^n) R(τn)永远是正的会发生什么事?
??在理想的状况下,这件事情不会构成问题,会做normalization:
在这里插入图片描述
??但是在实际情况中,某一个state可以采取a,b,c三个action,但是,有可能只sample到b和c的action,a不会被sample到,就会变成问题。所以我们希望 R ( τ n ) R(\tau^n) R(τn)有正有负。
在这里插入图片描述
??避免 R ( τ n ) R(\tau^n) R(τn)都是正的做法:让 R ( τ n ) R(\tau^n) R(τn)减掉一个bias,这个bias要自己设计,如果 R ( τ n ) R(\tau^n) R(τn)都是正的,减掉正的bias;如果今天的trajectory是特别好的,好过baseline,才把action的几率增加;小于baseline把action的几率减少,这样就不会造成某个action没被sample以致它的几率变小:
在这里插入图片描述
??
??实际做的时候到底是怎么做的?
??先有一个actor,它的参数是 θ \theta θ,它一开始random initialize,拿这个初始的 θ \theta θ去玩N次游戏,收集到N个trajectory:
在这里插入图片描述
??有了这些data以后就拿这些data去update你的参数 θ \theta θ
在这里插入图片描述
??有了新的actor后再去玩N次游戏,得到不太一样的结果,再收集起来去调你的model,这样循环。
??
??考虑另外一个case:假设现在要做的是一个分类的问题,我们现在的actor当作是一个classifier,这个classifier做的事情是被给一个画面 s s s,它分类说我们现在要采取哪个action,如果可以采取三个action,就是说是一个3类别的分类问题。在train classifier时要给你的network一个target:
在这里插入图片描述
??通过以上过程解释这个式子:
在这里插入图片描述
??先把 R ( τ n ) R(\tau^n) R(τn)拿掉,当作等于1,那么
在这里插入图片描述
??的意思是我们的training data里面现在有一个 ( s 1 1 , a 1 1 ) (s_1^1,a^1_1) (s11?,a11?),我们假设 a 1 1 a_1^1 a11? = left,我们要做的事情就是我们把 s 1 1 s^1_1 s11?丢到network里面得到的三个action的几率跟[1,0,0]越接近越好:
在这里插入图片描述
??所以这就变成了一个分类的问题,实际上我们在update上面蓝框的式子的时候我们真正在做的事情是我们希望有一笔training data,它的input是 s 1 1 s_1^1 s11?,target就是 a 1 1 a^1_1 a11?,和原来的network一样。
??但是有一个不一样的地方是我们前面有了reward,我们会把每一个example前面都乘上 R ( τ n ) R(\tau^n) R(τn)
在这里插入图片描述
??

(二)Value-based Approach(Learning a Critic)
??Critic就是我们learn一个neural network,它不做事。也可以从Critic里面得到一个actor,这个actor就是Q-learning。
??Critic就是learn一个function,这个function可以告诉你说我们现在看到某一个observation时这个observation有多好。
??比如说今天看到下图左边的observation,把它丢到Critic里面去,它可能会output一个很大的正值,看到下图右边的observation可能会得到相对比较小的值。
在这里插入图片描述
??总之,actor和critic可以合在一起train,好处就是比较强。

??
??
??


本文是对blibli上李宏毅机器学习2020的总结,如有侵权会立马删除。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:29:25  更:2021-10-23 12:32:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:34:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码