持续创造,加快成长!这是我参与「日新计划 6 月更文应战」的第18天,点击检查活动详情
- 作者:韩信子@ShowMeAI
- 教程地址:www.showmeai.tech/tutorials/3…
- 本文地址:www.showmeai.tech/article-det…
- 声明:版权一切,转载请联系渠道与作者并注明出处
- 保藏ShowMeAI检查更多精彩内容
本系列为 斯坦福CS231n 《深度学习与核算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频能够在 这儿 检查。更多资料获取办法见文末。
导言
在监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)之外,咱们还有其他一类机器学习算法,叫做「强化学习」。
- 监督学习:从外部监督者提供的带标示练习会集进行学习(使命驱动型)
- 无监督学习:寻觅未标示数据中隐含结构的进程(数据驱动型)。
- 强化学习:「打听」与「开发」之间的折中权衡,智能体有必要开发已有的阅历来获取收益,一起也要进行打听,使得未来能够取得更好的动作挑选空间(即从过错中学习)。强化学习也能够了解为有推迟标签(奖赏)的学习办法。
现在强化学习在包含游戏,广告和引荐,对话体系,机器人等多个范畴有着非常广泛的运用。咱们会在下面再展开介绍。
本篇重点
- 强化学习概念与运用
- 马尔可夫决议计划进程
- Q-Learning 算法
- DQN(Deep Q Network)算法
1.强化学习介绍与运用
1.1 强化学习介绍
强化学习是一类对方针导向的学习与决议计划问题进行了解和自动化处理的算法。它强调智能体经过与环境的直接互动来学习,无需像监督学习一样密布的样本级标签标示,经过奖赏来学习合理的战略。
强化学习包含2个能够进行交互的对象:智能体(Agnet) 和 环境(Environment) ,它们的界说与介绍如下:
- 智能体(Agent) :能够感知环境的状况(State) ,并依据反应的奖赏(Reward) 学习挑选一个合适的动作(Action) ,咱们期望它能最大化长时刻总收益。
- 环境(Environment) :环境会接纳智能体履行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号反应给智能体。环境对智能体来说是一套相对固定的规则。
强化学习体系在智能体(Agnet) 和环境(Environment) 之外,还包含其他中心要素:战略(Policy) 、报答函数(Reward Function) 、价值函数(Value Function) 和环境模型(Environment Model)。
上述中心要素中「环境模型」是可选的。
- 战略(Policy) :智能体在环境中特定时刻的行为办法,战略能够视作环境状况到动作的映射。
- 报答函数(Reward Function) :智能体在环境中的每一步,环境向其发送的1个标量数值,指代「收益」。
- 价值函数(Value Function) :表明了从久远的角度看什么是好的。一个状况的价值是一个智能体从这个状况开端,对将来累积的总收益的期望。
- 环境模型(Environment Model) :是一种对环境的反应形式的模仿,它允许对外部环境的行为进行推断。
1.2 强化学习运用
1) 游戏
AlphaGo 是于 2014 年开端由 Google DeepMind 开发的人工智能围棋软件。AlphaGo 在围棋比赛中打败人类顶级选手取得成功,它包含了很多强化学习的算法运用,中心进程是运用蒙特卡洛树查找(Monte Carlo tree search),借助估值网络(value network)与走棋网络(policy network)这两种深度神经网络,经过估值网络来评价很多选点,并经过走棋网络挑选落点。
AlphaStar 是由 DeepMind 开发的玩 星际争霸 II 游戏的人工智能程序。它能够经过模仿学习星际争霸上玩家所运用的基本微观和宏观战略。这个初级智能体在 95% 的游戏中打败了内置的「精英」AI 关卡(相当于人类玩家的黄金级别)。
AlphaStar 神经网络结构将 Transformer 结构运用于模型单元(类似于联系深度强化学习),结合一个深度 LSTM 中心、一个带有 pointer network 的自回归战略前端和一个会集的值基线。超强的网络规划使得其适合长时刻序列建模和大输出空间(如翻译、语言建模和视觉表明)的应战。它还还集成了多智能体学习算法。
OpenAI Five 是一个由 OpenAI 开发的用于多人视频游戏 Dota 2 的人工智能程序。OpenAI Five 经过与自己进行超越 10,000 年时长的游戏进行优化学习,终究取得了专家级其他体现。
Pluribus 是由 Facebook 开发的第一个在六人无限注德州扑克中打败人类专家的 AI 智能程序,其初次在杂乱游戏中打败两个人或两个团队。
2) 广告和引荐
在淘宝京东等电商范畴与字节跳动等信息流产品里,也能够见到强化学习的有用运用,它使得广告投进与引荐更具智能化。
3) 对话体系
Alphago 的成功使人们看到了强化学习在序列决议计划上的巨大进步,这些进步进而推动了深度强化学习算法在自动语音和自然语言了解范畴的研讨和运用,探究处理自然语言了解及响应等展开对话中存在的应战。依据深度强化学习的 Bot 具有扩展到当时尚无法涉足范畴的才能,适用于开放域聊天机器人的场景。
4) 机器人
杂乱不知道环境下智能感知与自动操控是现在机器人在操控范畴的研讨热点之一,在高维接连状况-动作空间中,运用深度强化学习进行机器人运动操控有很不错的效果,终究能够运用在自主导航、物体抓取、步态操控、人机协作以及群体协同等很多使命上。
2.从游戏说起强化学习
首先,让咱们简单介绍一下 Breakout 这个游戏。在这个游戏中,你需求操控屏幕底端的一根横杆左右移动,将飞向底端的球反弹回去并铲除屏幕上方的砖块。每次你击中并铲除了砖块,你的分数都会增加——你取得了奖赏。
假定你想教神经网络模型玩这个游戏,模型的输入是游戏机屏幕像素所构成的图片,输出是三种动作:向左,向右以及开战(把球射出)。把这个问题建模为分类问题是很合理的——关于每个屏幕画面,你都需求进行决议计划:是左移,右移,仍是开战。
分类的建模办法看起来很直接。不过,你需求很多练习数据练习你的分类模型。传统的做法是找一些专家让他们玩游戏而且记载他们的游戏进程。
但人类必定不是这样玩游戏的,咱们不需求有人站在咱们背面告诉咱们向左仍是向右。咱们只需求知道在某些状况下咱们做了正确的动作而且得分了,其他的依托咱们自身的学习机制完成。这个问题便是强化学习测验处理的问题。
强化学习处于监督学习与无监督学习的中心地带。在监督学习中,每个练习实例都有一个正确标签;在无监督学习中,练习实例并没有标签。在强化学习中,练习实例有稀少并延时的标签——奖赏。依据奖赏,强化学习中的智能体能够学习怎样对环境做出正确的反映。
上述的观念看起来很直观,可是实际存在很多应战。举例来讲,在 Breakout 这个游戏中,击中砖块而且得分和前一时刻怎样移动横杆没有直接联系。最相关的是前面怎样将横杆移动到正确方位并反弹球。这个问题叫做信誉分配问题(credit assignment problem),即:建模取得奖赏之前的哪些动作对取得奖赏产生奉献以及奉献的巨细。
假如你现已取得了某种战略而且经过它得了不少奖赏,你应该继续坚持这种战略仍是试试其他的或许取得更高分的战略?仍举 Breakout 这个游戏为例,在游戏开端时,你把横杆停在左边并把球射出去,假如你不移动横杆,你总是能得 10 分的(当然得分的下一秒,你就死了)。你满足于这个得分吗,或许你想不想再多得几分?这种现象有一个专门的名词——探究-运用窘境(exploration-exploitation dilemma) 。决议计划时应该一直延用现有的战略仍是试试其他更好的战略?
强化学习是人类(或许更一般的讲,动物)学习的一种重要形式。父母的鼓舞,课程的分数,作业的薪水——这些都是咱们日子中的奖赏。劳绩分配问题以及探究-运用窘境在咱们日常日子作业中常常产生。这便是咱们研讨强化学习的原因。而关于强化学习,游戏是测验新办法的最佳的沙盒。
3. 马尔科夫决议计划进程
下面,咱们的问题是怎样形式化界说强化学习问题使其支撑推断。最常用的表明办法是马尔科夫决议计划进程。
假想你是一个智能体(agent),面临某种场景(比方说 Breakout 游戏)。你所在的环境能够界说为状况(state)(比方横杆的方位,球的方位,球的方向,当时环境中的砖块等等)。
智能体能够在环境中采纳一些动作(actions)(比方向左或向右移动横杆)。这些动作会导致一些奖赏(reward)(比方分数的增加)。智能体采纳动作将导致新的环境,也便是新的状况。在新的状况下,智能体能够继续采纳动作,循环往复。你采纳行动的准则叫做战略(policy)。
通常来讲,环境是很杂乱的,智能体的下一状况或许带有一定的随机性(比方当你失去一个球发射另一个球时,它的方向是随机的)。
一系列的状况、动作、以及采纳动作的规则构成了一个马尔科夫决议计划进程(Markov decision process)。一个马尔科夫决议计划进程(比方一局游戏)由一串有限个数的状况、动作、反应组成,形式化地表明为:
其间 sis_i 代表状况,aia_i 代表动作,ri+1r_{i+1} 代表进行动作后取得的奖赏,sns_n 是停止状况。一个马尔科夫决议计划进程建立在马尔科夫假定上,即下一时刻的状况 si+1s_{i+1} 只和当时状况 sis_i 和动作 aia_i 有关,和之前的状况及动作无关。
4. 打折的未来奖赏
为了在长时刻决议计划进程中体现的更好,咱们不但要考虑采纳一个动作后的即时奖赏,也要考虑这个动作的未来奖赏。那么问题来了,咱们应该怎样建模这个未来奖赏?
给定一个马尔科夫决议计划进程,它对应的奖赏总和很容易用如下办法核算:
而 tt 时刻的未来奖赏能够表明为:
因为智能体所在的环境非常杂乱,咱们甚至无法确定在两次采纳相同动作,智能体能够取得相同的奖赏。智能体在未来进行的动作越多,取得的奖赏越不相同。所以,咱们一般选用一种「打折的未来奖赏」作为 tt 时刻未来奖赏的替代。
其间 \gamma 是 00 到 11 之间的折扣因子。这个 \gamma 值使得咱们更少地考虑哪些更久远未来的奖赏。数学直觉好的读者能够很快地看出 RtR_t 能够用 Rt+1R_{t+1} 来表明,然后将上式写成一种递推的形式,即:
假如 \gamma 是 00,咱们将会采纳一种短视的战略。也便是说,咱们只考虑立刻奖赏。假如咱们期望在立刻奖赏与未来奖赏之间寻求一种平衡,咱们应该运用像 0.90.9 这样的参数。假如咱们所在的环境关于动作的奖赏是固定不变的,也便是说相同的动作总会导致相同的奖赏,那么 \gamma 应该等于 11。
好的战略应该是:智能体在各种环境下选用最大(打折的)未来奖赏的战略。
5. Q-learning算法
5.1 Q-Learning算法讲解
在 Q-learning 中,咱们界说一个 Q(s,a)Q(s, a) 函数,用来表明智能体在 ss 状况下选用 aa 动作并在之后采纳最优动作条件下的打折的未来奖赏。
直观讲,Q(s,a)Q(s, a) 是智能体「在 ss 状况下采纳 aa 动作所能取得的最好的未来奖赏」。因为这个函数反映了在 ss 状况下采纳 aa 动作的质量(Quality),咱们称之为Q-函数。
这个界说看起来特别古怪。咱们怎样或许在游戏进行的进程中,只凭一个状况和动作估量出游戏完毕时的分数呢?实际上咱们并不能估量出这个分数。但咱们能够从理论上假定这样函数的存在,而且把重要的作业说三遍,「Q-函数存在,Q-函数存在,Q-函数存在」。Q-函数是否存在呢?
假如你还不相信,咱们能够在假定Q-函数存在的状况下想一想会产生什么。假定智能体处在某个状况而且考虑究竟应该选用 aa 动作仍是 bb 动作,你当然期望选取使游戏完毕时分数最大的动作。假如你有那个奇特的Q-函数,你只要选取Q-函数值最大的动作。
上式中,\pi 表明在 ss 状况下选取动作的战略。
然后,咱们应该怎样取得Q-函数呢?首先让咱们考虑一个搬运 <s, a, r, s’>
。咱们能够选用与打折的未来奖赏相同的办法界说这一状况下的Q函数。
这个公式叫贝尔曼公式。假如你再想一想,这个公式实际非常合理。关于某个状况来讲,最大化未来奖赏相当于最大化立刻奖赏与下一状况最大未来奖赏之和。
Q-learning 的中心思维是:咱们能够经过贝尔曼公式迭代地近似Q-函数。最简单的状况下,咱们能够选用一种填表的办法学习Q-函数。这个表包含状况空间巨细的行,以及动作个数巨细的列。填表的算法伪码如下所示:
initialize Q[numstates,numactions] arbitrarily
observe initial state s
repeat
select and carry out an action a
observe reward r and new state s'
Q[s,a] = Q[s,a] + (r + maxa' Q[s',a'] - Q[s,a])
s = s'
until terminated
Al gorithm 5 Q-learning 迭代算法
其间 \alpha 是在更新 Q[s,a]Q[s, a] 时,调节旧 Q[s,a]Q[s, a] 与新 Q[s,a]Q[s, a] 份额的学习速率。假如=1\alpha=1, Q[s,a]Q[s, a] 就被消掉,而更新办法就彻底与贝尔曼公式相同。
运用 maxa’Q[s’,a’]max_{a’}Q[s’, a’] 作为未来奖赏来更新 Q[s,a]Q[s, a] 只是一种近似。在算法运转的初期,这个未来奖赏或许是彻底过错的。可是跟着算法迭代, Q[s,a]Q[s, a] 会越来越准(它的收敛性现已被证明)。咱们只要不断迭代,终有一天它会收敛到实在的Q函数的。
5.2 Q-Learning事例
咱们来经过一个小事例了解一下 Q-Learning 算法是怎样运用的。
1) 环境
假定咱们有5个相互连接的房间,而且对每个房间编号,整个房间的外部视作房间5。
以房间为节点,房门为边,则能够用图来描绘房间之间的联系:
2) 奖赏机制
这儿设置一个agent(在强化学习中, agent 意味着与环境交互、做出决议计划的智能体), 初始能够放置在任意一个房间, agent终究的方针是走到房间5(外部)。
为此, 为每扇门设置一个 reward(奖赏), 一旦 agent 经过该门, 就能取得奖赏:
其间一个特其他当地是房间5能够循环回到自身节点, 而且相同有100点奖赏。
在 Q-learning 中, agent 的方针是抵达最高的奖赏值, 假如 agent 抵达方针, 就会一直停留在原地, 这称之为 absorbing goal。
关于 agent, 这是i一个能够经过阅历进行学习的 robot, agent 能够从一个房间(节点)经过门(边)通往另一个房间(节点), 可是它不知道门会连接到哪个房间, 更不知道哪扇门能进入房间5(外部)。
3) 学习进程
举个栗子,现在咱们在房间2设置一个 agent,咱们想让它学习怎样走能走向房间5。
在 Q-leanring 中,有两个术语 state(状况)和 action(行为)。
每个房间能够称之为 state,而经过门进行移动的行为称之为 action,在图中 state 代表节点,action 代表边。
现在署理处于 state2 ( 节点2,房间2),从 state2 能够通往 state3 ,可是无法直接通往 state1。
在 state3 ,能够移动到 state1 或回到 state2。
依据现在把握的 state,reward,能够形成一张 reward table(奖赏表),称之为矩阵 RR:
只要矩阵 RR 是不行的, agent 还需求一张表, 被称之为矩阵 QQ , 矩阵 QQ 表明 agent 经过阅历学习到的记忆(能够了解为矩阵 QQ 便是模型经过学习得到的权重)。
起初, 署理对环境一无所知, 因而矩阵 QQ 初始化为 00。为了简单起见, 假定状况数已知为6。假如状况数不知道, 则 QQ 仅初始化为单个元素 00, 每逢发现新的状况就在矩阵中增加更多的队伍。
Q-learning 的状况搬运公式如下:
依据该公式, 能够对矩阵 QQ 中的特定元素赋值。
agent 在没有教师的状况下经过阅历进行学习(无监督), 从一个状况探究到另一个状况, 直到抵达方针停止。每次完好的学习称之为 episode(其实也就相当于 epoch), 每个 episode 包含从初始状况移动到方针状况的进程, 一旦抵达方针状况就能够进入下一个 episode。
4) 算法进程
设置gamme参数, 在矩阵R中设置reward
初始化矩阵Q
关于每一个episode:
挑选随机的初始状况(随便放到一个房间里)
假如方针状况没有抵达, 则
从当时一切或许的action中挑选一个
履行action, 并准备进入下一个state
依据action得到reward
核算$Q(state, action) = R(state, action) + Gamma * Max[Q(next-state, all actions)]$
将下一个state设置为当时的state.
进入下一个state
完毕
在算法中, 练习agent在每一个episode中探究环境(矩阵 RR ), 并取得reward, 直抵抵达方针状况。练习的意图是不断更新agent的矩阵 QQ :每个episode都在对矩阵 QQ 进行优化。因而, 起初随意性的探究就会被通往方针状况的最快途径取代。
参数 gamma 取 00 到 11 之间。该参数主要体现在 agent 关于 reward 的贪心程度上, 详细的说, 假如 gamma 为 00, 那么 agent 仅会考虑立即能被得到的 reward, 而 gamma 为 11 时, agent 会放长眼光, 考虑将来的推迟奖赏。
要运用矩阵 QQ , agent 只需求查询矩阵 QQ 中当时 state 具有最高 QQ 值的 action:
- ① 设置当时 state 为初始 state
- ② 从当时 state 查询具有最高 QQ 值的 action
- ③ 设置当时 state 为履行 action 后的 state
- ④ 重复2,3直到当时 state 为方针 state
5) Q-learning模仿
现在假定 gamme=0.8gamme=0.8,初始 state 为房间 11。
初始化矩阵 QQ :
一起有矩阵 RR :
① episode 1
现在 agent 处于房间1, 那么就检查矩阵 RR 的第二行。agent 面临两个action, 一个通往房间3, 一个通往房间5。经过随机挑选, 假定agent挑选了房间5。
因为矩阵 QQ 被初始化为 00, 因而 Q(5,1)Q(5,1), Q(5,4)Q(5, 4), Q(5,5)Q(5, 5) 都是 00, 那么 Q(1,5)Q(1, 5) 便是 100100。
现在房间5变成了当时 state, 而且抵达方针 state, 因而这一轮 episode 完毕。
于是 agent 对矩阵 QQ 进行更新。
② episode 2
现在, 从新的随机 state 开端, 假定房间3为初始 state。
相同地, 检查矩阵 RR 的第四行, 有3种或许的 action:进入房间1、2或许4。经过随机挑选, 进入房间 11。核算 QQ 值:
现在 agent 处于房间11, 检查矩阵 RR 的第二行。此时能够进入房间3或房间5, 挑选去5, 核算Q值:
因为抵达方针 state, 对矩阵 QQ 进行更新,Q(3,1)=80Q(3, 1)=80,Q(1,5)=100Q(1, 5)=100。
③ episode n
之后便是不断重复上面的进程,更新 QQ 表,直到完毕停止。
6) 推理
假定现在 QQ 表被更新为:
对数据标准化处理( matrixQ/max(matrixQ)matrix_Q / max(matrix_Q) ),能够将 QQ 值看作概率:
描绘成图:
到这儿现已很明晰了,agent 现已总结出一条从任意房间通往房间5(外部)的途径。
6.Deep Q Network算法
6.1 算法介绍
Breakout游戏的状况能够用横杆的方位,球的方位,球的方向或许每个砖块是否存在来进行界说。可是,这些表明游戏状况的直觉只能在一款游戏上发挥作用。咱们要问:咱们能不能规划一种通用的表明游戏状况的办法呢?最直接的办法是运用游戏机屏幕的像素作为游戏状况的表明。像素能够隐式地表明出球速以及球的方向之外的一切游戏状况的信息。而假如选用接连两个游戏机屏幕的像素,球速和球的方向也能够得到表明。
假如 DeepMind 的论文选用离散的游戏屏幕作为状况表明,让咱们核算一下运用接连四步的屏幕作为状况,或许的状况空间。屏幕巨细 84∗8484 \ast 84,每个像素点有 256256 个灰度值,那么就有 25684∗84∗4∼1067970256^{84 \ast 84 \ast 4} \sim10^{67970} 种或许的状况。也便是说,咱们的Q-表将要有 106797010^{67970} 行。这个数字甚至多于宇宙中的原子个数!有人会说:有些屏幕状况永远不会呈现,或许,能不能只用在学习进程中碰到过的状况作为Q-表的状况呢?即使如此,这种稀少表明的Q-表里仍包含很多状况,而且需求很长时刻收敛。理想的状况是,即使某些状况没有见过,咱们的模型也能对它进行比较合理的估量。
在这种状况下,深度学习就进入了咱们的视野。深度学习的一大优势是从结构数据中抽取特征(对数据进行很好的表明)。咱们能够用一个神经网络对Q-函数进行建模。这个神经网络接纳一个状况(接连四步的屏幕)和一个动作,然后输出对应的Q-函数的值。当然,这个网络也能够只接受一个状况作为输入,然后输出一切动作的分数(详细来讲是动作个数巨细的向量)。这种做法有一个好处:咱们只需求做一次前向进程就能够取得一切动作的分数。
DeepMind 在论文中运用的网络结构如下:
Layer | Input | Filter size | Stride | Num filters | Activation | Output |
---|---|---|---|---|---|---|
conv1 | 84x84x4 | 88 | 4 | 32 | ReLU | 20x20x32 |
conv2 | 20x20x32 | 44 | 2 | 64 | ReLU | 9x9x64 |
conv3 | 9x9x64 | 33 | 1 | 64 | ReLU | 7x7x64 |
fc4 | 7x7x64 | 512 | ReLU | 512 | ||
fc5 | 512 | 18 | Linear | 18 |
这个网络是普通的神经网络:从输入开端,三个卷积层,接着两个全连接层。熟悉运用神经网络做物体识其他读者或许会意识到,这个网络没有池化层(pooling layer)。可是细想一下咱们就知道,池化层带来方位不变性,会使咱们的网络关于物体的方位不敏感,然后无法有用地辨认游戏中球的方位。而咱们都知道,球的方位关于决议游戏潜在的奖赏来讲有非常大的意义,咱们不应该丢掉这部分信息。
输入是 84∗8484 \ast 84 的灰度图片,输出的是每种或许的动作的Q-值。这个神经网络处理的问题变成了一个典型的回归问题。简单的平方误差能够用作学习方针。
给定一个搬运<s, a, r, s’>
,Q-表的更新算法只要替换成如下流程就能够学习Q-网络。
- 关于当时状况
s
,经过前向进程取得一切动作的Q-值 - 关于下一个状况
s’
,经过前向进程核算Q-值最大的动作 maxa’Q(s’,a’)max_{a’} Q(s’, a’) - 将 r+maxa’Q(s’,a’)r+\gamma max_{a’} Q(s’, a’) 作为学习方针,关于其他动作,设定第一步取得的Q-值作为学习方针(也便是不会在反向进程中更新参数)
- 运用反向传达算法更新参数。
6.2 阅历回放
到现在,咱们现已知道怎样用 Q-learning 的算法估量未来奖赏,并能够用一个卷积神经网络近似Q-函数。但运用Q 值近似非线性的Q-函数或许非常不安稳。你需求很多小技巧才能使这个函数收敛。即使如此,在单GPU上也需求一个星期的时刻练习模型。
这其间,最重要的技巧是阅历回放(experience replay)。在玩游戏的进程中,一切阅历的<s, a, r, s’>
都被记载起来。当咱们练习神经网络时,咱们从这些记载的<s, a, r, s’>
中随机选取一些mini-batch作为练习数据练习,而不是按照时序地选取一些接连的<s, a, r, s’>
。在后一种做法中,练习实例之间相似性较大,网络很容易收敛到局部最小值。一起,阅历回放也使 Q-learning 算法更像传统监督学习。咱们能够收集一些人类玩家的记载,并从这些记载中学习。
6.3 探究-运用窘境
Q-learning 算法测验处理信誉分配问题。经过 Q-learning ,奖赏被回馈到要害的决议计划时刻。可是,咱们还没有处理探究-运用窘境。
咱们第一个调查是:在游戏开端阶段,Q-表或Q-网络是随机初始化的。它给出的Q-值最高的动作是彻底随机的,智能体体现出的是随机的「探究」。当Q-函数收敛时,随机「探究」的状况削减。所以, Q-learning 中包含「探究」的成分。可是这种探究是「贪心」的,它只会探究当时模型认为的最好的战略。
关于这个问题,一个简单的修正技巧是运用 \epsilon– 贪心探究。在学习Q-函数时,这种技巧以 \epsilon 的概率选取随机的动作做为下一步动作,1−1-\epsilon 的概率选取分数最高的动作。在DeepMind的体系中,\epsilon 跟着时刻从 11 削减到 0.10.1。这意味着开端时,体系彻底随机地探究状况空间,最后以固定的概率探究。
6.4 Deep Q-learning算法流程
最后给出运用阅历回放的 Deep Q-learning 算法
initialize replay memory D
initialize action-value function Q with random weights
observe initial state s
repeat
select an action a
with probability select a random action
otherwise select a = argmaxa’Q(s,a’)
carry out action a
observe reward r and new state s’
store experience <s, a, r, s’> in replay memory D
sample random transitions <ss, aa, rr, ss’> from replay memory D
calculate target for each minibatch transition
if ss’ is terminal state then tt = rr
otherwise tt = rr + maxa’Q(ss’, aa’)
train the Q network using (tt - Q(ss, aa))^2 as loss
s = s'
until terminated
中文版算法流程如下:
初始化回放存储D
运用随机权重初始化动作价值函数Q
调查初始状况s
重复
挑选一个动作s
以概率挑选一个随机动作
否则挑选 a=argmaxa'Q(s,a')
履行动作a
调查奖赏r和新状况s'
在回放存储D中保存阅历<s,a,r,s′>
从回放存储D中进行样本随机变换<ss,aa,rr,ss'>
为每个微批数据变换核算方针
假如ss′是终点状况,那么tt=rr
否则tt=rr+Ymax a' Q(ss',aa′)
运用(tt-Q(ss,aa))2作为丢失练习Q网络
s=s'
除了上述技巧,DeepMind 还运用了一系列其他的技巧,比方:方针网络、误差切断、回馈切断等等。可是这些现已超出本文的范畴了。
最令人惊喜的是这种算法能够应对各种学习问题。在算法的运转初期,Q-函数用来学习模型参数的数据简直彻底是(随机猜想的)废物数据,在运转进程中,也只能经过一些偶尔的奖赏学习参数。这种作业想想就很疯狂,它是怎样学到一个很好的模型呢?但事实上,它的确学到了一个很好的模型。
7.DQN后续
自从 Deep Q-learning 提出之后,很多作业测验对他进行提高,其间包含:Double Q-learning, Prioritized Experience Replay, Dueling Network Architecture, extension to continuous action space 等等。假如要跟进最新的研讨成果,能够重视 NIPS 2015 deep reinforcement learning workshop 以及ICLR 2016(用「reinforcement」作为要害词查找)。有一点需求留意的是 Deep Q-learning 现已被谷歌申请专利了。
咱们常说咱们还没搞清楚什么是人工智能。一旦咱们搞清其间的作业原理,它看起来就不那么智能。可是深度Q-网络仍在不断地给我带来惊喜。调查 Q-learning 学习玩一个新游戏的进程就像调查户外的动物。经过不断地与环境交互取得奖赏然后成为更强的物种。
8.拓宽学习
能够点击 B站 检查视频的【双语字幕】版本
- 本篇部分内容翻译自博文DEMYSTIFYING DEEP REINFORCEMENT LEARNING
- 【课程学习指南】斯坦福CS231n | 深度学习与核算机视觉
- 【字幕+资料下载】斯坦福CS231n | 深度学习与核算机视觉 (2017全16讲)
- 【CS231n进阶课】密歇根EECS498 | 深度学习与核算机视觉
- 【深度学习教程】吴恩达专项课程 全套笔记解读
- 【Stanford官网】CS231n: Deep Learning for Computer Vision
9.关键总结
本篇介绍了强化学习:
- 强化学习是不同于监督学习与无监督学习的其他一类算法,主要是「智能体」与「环境」交互学习。
- 强化学习没去在「游戏」「广告与引荐」「智能对话」「机器人」等范畴都有运用。
- GAN 是现在能生成最好样本的模型,可是练习需求技巧且不安稳,查询推断上也有一些问题。
- 马尔科夫决议计划进程
- 打折未来奖赏及其核算办法
- Q-Learning 算法
- Deep Q-Learning 算法
ShowMeAI 斯坦福 CS231n 全套解读
- 深度学习与核算机视觉教程(1) | CV导言与根底 @CS231n
- 深度学习与核算机视觉教程(2) | 图画分类与机器学习根底 @CS231n
- 深度学习与核算机视觉教程(3) | 丢失函数与最优化 @CS231n
- 深度学习与核算机视觉教程(4) | 神经网络与反向传达 @CS231n
- 深度学习与核算机视觉教程(5) | 卷积神经网络 @CS231n
- 深度学习与核算机视觉教程(6) | 神经网络练习技巧 (上) @CS231n
- 深度学习与核算机视觉教程(7) | 神经网络练习技巧 (下) @CS231n
- 深度学习与核算机视觉教程(8) | 常见深度学习结构介绍 @CS231n
- 深度学习与核算机视觉教程(9) | 典型CNN架构 (Alexnet, VGG, Googlenet, Restnet等) @CS231n
- 深度学习与核算机视觉教程(10) | 轻量化CNN架构 (SqueezeNet, ShuffleNet, MobileNet等) @CS231n
- 深度学习与核算机视觉教程(11) | 循环神经网络及视觉运用 @CS231n
- 深度学习与核算机视觉教程(12) | 方针检测 (两阶段, R-CNN系列) @CS231n
- 深度学习与核算机视觉教程(13) | 方针检测 (SSD, YOLO系列) @CS231n
- 深度学习与核算机视觉教程(14) | 图画分割 (FCN, SegNet, U-Net, PSPNet, DeepLab, RefineNet) @CS231n
- 深度学习与核算机视觉教程(15) | 视觉模型可视化与可解释性 @CS231n
- 深度学习与核算机视觉教程(16) | 生成模型 (PixelRNN, PixelCNN, VAE, GAN) @CS231n
- 深度学习与核算机视觉教程(17) | 深度强化学习 (马尔可夫决议计划进程, Q-Learning, DQN) @CS231n
- 深度学习与核算机视觉教程(18) | 深度强化学习 (梯度战略, Actor-Critic, DDPG, A3C) @CS231n
ShowMeAI 系列教程引荐
- 大厂技术完成:引荐与广告核算处理方案
- 大厂技术完成:核算机视觉处理方案
- 大厂技术完成:自然语言处理职业处理方案
- 图解Python编程:从入门到通晓系列教程
- 图解数据剖析:从入门到通晓系列教程
- 图解AI数学根底:从入门到通晓系列教程
- 图解大数据技术:从入门到通晓系列教程
- 图解机器学习算法:从入门到通晓系列教程
- 机器学习实战:手把手教你玩转机器学习系列
- 深度学习教程:吴恩达专项课程 全套笔记解读
- 自然语言处理教程:斯坦福CS224n课程 课程带学与全套笔记解读
- 深度学习与核算机视觉教程:斯坦福CS231n 全套笔记解读