【强化学习】 Nature DQN算法与莫烦代码重现(tensorflow)
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
DQN,(Deep Q-Learning)是将深度学习与强化学习相结合。在Q-learning中,我们是根据不断更新Q-table中的值来进行训练。但是在数据量比较大的情况下,Q-table是无法容纳所有的数据量,因此提出了DQN。DQN的核心就是把Q-table的更新转化为函数问题,通过拟合一个function来代替Q-table产生Q值。
强化学习算法可以分为三大类:value based,policy based和actor critic。以DQN为代表的是value based算法,这种算法只有一个值函数网络,没有policy网络。
在DQN(NIPS 2013)里面,我们使用的目标Q值的计算方式为:
这里目标Q值的计算使用到了当前要训练的Q网络参数来计算,但实际上,我们又通过yj来更新Q网络参数。两者循环依赖,迭代起来相关性太强,不利于算法的收敛。因此一个改版的DQN:Nature DQN尝试使用两个网络结构完全相同的神经网络来减少目标Q值计算和要更新Q网络参数之间的依赖关系。下面是对Nature DQN的介绍(以下Nature DQN 均称DQN)。
DQN和Qlearning一样,都是采用off-policy的方式。但DQN有两个创新点,一是experience replay,即经验回放,二是Fixed Q-target。
Experience replay,经验池回放,我们将agent在每个时间步骤的经验储存在数据中,将许多回合汇聚到一个回放内存中,数据集D=e1,...,eN,其中。在算法的内部循环中,我们会把从部分数据中进行随机抽样,将抽取的样本作为神经网络的输入,从而更新神经网络的参数。使用经验回放的优势有:
1、经验的每个步骤都可能在许多权重更新中使用,这会提高数据的使用效率;
2、在游戏中,每个样本之间的相关性比较强,相邻样本并不满足独立的前提。机器从连续样本中学习到的东西是无效的。采用经验回放相当于给样本增添了随机性,而随机性会破坏这些相关性,因此会减少更新的方差。
Fixed Q-targets,在DQN中采用了两个结构完全相同的神经网络,分别为Q-target和Q-predict,但Q-target网络中采用的参数是旧参数,而Q-predict网络中采用的参数是新参数。Q-predict网络的参数每一次训练都会根据loss函数更新,在经过一定的训练次数以后,Q-target网络的参数会从Q-predict网络中复制。这就是Fixed Q-targets。
为什么Q-target网络参数不可以每一次训练都进行更新?因为在DQN中,两个Q网络结构是完全相同的,这样会有一个新的问题,每次更新网络参数时,因为target也会更新,这样会容易导致参数不收敛。在有监督学习中,标签label都是固定的,不会随着参数的更新而改变。我们可以把Q-target当作是一只老鼠,Q-predict就是一只猫,我们的目的是希望Q-predict越接近Q-target越好,就相当于猫捉老鼠的过程。在这个过程中,猫和老鼠都是一直在变化的,这样猫想捉老鼠是非常困难的。但是如果把老鼠(Q-target)固定住,只允许猫(Q-predict)动,这样猫想捉住老鼠就会变得容易很多了。
- 首先初始化Memory D,D的容量是N
- 初始化Q网络,随机生成权重
- 初始化Q-target网络,权重
- 循环遍历episode=1,2,...,M
- ? ? 初始化状态S:
- ? ? ?循环遍历step=1,2,...,T:
- ? ? ? ? ? ? ? 用epsilon-greedy策略生成action?:以概率epsilon随机选择一个action,或者选择
- ? ? ? ? ? ? ? 执行action?,接收reward?以及新的state S_
- ? ? ? ? ? ? ? 将transition样本存入D中
- ? ? ? ? ? ? ? 从D中随机抽取一个minibatch的transitions
- ? ? ? ? ? ? ? 如果j+1步是terminal,?令,否则,令
- ? ? ? ? ? ? ? 对关于θ使用梯度下降法进行更新
- ? ? ? ? ? ? ? 每隔C步更新Q-target网络,令
- End For;
- End For.
附上原文的算法流程:
下面我们用一个具体的例子来演示DQN的应用,这里参考了Morvan的DQN的代码,建立了一个简易的4*4宫格的具有障碍的最短路径的游戏。该游戏非常简单,基本要求就是要控制方块在不触碰黑色方块的前提找到终点。在图中每个状态的可选择的动作最多有四个:上、下、左、右。进入黑色方块位置的奖励为-1,走到终点位置的奖励为1,其余位置的奖励均为0。
在此详细讲解代码的DQN算法核心部分,环境部分代码见:
self.replace_target_op:表示Q-target网络要从Q-predict中复制神经网络的参数。
经验池(memory bank)中存放的数据样本为:当前状态,选择的动作,奖励,下一个状态
在该游戏中,状态的描述是通过16宫格中的二维的坐标来表示的,对应代码中的features。
以上是DQN中重要的结构:采用了两个结构完全相同,但参数不同步更新的全连接神经网络作为Q-table的代替输出Q-target和Q-predict,两个全连接神经网络都只采用了一层的隐藏层,激活函数使用了RELU,结构非常简单。当然,这里也可以采用CNN作为神经网络的结构。
以上两个函数是对经验池的填充和动作的选择。接下来就是对经验池中的经验进行回放以及更新Q-target网络参数。
在上图代码中的:change q_target w.r.t q_eval's action这一部分,实际上也是DQN网络中比较难理解的部分。在DQN中,我们拥有两个神经网络,假设我们在记忆中在Q-predict网络中选择了action1,其对应的Q值=3。根据DQN的Q值更新公式,在Q-target网络中我们是根据贪婪法则选择当前状态对应的Q值最大的action。这样就会出现一种情况,当在Q-predict中选择了action1,有可能对应的Q-target中,选择的Q值最大的action是action0。因此就出现了动作位置不对应的情况,这种情况就会出现两个选择的action,无法通过计算误差反向传播更新参数。因此这部分代码就是为了解决这种情况,无论在Q-target网络中Q值最大对应的action是什么,我们都将在Q-predict网络中选择的action对应到Q-target网络中。举个例子:
Q-predict=[0,3,0]表示这一个记忆中选用了action1,action1的Q=3,其他的Q均为0;
Q-target=[1,0,0]表示在这个记忆中的Q=reward+gamma*maxQ(s_)=1,但是在s_上我们选取了action0,此时两个action无法对应上,我们应该把Q-target的样本修改成:[0,1,0],和Q-predict对应起来。
以下是代码运行后的游戏过程图和学习曲线:
?
?tensorboard输出结果:
参考资料:
以上是本教程全部内容,有问题欢迎大家在评论区里交流!
【新智元导读】据The Information爆料,OpenAI在最近几个月里挖了至少十几名谷歌AI的员工,而这些工程师都在ChatGPT的研究中发挥了至关重要的作用。
新智元怎么样,新智元官网,新智元公司地址,智元课堂OpenAI的秘密武器:前谷歌工程师
采写//财富 编译/MoPaas 【编者按:作为人工智能界顶流的ChatGPT,其创造者 OpenAI 背后的故事却鲜为人知。OpenAI 是怎样偏离其初心坚持商业化?OpenAI原来的安全团队为什么分家与他们分庭抗争?ChatGPT的编程能力是怎样被发现的?ChatGPT 为什么差点被扼杀掉?ChatGPT是怎样歪打正着成为爆款?Altman 为什么时而理想主义狂热时而又回到反乌托邦?OpenAI 今年还可能会有哪些惊喜? ...“The inside story of ChatGPT”(“ChatGPT 的内幕故事”)将为你解密这一切。 该文由《财富》杂志资深作者JEREMY KAHN采访研究完成,并将以标题“ChatGPT creates an A.I. frenzy”(“ChatGPT创造了AI狂潮”)在美国《财富》杂志2023年2月/3月号上发表。】 Sam Altman, CEO and cofounder of OpenAI. 在每个时代,总有一种产品的出现,它将从工程系昏暗的地下室、书呆子们臭气熏天的青少年卧室和爱好者们孤独的洞穴中弹射出来,变成了你的祖母Edna都知道如何使用的东西。 早在 1990 年就有网络浏览器,但直到 1994 年Netscape Navigator的出现,大多数人才发现了互联网。 2001 年 iPod 问世之前就已经有了 MP3 播放器,但它们并没有引发数字音乐革命。 在2007 年苹果推出iPhone之前,也有智能手机,但在 iPhone 之前,没有智能手机的应用程序。 2022 年 11 月 30 日,人工智能迎来了 Netscape Navigator 时刻。 这一时刻是由OpenAI 的首席执行官Sam Altman 开启的,OpenAI 是一家总部位于旧金山的人工智能公司,成立于 2015 年,得到了包括Elon Musk 、Peter Thiel 和PayPal校友、LinkedIn联合创始人Reid Hoffman 等多位硅谷重量级人物的资金支持。 11 月 30 日,也是公司成立大约七年后,Altman 在推特上写道:“今天我们推出了 ChatGPT,尝试在这里与它交谈”,然后是一个链接,任何人都可以注册一个帐户,开始免费与 OpenAI 的新聊天机器人交谈。 任何人都可以,而且不仅仅只是聊聊天气。软件 CEO 兼工程师 Amjad Masad 要求它调试他的代码,它做到了;美食博主兼网红Gina Homolka用它写了一份健康巧克力曲奇的食谱;Scale AI 的工程师 Riley Goodside 要求它为Seinfeld剧集编写剧本;Guy Parsons 是一名营销人员,他还经营着一家致力于 AI 艺术的在线画廊,他让它为他编写提示,以输入另一个 AI 系统Midjourney, 从文本描述创建图像;斯坦福大学医学院的皮肤科医生 Roxana Daneshjou也研究 AI 在医学上的应用,她向它提出了医学问题,许多学生用它来做作业; 而上述种种,这还只是在聊天机器人发布后的 24 小时内出现的。 以前也出现过聊天机器人,但都不是这样的。 ChatGPT 可以进行长时间、流畅的对话,回答问题,并撰写人们要求的几乎任何类型的书面材料,包括商业计划、广告活动、诗歌、笑话、计算机代码和电影剧本。它远非完美:结果并不总是准确的;它不能引用其信息来源;它几乎不知道 2021 年之后发生的任何事情。它所提供的内容虽然通常流畅到足以通过高中课程甚至大学课程的考试,却很少像人类专家那样完美。 另一方面,ChatGPT 会在一秒内生成这些内容,用户几乎没有等待,而且它吐出的很多内容都还不错。在ChatGPT发布后的五天内,就有超过100万的玩家,这是Facebook花了 10 个月才达到的里程碑。 在过去的十年中,人工智能技术稳步进入商业领域,并悄悄改进了我们每天使用的许多软件,但并未引起非技术人员的太大兴趣。ChatGPT 改变了这一点。突然之间,每个人都在谈论人工智能如何颠覆他们的工作、公司、学校和生活。 ChatGPT 是相关人工智能技术浪潮的一部分,这些技术统称为“生成式人工智能”――其中还包括热门的艺术生成器,如 Midjourney 和 Lensa。OpenAI处于科技行业下一件大事件的最前沿,具有初创公司史诗般的标志,包括全明星阵容和狂热的投资者,据报道,该公司的最新估值达到 290 亿美元。 但是,尽管其最近的激增引发了嫉妒、惊奇和恐惧――据报道,其利润丰厚的搜索帝国可能会受到攻击,谷歌宣布了内部“红色代码”,以回应 ChatGPT―OpenAI 不太可能成为技术超级大国俱乐部的成员。直到几年前,它还根本不是一家公司,而是一家致力于学术研究的小型非营利性实验室。崇高的创始原则仍然存在,例如保护人类免受不受限制的人工智能的威胁。与此同时,OpenAI 也经历了内部转型,将其原来的员工分开,并更加关注商业项目而不是纯科学项目上。(一些批评家认为,将 ChatGPT 推向市场本身就很危险,这也标志着 OpenAI 的方法发生了深刻的转变。) “我认为 [对于 AI] 的好案例是如此令人难以置信的好,以至于你谈论它听起来像个疯子”,Sam Altman说。 本周,微软宣布扩大与OpenAI的合作伙伴关系,其中包括高达 100 亿美元的新资本,这可能会使这家软件巨头在未来几年占据 OpenAI 利润的最大份额。这笔交易可能会加深人们的看法,即曾经理想主义的努力现在主要关心的是赚钱。尽管如此,《财富》杂志看到的文件显示,OpenAI 的业务目前是多么无利可图。 37 岁的联合创始人兼首席执行官Altman体现了 OpenAI 令人费解的本质。 Altman 是一位连续创业的科技企业家,他更以商业头脑而非工程壮举而闻名,他既是 OpenAI估值飙升的设计师,也是该公司的首席执行官,他曾公开表示 ChatGPT 离真正可靠还有很远。与此同时,他认为这项技术是朝着开发一种被称为人工通用智能(AGI)的计算机超级智能的宏大而不切实际的企业使命向前迈出的一步。“AGI 可能是人类生存所必需的,” Altman在 7 月份发推文说。“如果没有更好的工具,我们的问题似乎太大,我们无法解决。” 对于一家赚钱的企业来说,这是一种不同寻常的指导理念,尤其是考虑到一些计算机科学家认为Altman的痴迷只是一种幻想。“AGI 很愚蠢,”加州大学伯克利分校的计算机科学家 Ben Recht 说。“我的意思是,这不是一回事。” 然而,借助 ChatGPT,Altman 已将 OpenAI 以及更广泛的 AI 使命转变为吸引科技界的东西。问题在于,他与微软建立的合作伙伴关系是否可以修复 ChatGPT 的缺陷并利用其早期领先优势来改变科技行业。谷歌和其他巨头正在努力开发自己的人工智能平台;未来,更完善的软件会让 ChatGPT 看起来像小孩子在玩游戏。OpenAI 可能有一天会发现,就像 Netscape 短暂的浏览器统治一样,它的突破打开了一扇通往未来的门,而这扇门并不属于它。 1 月中旬的一个星期四晚上,Altman罕见地在旧金山公开露面。这位 CEO 穿着灰色毛衣、蓝色牛仔裤和一双颜色鲜艳的时髦扎染运动鞋,走进了一个满是投资者、技术人员和记者的房间,他们聚集在一起收集关于 ChatGPT 或即将到来的融资轮的任何信息。当Altman的采访者、专注于风险投资的媒体公司 StrictlyVC 的创始人 Connie Loizos 向他询问媒体的狂热时,Altman回答说:“我不看新闻,我也不太会做这样的事情”。 该活动在Salesforce 大楼的 46 层举行,现场只有站立的空间。在接受采访前举行的金融科技小组讨论会上,一位发言人甚至告诉听众,她知道他们“都在等 Sam Altman”。 但是,尽管议论纷纷,并且流传着微软投资的谣言,但Altman似乎还是刻意打消了人们的这种兴奋。“这些技术的一个奇怪之处在于,它们令人印象深刻但并不稳健,”他告诉人群。“所以你在第一个演示中使用它们;你会有种令人印象深刻的反应,“哇,这太不可思议了,准备好了”。但你看到它一百次,你就会看到它的弱点。” 这种谨慎似乎是 OpenAI 总部的官方模式,该总部位于旧金山 Mission 区的一家旧箱包工厂。事实上,如果 ChatGPT 是 AI 的 Netscape Navigator 时刻,那它几乎从未发生过,因为 OpenAI 几个月前几乎扼杀了这个项目。 允许用户用简单的英语(和许多其他语言)与 AI 交谈的聊天界面最初是由 OpenAI 构想的,作为改进其“大型语言模型” LLM 的一种方式。大多数生成式人工智能系统的核心都是LLM。它们是通过采用非常庞大的神经网络(一种基于人脑连接的人工智能)并将它们应用于大量人类创建的文本而创建的。从这个库中,该模型学习了一个复杂的映射,即在任何给定上下文中,任何一组单词将会出现在另一个单词旁边。这使得 LLM 能够执行大量的自然语言处理任务,从翻译到摘要再到写作。 OpenAI 已经创建了世界上最强大的LLM 之一。它被称为 GPT-3,拥有超过 1750 亿个参数,并在大约三分之二的互联网、所有维基百科和两个大型书籍数据集上接受训练。但是 OpenAI 发现让 GPT-3 产出用户想要的东西可能很棘手。一个团队有使用强化学习的想法,人工智能系统通过反复试验来学习以最大化奖励,来完善模型。该团队认为聊天机器人可能是这种方法的理想候选者,因为以人类对话的形式不断提供反馈将使人工智能软件很容易知道它何时做得很好以及需要改进的地方。因此,在 2022 年初,该团队开始构建 ChatGPT。 当ChatGPT准备就绪后,OpenAI 让 Beta 测试人员使用ChatGPT。但根据 OpenAI 联合创始人兼现任总裁Greg Brockman 的说法,他们并没有像 OpenAI 希望的那样接受它;人们不清楚他们应该与聊天机器人谈论什么。有一段时间,OpenAI 改变了策略,试图构建专家聊天机器人,以帮助特定领域专业人士。但这项努力也遇到了问题,部分原因是 OpenAI 缺乏训练专家机器人的正确数据。Brockman说,几乎就像孤注一掷一样,OpenAI 决定将 ChatGPT 从板凳上拉下来,并将其放在野外供公众使用。“我承认,我不知道这是否会奏效,” Brockman说。 聊天机器人的迅速传播让OpenAI 猝不及防,OpenAI 的首席技术官 Mira Murati 说,“这绝对令人惊讶,”。在旧金山 VC 活动上Altman 说,他“本以为一切都会少一个数量级,少一个数量级的炒作。” OpenAI 首席技术官 Mira Murati ChatGPT 不是 OpenAI 唯一的炒作工具,该公司只有 300 名左右的员工,规模相对较小,但在创建数据(而不仅仅是分析数据)方面,已经突破了人工智能的极限。DALL-E 2 是 OpenAI 的另一项创作,它允许用户通过输入几个词来创建他们可以想象的任何事物的逼真图像。该系统现在已被其他公司模仿,包括 Midjourney 和一个名为Stability AI的开源竞争对手. (所有这些图像生成器都有缺点,最显着的是它们倾向于放大训练数据的偏差,生成可能具有种族主义和性别歧视的图像。)通过在计算机代码上微调其 GPT LLM,OpenAI 还创建了Codex ,一个可以为程序员编写代码的系统,程序员只需用简单的语言指定他们想要代码做什么。 更多的创新在等待,OpenAI在 beta 测试中有一个更强大的 LLM,称为 GPT-4,预计将在今年发布,甚至可能很快发布。Altman 还表示,该公司正在开发一种可以根据文本描述生成视频的系统。与此同时,在 1 月中旬,OpenAI 表示打算发布ChatGPT 的商业版本,并宣布了一个等待名单,供潜在客户通过一个界面注册付费访问该机器人,从而使他们能够更轻松地集成它到他们自己的产品和服务中。 愤世嫉俗的人可能会认为,OpenAI正在筹集大量风险投资这一事实可能与 ChatGPT 的发布时间有关。(OpenAI 说这个时间是巧合。)可以肯定的是,ChatGPT 在充满鲨鱼的水域中游弋。这在风险投资公司中掀起了一股抢购狂潮,他们希望在 OpenAI 高管、员工和创始人持有的私募股权中抢购股票。 该收购报价与微软刚刚宣布的新投资一起发生,这将为该公司注入高达 100 亿美元的新资本。微软于 2016 年开始与 OpenAI 合作,并与这家初创公司建立了战略合作伙伴关系,于三年前宣布向该公司投资10 亿美元。据熟悉新收购报价的消息人士称,尽管这种不寻常的结构为微软带来了巨大的财务优势,它已被大量超额认购。 根据《财富》杂志看到的文件显示,在新投资完成后,在OpenAI 的第一批投资者收回初始资本后,微软将有权获得 OpenAI 75% 的利润,直到它收回其投资的 130 亿美元,这一数字包括之前对 OpenAI 的 20 亿美元投资,该投资直到今年1月《财富》杂志才披露。直到这家软件巨头赚取 920 亿美元的利润后,微软的份额将降至 49%。与此同时,其他风险投资者和 OpenAI 的员工也将有权获得 OpenAI 49% 的利润,直到他们赚取约 1500 亿美元。如果达到这些上限,微软和投资者的股份将归还给 OpenAI 的非营利基金会。本质上,OpenAI 是在把公司借给微软,借多久取决于 OpenAI 赚钱的速度。 但要收回投资可能需要相当长的时间,更不用说达到这些上限。《财富》杂志看到的文件显示,OpenAI迄今为止的收入相对较少,而且亏损严重。文件显示,去年该公司预计将带来近 3000 万美元的收入。但该公司预计计算和数据费用支出为 4.1645 亿美元,员工费用为 8931 万美元,其他未指明的运营费用为 3875 万美元。不包括员工股票期权在内,其 2022 年的净亏损总额预计为 5.445 亿美元。而对于 ChatGPT,这些损失可能会飙升:Altman 在推特上说,在回答 Elon Musk 的问题时表示,OpenAI 在用户与 ChatGPT 的每次交互中花费的计算成本为“个位数美分”,随着ChatGPT变得流行,每月的计算成本可能达到数百万美元。 OpenAI 预计,随着 ChatGPT 成为吸引诱客户的警笛,其收入将迅速增加。文件显示,该公司预计2023年的收入将达到 2 亿美元,并预计到 2024 年收入将超过 10 亿美元。他们没有预测 OpenAI 的开支会如何增长以及何时可以盈利。这些公司拒绝对这些数字发表评论,但他们指出了一个明显的现实:OpenAI 和微软都认为,这家曾经的非营利性实验室现在拥有可以出售的东西。 “10亿美元” 《财富》杂志获得的文件显示,ChatGPT 2024 年的预期收入高于 2023 年的 2 亿美元和 2022 年的 3000万美元。 微软已经从合作伙伴关系中获益。它已经在其 Azure 云中推出了一套 OpenAI 品牌的工具和服务,允许 Azure 客户访问 OpenAI 的技术,包括 GPT 和 DALL-E 工具。例如,汽车市场CarMax已经推出了运行在这些 Azure 工具上运行的新服务。 微软 AI 平台公司副总裁 Eric Boyd 表示,满足培训和运行 OpenAI 的 LLM 的需求推动了创新,使所有 Azure 客户受益。例如,微软已经为人工智能构建了它认为是世界上最强大的超级计算集群,并创造了多项软件创新,以便更容易的在这些机器上训练和运行大型人工智能模型。微软正逐渐将 OpenAI 的技术融入其大部分软件中。它已经在其搜索引擎 Bing 中发布了一个图像生成器、以及一个新的 Designer 图形设计工具,两者均由 DALL-E 提供支持;其 Power Apps 软件中支持 GPT-3 的工具,以及基于 OpenAI 的 Codex 模型的代码建议工具 GitHub Copilot。 Morningstar高级股票研究分析师Dan Romanoff 表示,即使OpenAI与Azure的合作不会立即对 Azure 的收入产生影响,但它是一种很好的品牌定位和营销。“这是高调的,”他说。“能够将 OpenAI 开发的 AI 解决方案放在 Azure 上,称之为 Azure AI :这让他们保持竞争力。”微软的云计算竞争对手,谷歌、AWS、IBM、甲骨文、Salesforce 和其他公司,都有自己的“认知”服务,但与创建 ChatGPT 的人联系在一起也无妨。 对微软来说,更大的收获可能在于搜索业务。科技出版物 The Information 最近报道,微软计划将 ChatGPT 集成到 Bing 中,可能允许它返回简单、简洁的查询答案,并让人们通过与该聊天机器