强化学习扫盲贴:从Q-learning到DQN

本文转载自知乎专栏「机器学习笔记」,原文作者「余帅」,链接
https://zhuanlan.zhihu.com/p/35882937

1 本文学习目标

1. 复习Q-Learning;
2. 理解什么是值函数近似(Function Approximation);
3. 理解什么是DQN,弄清它和Q-Learning的区别是什么。

2 用Q-Learning解决经典迷宫问题

现有一个5房间的房子,如图1所示,房间与房间之间通过门连接,编号0到4,5号是房子外边,即我们的终点。我们将agent随机放在任一房间内,每打开一个房门返回一个reward。图2为房间之间的抽象关系图,箭头表示agent可以从该房间转移到与之相连的房间,箭头上的数字代表reward值。


图1 房子原型图


图2 抽象关系图

根据此关系,可以得到reward矩阵为

Q-Learning是一种off-policy TD方法,伪代码如图所示

Q-Learning伪代码

我们首先会初始化一个Q表,用于记录状态-动作对的值,每个episode中的每一步都会根据下列公式更新一次Q表

这里的迷宫问题,每一次episode的结束指的是到达终点状态5。为了简单起见,这里将学习率设为1,更新公式变为

另外,将衰减系数γ设为0.8。Q表初始化为一个5×5的全0矩阵。每次这样更新,最终Q表会收敛到一个矩阵。

最终Q表收敛为

因此,也可以得到最优路径如下红色箭头所示

Python代码:

import numpy as np
GAMMA = 0.8
Q = np.zeros((6,6))
R=np.asarray([[-1,-1,-1,-1,0,-1],[-1,-1,-1,0,-1,100],[-1,-1,-1,0,-1,-1],[-1,0, 0, -1,0,-1],[0,-1,-1,0,-1,100],[-1,0,-1,-1,0,100]])
def getMaxQ(state):return max(Q[state, :])
def QLearning(state):curAction = Nonefor action in range(6):if(R[state][action] == -1):Q[state, action]=0else:curAction = actionQ[state,action]=R[state][action]+GAMMA * getMaxQ(curAction)
count=0
while count<1000:for i in range(6):QLearning(i)count+=1
print(Q/5)

Q-Learning方法很好的解决了这个迷宫问题,但是这终究只是一个小问题(状态空间和动作空间都很小),实际情况下,大部分问题都是有巨大的状态空间或者动作空间,想建立一个Q表,内存是绝对不允许的,而且数据量和时间开销也是个问题。

3 值函数近似与DQN

值函数近似(Function Approximation)的方法就是为了解决状态空间过大,也称为“维度灾难”的问题。通过用函数而不是Q表来表示 ,这个函数可以是线性的也可以使非线性的。

其中ω称为“权重”。那怎么把这个权重求出来,即拟合出这样一个合适的函数呢?这里就要结合机器学习算法里的一些有监督学习算法,对输入的状态提取特征作为输入,通过MC/TD计算出值函数作为输出,然后对函数参数 进行训练,直到收敛。这里主要说的是回归算法,比如线性回归、决策树、神经网络等。

这里,就可以引入DQN(Deep Q-Network)了,实际上它就是Q-Learning和神经网络的结合,将Q-Learning的Q表变成了Q-Network。

好,现在关键问题来了。这么去训练这个网络呢?换句话说,怎么去确定网络参ω呢?第一,我们需要一个Loss Function;第二,我们需要足够的训练样本。

训练样本好说,通过epsilon-greedy策略去生成就好。回忆一下Q-Learning,我们更新Q表是利用每步的reward和当前Q表来迭代的。那么我们可以用这个计算出来的Q值作为监督学习的“标签”来设计Loss Function,我们采用如下形式,即近似值和真实值的均方差

采用随机梯度下降法(SGD)来迭代求解,得到我们想要的,具体公式和过程还请看参考资料,这里不展开了,其实就是求导啦。值得一提的是,上述公式中的q(·)根据不同方法算出来,其形式不一样,比如利用MC,则为(回报);利用TD(0),则为

Q-Learning呢,就是

