这个用来玩儿游戏的算法,是谷歌收购DeepMind的最大原因
大数据文摘字幕组作品
大家好呀!YouTube网红小哥Siraj又来啦!
这次他将为我们讲解Deep Q Learning——谷歌为了这个算法收购了DeepMind。
点击观看视频
时长9分钟
带有中文字幕
这个算法是干什么的呢?
答案就是:用来玩游戏的!
2014年,谷歌花了5亿多美元收购了位于伦敦的一家小公司:DeepMind。在此之前,DeepMind在2013年12月的NIPS大会上发表过一篇关于用深度强化学习来玩视频游戏的论文Playing Atari with Deep Reinforcement Learning,后续研究成果Human-level control through deep reinforcement learning在2015年2月上了《自然》的封面。再后来,深度学习+强化学习的玩法用在了围棋上,于是我们有了阿法狗。
回头看看让DeepMind起家的Deep Q Learning,看上去只是一个非常简单的软件,一个专门为Atari视频游戏设计的自动程序。可是,它被视为“通用智能”的第一次尝试——论文显示,这种算法可以应用至50种不同的Atari游戏,而且表现均超过人类水平。这就是深度Q学习器。
用超级玛丽来举个例子。我们拥有游戏的视频片段作为数据输入,用马里奥移动的方向来标注数据。这些训练数据是连续的,新的视频帧持续不断地在游戏世界产生,而我们想知道如何在这个世界中行动。
看上去,最好的办法是通过尝试。不断尝试,不断犯错,这样我们就会了解我们与游戏世界的最佳互动形式。
强化学习就是用来解决这类问题的。每当马里奥做了一些有助于赢得游戏的动作,正标签就会出现,只是它们的出现有延迟。相比起把它们叫做标签,更确切的叫法是“奖励Reward”。
我们将整个游戏过程表示为一个由状态(State)、动作(Action)和奖励(Reward)构成的序列,每个状态的概率仅仅取决于前一个状态和执行的动作,这叫做“马尔科夫特性”,以俄罗斯数学家马尔科夫命名。这个决策过程称之为马尔科夫过程。
如果把某个点之后一系列的奖励表示成一个函数,这个函数值就代表游戏结束时,可能出现的最佳得分。当在给定的状态下执行给定的动作之后,此函数用于衡量该状态下某个动作的质量(Quality),这就是Q函数,也叫魁地奇函数,啊不,质量函数。
当马里奥决定执行哪个可能的动作时,他将选择那些Q值最高的动作,计算Q值的过程,就是学习的过程。
那么如何超越超级玛丽这一个游戏,将算法推广到其他游戏中呢?戳上文视频了解更多吧!
原视频地址:(大数据文摘经授权汉化)
https://www.youtube.com/watch?v=79pmNdyxEGo
本期工作人员
翻译:周杨 IrisW 高树
校对:晓莉
时间轴+后期:龙牧雪
监制:龙牧雪
- 昨天遇到的几个常用函数
- 【深入浅出】一篇超棒的机器学习入门文章
- .NET中的异步编程上
- 从python2到python3
- 【干货】如何写代码 -编程内功心法
- .NET中的异步编程下
- 深度学习数学基础一--最小二乘法
- 【LeetCode 344】关关的刷题日记26 Reverse String
- 基于AOE网的关键路径的求解
- 【LeetCode 122】关关刷题日记25-Best Time to Buy and Sell Stock II
- 【干货】python正则表达式应用笔记
- .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0
- .NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点
- 【干货】基于pytorch的CNN、LSTM神经网络模型调参小结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。
- sklearn 模型的保存与加载
- R:如何使用RMarkdown渲染中文pdf报告
- 图解 SQL,这也太形象了吧!
- 用python爬取前程无忧网,看看我们是否真的“前程无忧”?
- 超硬核的 Python 数据可视化教程!
- Spark Core项目实战 | Top10 热门品类
- Spark Core项目实战 | 页面单跳转化率统计
- Chrome DevTools 全攻略!助力高效开发
- 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!
- 如何在ggplot2图形上添加显著性差异注释?
- 动态曲线图(linechart)--Matplotlib绘制
- 分布式事务、分布式锁、分布式session
- Redis为什么变慢了?常见延迟问题定位与分析
- PyTorch Trick集锦