在David Silver的课里,他根据每次更新所参与样本量的不同把更新方法分为增量法(Incremental Methods)和批处理法(Batch Methods)。前者是来一个数据就更新一次,后者是先攒一堆样本,再从中采样一部分拿来更新Q网络,称之为“经验回放”,实际上DeepMind提出的DQN就是采用了经验回放的方法。为什么要采用经验回放的方法?因为对神经网络进行训练时,假设样本是独立同分布的。而通过强化学习采集到的数据之间存在着关联性,利用这些数据进行顺序训练,神经网络当然不稳定。经验回放可以打破数据间的关联。

最后附上DQN的伪代码

学到这里,其实可以做一个阶段性总结了,强化学习算法的基本框架可以用下图概括

参考文献

[1]Reinforcement Learning: An Introduction - Chapter 9: On-policy Prediction with Approximation
[2]Reinforcement Learning: An Introduction - Chapter 10: On-policy Control with Approximation
[3]David Silver’s RL Course Lecture 6 - Value Function Approximation (video, slides)
[4]DQN从入门到放弃5 深度解读DQN算法
[5]一条咸鱼的强化学习之路6之值函数近似(Value Function Approximation)和DQN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

肖仰华 | 基于知识图谱的可解释人工智能:机遇与挑战

本文转载自公众号知识工场&#xff0c;整理自 2017 年 10 月 13 日肖仰华教授在 CIIS2017 中国智能产业高峰论坛上所做的报告。 肖仰华&#xff1a;很高兴有机会跟大家一起分享《基于知识图谱的可解释人工智能&#xff1a;机遇与挑战》。 刚才刘总的报告中提到了机器和人类将来…

对话系统的设计艺术(完结)

Motivation对话是一个很大的概念&#xff0c;有非常非常多的子问题&#xff0c;刚入坑的小伙伴很可能迷失在对话的一小块区域里无法自拔&#xff0c;本文就是为解决这一类问题的。希望读者在看完本文后&#xff0c;可以理清楚对话的每个概念为什么而存在&#xff0c;以及它在整…

2018届校招面经精选

https://www.zhihu.com/question/23259302 牛客网​已认证的官方帐号819 人赞同了该回答最好的办法就是看看别人是怎么准备的&#xff0c;通过别人的面经来反思自己如何准备。针对应届生校招面试 “机器学习” 相关岗位的情况&#xff0c;牛妹为大家整理了一批面经&#xff0c…

白硕 | 知识图谱,就是场景的骨架和灵魂

本文转载自公众号恒生技术之眼 知识图谱&#xff0c;目前已在全世界得到了重视和应用&#xff0c;成为当下人工智能热的一个重要组成部分。它究竟是怎样的一种技术&#xff1f;它的应用场景在哪里&#xff1f;未来国内企业该如何发展&#xff1f;让我们一起来聊聊。 从知识图谱…

您的DST大礼包请查收

本文转载自刘冲大佬&#xff08;知乎id&#xff1a;呜呜哈&#xff09;的知乎文章&#xff0c;链接&#xff1a;https://zhuanlan.zhihu.com/p/40988001除本文外&#xff0c;作者还写了很多对话相关的良心好文&#xff01;做对话的小伙伴千万不要错过这位良心答主噢(&#xffe…

LSTM长短记,长序依赖可追忆(深度学习入门系列之十四)

摘要&#xff1a;如果你是一名单身狗&#xff0c;不要伤心&#xff0c;或许是因为你的记忆太好了。有时&#xff0c;遗忘是件好事&#xff0c;它让你对琐碎之事不再斤斤计较。然而每当自己记不住单词而“问候亲人”时&#xff0c;也确实气死个人。于是你懂得了如何控制好什么信…

技术动态 | 清华大学开源OpenKE:知识表示学习平台

本文转载自公众号机器之心&#xff0c;选自 THUNLP。 清华大学自然语言处理实验室近日发布了 OpenKE 平台&#xff0c;整合了 TransE、TransH、TransR、TransD、RESCAL、DistMult、HolE、ComplEx 等算法的统一接口高效实…

多任务学习时转角遇到Bandit老虎机

注&#xff1a;本文的正文干货转载并少量修改自大佬覃含章&#xff08;知乎id同名&#xff0c;知乎必关的数值优化大佬啊啊&#xff09;的一篇知乎回答&#xff0c;链接https://www.zhihu.com/question/53381093/answer/562235053一个转角事情是这样的&#xff0c;最近小夕在做…

NLP13-LDA引发的一系活动

摘要&#xff1a; 目标是想了解也学习LDA&#xff0c;寻找学习LDA相关资料&#xff0c;学习LDA相关的概率基础&#xff0c;对于LSI&#xff0c;pLsa,LDA作为主题模型的对比&#xff1b;然后到LDA本身&#xff0c;对LDA相关的概率基础进行学习。把相关资料疏理与集合起来。

王昊奋 | 从聊天机器人到虚拟生命:AI技术的新机遇

本文转载自公众号中国人工智能学会。 10月12-13日&#xff0c;第七届中国智能产业高峰论坛在佛山开幕&#xff0c;在NLP与服务机器人专题论坛上&#xff0c;深圳狗尾草CTO王昊奋发表了主题为《从聊天机器人到虚拟生命&#xff1a;AI技术的新机遇》的精彩演讲。 以下是王昊奋老师…

【Java】如何理解Java中的异常机制?

1 异常的概念 程序在执行过程中出现非正常线性&#xff0c;导致JVM非正常停止异常不是语法错误 2 异常的分类 Throwable是所有错误或异常的超类Exception是编译期间异常&#xff08;写代码时IDE会报错&#xff09;RuntimeException时运行期异常&#xff0c;程序运行时出现的…

文本匹配相关方向总结(数据,场景,论文,开源工具)

Motivation 前不久小夕在知乎上写了一个回答《NLP有哪些独立研究方向》&#xff0c;于是有不少小伙伴来问分类和匹配的参考资料了&#xff0c;鉴于文本分类的资料已经超级多了&#xff0c;就不写啦&#xff08;不过分类相关的tricks可以看之前写的这篇文章《文本分类重要tricks…

机器学习】LDA线性判别分析

【机器学习】LDA线性判别分析1. LDA的基本思想2. LDA求解方法3. 将LDA推广到多分类4. LDA算法流程5. LDA和PCA对比【附录1】瑞利商与广义瑞利商线性判别分析 (Linear Discriminant Analysis&#xff0c;LDA)是一种经典的线性学习方法&#xff0c;在二分类问题上因为最早由[Fish…

科普 | 动态本体简介

本文转载自知乎专栏知识图谱和智能问答。 1 近年来&#xff0c;随着语义Web的兴起&#xff0c;本体技术受到了广泛关注。很多大型跨国公司都开始研究本体技术。谷歌于2012年提出了知识图谱的项目&#xff0c;旨在利用本体技术来提高搜索的精度和更智能化的知识浏览。国内的互联…

文本匹配相关方向打卡点总结

Motivation前不久小夕在知乎上写了一个回答《NLP有哪些独立研究方向》[1]&#xff0c;于是有不少小伙伴来问分类和匹配的参考资料了&#xff0c;鉴于文本分类的资料已经超级多了&#xff0c;就不写啦&#xff08;不过分类相关的tricks可以看之前写的这篇文章《文本分类重要tric…

深入理解K-Means聚类算法

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/taoyanqi8932/article/details/53727841 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit…

刘挺 | 从知识图谱到事理图谱

本文转载自 AI科技评论。 在“知识图谱预见社交媒体”的技术分论坛上&#xff0c;哈尔滨工业大学刘挺教授做了题为“从知识图谱到事理图谱”的精彩报告。会后AI科技评论征得刘挺教授的同意&#xff0c;回顾和整理了本次报告的精彩内容。 刘挺教授 刘挺教授的报告内容分为四部分…

我对JVM的理解

一、JVM简介 JVM总体上是由类装载子系统&#xff08;ClassLoader&#xff09;、运行时数据区、执行引擎、内存回收这四个部分组成。 其中我们最为关注的运行时数据区&#xff0c;也就是JVM的内存部分则是由方法区&#xff08;Method Area&#xff09;、JAVA堆&#xff0…

【LeetCode】4月4日打卡-Day20-接雨水

描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&#xff0c;可以接 6 个单位的雨水&#xff08;蓝色部分表示雨水&a…

算法与数据结构--空间复杂度O(1)遍历树

大家好~我叫「小鹿鹿鹿」&#xff0c;是本卖萌小屋的第二位签约作&#xff08;萌&#xff09;者&#xff08;货&#xff09;。和小夕一样现在在从事NLP相关工作&#xff0c;希望和大家分享NLP相关的、不限于NLP的各种小想法&#xff0c;新技术。这是我的第一篇试水文章&#xf…