读AI3.0笔记07_游戏与推理

news2024/11/15 12:38:40

1. 始于游戏,不止于游戏

1.1. 开发超人类的游戏程序并不是人工智能的最终目的

1.2. AlphaGo所有的版本除了下围棋,其他什么也不会

1.2.1. 其最通用的版本AlphaGo Zero也一样

1.3. 这些游戏程序中没有一个能够将其在一款游戏中学到的知识迁移到其他游戏中,来帮助其学习不同的游戏

2. 强化学习

2.1. 驯兽师最重要的驯兽方法

2.1.1. 奖励其正确的行为,忽略其不正确的行为

2.1.2. 这种经典的训练技巧,在心理学上被称为操作性条件反射,已经在动物和人类身上应用了数个世纪

2.2. 强化学习在人工智能领域的一项举世震惊的重大成就中发挥了关键性作用:一个程序在复杂的围棋游戏中击败了世界上顶级的人类棋手

2.3. 在其最纯粹的形式下,强化学习不需要任何被标记的训练样本

2.3.1. 代替它的是一个智能体,即学习程序,在一种特定环境(通常是计算机仿真环境)中执行一些动作,并偶尔从环境中获得奖励,这些间歇出现的奖励是智能体从学习中获得的唯一反馈

2.4. 你越是想让机器人变得智能,手动设定它的行为规则就会越困难

2.5. 从人类的角度来看,我们常常会有一种“迷信”,即认为某种特定的行为将能帮助引发特定的好的或坏的结果

2.6. 设计成功的强化学习系统仍然是一种很难的但有时却很赚钱的技巧,只有一小部分像深度学习领域的同行一样,花费大量时间调节超参数的专家才能掌握

2.7. 愿景是智能体(如机器狗)能够通过在现实世界中执行一些动作并偶尔获得奖励(即强化)的方式来自主地学习灵活的策略,而无须人类手动编写规则或直接“教育”智能体如何应对各种可能的情况

2.7.1. 算法会告诉机器人如何从它的经验中进行学习

2.7.2. 强化学习是通过使机器人在一系列学习片段中采取动作来实现的,每个学习片段都包含一定数量的迭代

2.7.3. 一次性学习太多对其可能是有害的

2.8. 目标是让智能体自己学习并获得能对即将到来的奖励进行更好的预测的值,前提是智能体在采取相关行动后一直在做正确的选择。正如我们将看到的,习得给定状态下特定动作的值通常需要经过许多次的试错

2.9. 关键概念是在一个给定的状态下执行一个特定动作的值。状态S下动作A的值是一个数字,表示在状态S下,如果执行动作A,智能体预测最终将获得多少奖励,智能体只需执行高值的动作即可

2.9.1. 由状态、动作和值组成的表被称为Q表(Q-table)

2.9.1.1. Q表,在复杂现实世界任务中,不可能定义一小组能够罗列在一个表格中的“状态”
2.9.1.2. 大多数当下的强化学习方法使用的是神经网络而非Q表
2.9.1.2.1. 神经网络负责学习在一个给定状态下应给动作分配什么值
2.9.1.2.2. 神经网络将当前状态作为输入,其输出是智能体在当前状态下能够采取的所有可能动作的估计值
2.9.1.2.3. 网络学习的目标是将相关状态组成通用概念

2.9.2. Q学习算法是一种为给定状态下的动作赋值的方法,包括那些不直接获得奖励但能帮助智能体经历相对较少的状态就获得奖励的动作

2.10. 在现实世界中,使用真的机器人通过许多片段来真正地执行学习过程的难度很大

2.10.1. 强化学习的实践者几乎都会构建机器人和环境的模拟,然后在模拟世界而非在现实世界中执行所有的学习片段

2.10.2. 环境愈复杂和不可预测,将机器人在模拟中学到的技能转移到现实世界的尝试就愈加难以成功

2.10.3. 迄今为止强化学习最大的成功不是在机器人领域,而是在那些能够在计算机上进行完美模拟的领域

2.10.4. 强化学习最知名的成功是在游戏领域

2.11. 时序差分学习

2.11.1. temporal difference learning

2.11.2. 强化学习不是将其输出与人类给定的标签进行匹配,而是假设后续迭代给出的值比前面迭代给出的值更好,网络学习的是使其输出在一次迭代到下一次迭代的过程中保持一致

2.12. 与监督学习不同,强化学习可以使程序能够真正靠自己去学习,简单地通过在预设的环境中执行特定动作并观察其结果即可

2.12.1. 无须人类的任何指导

2.12.2. 即便在最具挑战性的领域,不用人类的示例或指导,除基本规则之外不提供任何其他领域的知识,程序也有可能训练到超人类水平

3. 学会玩游戏

3.1. 电子游戏像是现实世界的缩影,但更纯净并且更易被约束

3.2. 无论你对电子游戏持何种立场,如果你更倾向于纯净且受控制,而非真实,你可能会考虑创建人工智能程序来玩20世纪七八十年代的雅达利电子游戏,这正是DeepMind团队决定要做的事

3.3. 打砖块

3.3.1. 是雅达利为其大获成功的《乒乓》游戏开发单人模式的成果

3.3.1.1. 雅达利游戏程序没有被植入游戏的规则

3.3.2. 其设计和实现任务最初是在1975年被分配给了一名20岁的名叫史蒂夫·乔布斯(Steve Jobs)的员工

3.3.2.1. 当时的乔布斯缺乏足够的工程技能
3.3.2.2. 邀请了他的好朋友——25岁的史蒂夫·沃兹尼亚克(Steve Wozniak)来帮忙
3.3.2.3. 苹果公司的联合创始人

3.3.3. 即使这个玩家被训练到超人水平,只要将球拍在屏幕上的位置移动几个像素,系统的表现就会骤然下降

3.3.3.1. 意味着系统甚至没有学到“球拍”这种基本概念的含义

3.3.4. 当屏幕的背景颜色被改变时,系统的表现会显著下降

3.3.4.1. 如果没有大量的重新训练,系统无法将对这一概念的理解力泛化为向下或向侧面挖隧道的能力

3.4. 深度Q学习

3.4.1. deep Q-learning

3.4.2. DeepMind团队将强化学习,尤其是Q学习,与DNN相结合,创建了一个能够学习玩雅达利电子游戏的系统

3.5. 随机搜索

3.5.1. 这种算法不是通过多个片段的强化学习来训练深度Q网络,而是通过随机选择权重的方式来测试不同的ConvNets

3.5.2. 这种算法完全通过随机试错来进行学习

3.5.3. 优步的研究人员持续尝试新的随机权重网络,最终他们用比训练一个深度Q网络更少的时间,找到了一个能在他们测试的13款游戏的5款中与深度Q学习算法训练的网络表现得一样好甚至更好的网络

3.6. 遗传算法

3.6.1. 在13款游戏中的7款都表现得优于深度Q学习算法

3.7. 如何更新权重?这是监督学习和强化学习之间的核心差异

3.7.1. 反向传播的工作原理是通过改变神经网络的权重以减少网络输出的误差

3.7.2. 在监督学习中,测量这种误差非常直截了当

3.7.3. 在强化学习中我们没有标签

3.7.3.1. 一个来自游戏的给定的帧并不带有指示系统应采取某种动作的标签

3.7.4. 通过反向传播学习调整网络权重,从而使得当前与先前迭代输出之间的差异最小化

3.7.4.1. 从猜测中学习猜测
3.7.4.2. 从更好的猜测中学习猜测

3.8. 塞缪尔的西洋跳棋程序是基于搜索博弈树(game tree)的方法,该方法是迄今为止所有棋类游戏程序的基础

3.8.1. 即使计算机不做详尽的搜索,也有可能表现得很好

3.8.2. 程序就会使用一个被称为“极小化极大”(minimax)的经典算法

3.8.3. 博弈树、评估函数和“自对弈学习”(learning by self-play)

3.8.4. 一台机器最终在1994年战胜了人类跳棋冠军

3.9. 在1997年,也就是深蓝击败国际象棋世界冠军卡斯帕罗夫的同一年,当时最好的围棋程序仍然会被普通棋手轻易击败

3.9.1. 深蓝没有在任何核心部件上使用机器学习方法

3.9.2. 一个国际象棋棋手在一个给定棋局中平均有35种可能的行棋方式

3.10. 围棋

3.10.1. 围棋已有两千多年的历史,被公认为所有棋类游戏中最难的

3.10.1.1. 规则简单却能产生无穷的复杂性

3.10.2. 围棋的博弈树的规模要比国际象棋大得多

3.10.2.1. 一个围棋棋手平均有250种这样的行棋方式
3.10.2.2. 即便使用专用的硬件,对围棋的博弈树进行“深蓝式”的暴力搜索也是不可行的

3.10.3. 没有人能够为围棋棋局创建一个良好的评估函数

3.11. 蒙特卡洛方法

3.11.1. 在科学和数学领域,蒙特卡洛指的是一系列计算机算法,即所谓的“蒙特卡洛方法”(Monte Carlo method),这一方法最初用在曼哈顿计划中来帮助设计原子弹

3.11.2. 就像蒙特卡洛赌场那标志性的快速旋转的轮盘一样,一定程度的随机性可被用在计算机上来解决复杂的数学问题

3.11.2.1. 受轮盘赌启发的随机性被用来决定如何前瞻

3.12. 蒙特卡洛树搜索

3.12.1. 蒙特卡洛树搜索是专门为计算机游戏程序设计的蒙特卡洛方法的一个版本

3.12.2. 蒙特卡洛树搜索不是DeepMind的计算机科学家发明的,而是2006年在博弈树的基础上被首次提出的,并且它的出现使计算机围棋程序的水平得到大幅提升

3.12.3. 这些程序还无法战胜最出色的人类棋手,其中一个原因是:从走子演算中生成足够多的统计数据需要花费大量时间,特别是对于存在大量可能行棋方式的围棋来说

3.12.3.1. 可以使用一个深度卷积神经网络来对蒙特卡洛树搜索进行补充,以提升它们的系统能力
3.12.3.2. 从原则上说,ConvNets将会通过这一学习过程学会辨识局势,就像围棋大师一样

3.13. AlphaGo

3.13.1. 创建一个学习下围棋的程序,而且要比所有人类棋手都下得更好

3.13.2. 仅仅20年之后,AlphaGo就通过深度Q学习学会了围棋,并在一场五局三胜制的比赛中击败了世界上最出色的围棋棋手之一李世石

3.13.3. 顶级围棋棋手区别于常人的东西是他们的直觉,我们在AlphaGo中所做的就是将这种所谓的直觉引入神经网络中

3.13.3.1. 哈萨比斯
3.13.3.2. 如果你觉得AlphaGo也有直觉,那么这种直觉源自它对深度Q学习和蒙特卡洛树搜索这些方法的巧妙结合

3.13.4. AlphaGo在应用蒙特卡洛树搜索时就不用通过查看棋局局势来猜测哪种行棋方式最可能通往胜利,而只根据走子演算收集的关于给定行棋方式最终指向胜利或失败的统计数据,来判断下一步的最佳行棋策略

3.13.4.1. 程序执行的走子演算越多,其统计数据就越有参考价值
3.13.4.2. 该程序需要平衡“效用”(在走子演算期间选择得分最高的行棋方式)和“探索”(偶尔选择程序尚未有太多统计数据的得分较低的行棋方式)

3.13.5. 人工智能领域中长期以来的重大挑战之一,能够被强化学习、ConvNets和蒙特卡洛树搜索,以及在这一组合中加入的强大的现代计算硬件所体现出的创造性征服

3.13.6. AlphaGo的这些关键部分没有一个是通过纯粹的强化学习,从数据中学到的,相反,它们是由DeepMind的程序员在一开始就植入其内的

3.13.7. 尽管AlphaGo在下围棋时表现出了神奇的直觉能力,但是该系统没有任何机制,能使其在不经重建和重新训练深度Q网络的情况下,泛化它的围棋能力,即便是泛化到一个更小的或形状不同的围棋棋盘上

3.14. AlphaGo Zero

3.14.1. 比AlphaGo更简单也更高级

3.14.2. 与之前的版本不同的是:除了围棋规则之外,AlphaGo Zero对围棋的知识是从“零”开始的

3.14.3. 在AlphaGo Lee与AlphaGo Zero的100场对弈中,AlphaGo Zero取得了完胜

3.14.4. AlphaGo Zero确实没有在学习过程中使用任何人类示例,但并不是说它不需要人类的指导

3.14.5. 某些方面的人类指导对其成功至关重要

3.14.5.1. 它的ConvNets的具体架构
3.14.5.2. 对蒙特卡洛树搜索方法的使用
3.14.5.3. 这两者所涉及的众多超参数的设置

3.15. 对人工智能而言,人类玩的许多游戏甚至比围棋更具挑战性

3.15.1. 猜字谜游戏

3.15.1.1. 这个游戏需要远超任何现有人工智能系统的复杂的视觉、语言和社会理解能力

4. 通用人工智能

4.1. 必须是一种通用人工智能,也就是它可以根据自身的经验和数据来学习如何做事

4.2. 对于人类来说,智能的一个关键点并非在于能够学习某一特定的技能,而在于能够学会思考,并且可以灵活地将这种思考能力用于应对任何可能遇到的情况或挑战,这也是我们希望孩子们能够通过下国际象棋或围棋学习到的真正技能

4.3. 迁移学习

4.3.1. transfer learning

4.3.2. 是指一个程序将其所学的关于一项任务的知识进行迁移,以帮助其获得执行不同的相关任务的能力

4.3.3. 对于人类来说,迁移学习是自动进行的

4.3.3.1. 人类这种从一种任务到另一种任务的能力迁移看起来毫不费劲
4.3.3.2. 我们对所学知识进行泛化的能力正是思考的核心部分

4.3.4. 与人类不同的是,这些程序中没有一个能够将其在一款游戏中学到的知识迁移到其他游戏中,来帮助其学习不同的游戏

4.3.4.1. 当今人工智能领域中的大多数学习算法在相关的任务之间不是可迁移的
4.3.4.2. 就好像你学会了玩《乒乓》,但是为了学会玩《打砖块》,你必须完全忘记你学过的关于《乒乓》的所有知识,并重新开始

4.4. 模拟越逼真,在计算机上运行的速度就越慢,并且即便使用一台速度非常快的计算机,要把所有的物理作用力和装载碗碟的各方面相关参数都精确地置入模拟中也极其困难

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

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

相关文章

引领未来:云原生在产品、架构与商业模式中的创新与应用

文章目录 一、云原生产品创新二、云原生架构设计三、云原生商业模式变革《云原生落地 产品、架构与商业模式》适读人群编辑推荐内容简介目录 随着云计算技术的不断发展,云原生已经成为企业数字化转型的重要方向。接下来将从产品、架构和商业模式三个方面&#xff0c…

融合创新:传统企业数字化转型的业务、战略、操作和文化变革

引言 随着科技的不断演进,传统企业正站在数字化转型的前沿,这是一场前所未有的全面变革之旅。数字化已经超越了单纯的技术升级,成为企业保持竞争力、开创未来的必然选择。本文将引领您探讨,迈向数字化未来的传统企业全面数字化转…

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据…

解密:消息中间件的选择与使用:打造高效通信枢纽

目录 第一章:消息中间件介绍 1.1 什么是消息中间件 1.2 消息中间件的作用 1.3 消息中间件的分类 第二章:消息中间件的选择标准 2.1 性能 2.2 可靠性 2.3 可扩展性 2.4 易用性 2.5 社区支持 2.6 成本 第三章:常见的消息中间件对比…

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace,即容器和宿主机使用同一个IP、端口范围(容器与宿主机或其他使…

[ACM学习] 进制转换

进制的本质 本质是每一位的数位上的数字乘上这一位的权重 将任意进制转换为十进制 原来还很疑惑为什么从高位开始,原来从高位开始的,可以被滚动地乘很多遍。 将十进制转换为任意进制

VsCode提高生产力的插件推荐-持续更新中

别名路径跳转 自定义配置// 文件名别名跳转 "alias-skip.mappings": { "~/": "/src", "views": "/src/views", "assets": "/src/assets", "network": "/src/network", "comm…

CNN卷积理解

1 卷积的步骤 1 过滤器(卷积核)(Filter或Kernel): 卷积层使用一组可学习的过滤器来扫描输入数据(通常是图像)。每个过滤器都是一个小的窗口,包含一些权重,这些权重通过训…

Supervised Contrastive 损失函数详解

有什么不对的及时指出,共同学习进步。(●’◡’●) 有监督对比学习将自监督批量对比方法扩展到完全监督设置,能够有效地利用标签信息。属于同一类的点簇在嵌入空间中被拉到一起,同时将来自不同类的样本簇推开。这种损失显示出对自然损坏很稳…

支付宝AES如何加密

继之前给大家介绍了 V3 加密解密的方法之后,今天给大家介绍下支付宝的 AES 加密。 注意:以下说明均在使用支付宝 SDK 集成的基础上,未使用支付宝 SDK 的小伙伴要使用的话老老实实从 AES 加密原理开始研究吧。 什么是AES密钥 AES 是一种高级加…

k8s实例

k8s实例举例 (1)Kubernetes 区域可采用 Kubeadm 方式进行安装。 (2)要求在 Kubernetes 环境中,通过yaml文件的方式,创建2个Nginx Pod分别放置在两个不同的节点上,Pod使用动态PV类型的存储卷挂载…

虚幻UE 插件-像素流送实现和优化

本笔记记录了像素流送插件的实现和优化过程。 UE version:5.3 文章目录 一、像素流送二、实现步骤1、开启像素流送插件2、设置参数3、打包程序4、打包后的程序进行像素流参数设置5、下载NodeJS6、下载信令服务器7、对信令服务器进行设置8、启动像素流送 三、优化1、…

路飞项目--03

总页面 二次封装Response模块 # drf提供的Response,前端想接收到的格式 {code:xx,msg:xx} 后端返回,前端收到: APIResponse(tokneasdfa.asdfas.asdf)---->{code:100,msg:成功,token:asdfa.asdfas.asdf} APIResponse(code101,msg用户不存…

数据结构排序算详解(动态图+代码描述)

目录 1、直接插入排序(升序) 2、希尔排序(升序) 3、选择排序(升序) 方式一(一个指针) 方式二(两个指针) 4、堆排序(升序) 5、冒…

精酿啤酒:啤酒花的选择与处理方法

啤酒花在啤酒的酿造过程中起着重要的作用,它不仅赋予啤酒与众不同的苦味和香味,还为啤酒的稳定性提供了帮助。对于Fendi Club啤酒来说,啤酒花的选择和处理方法更是重要。下面,我们将深入探讨Fendi Club啤酒在啤酒花的选择和处理方…

一文详解C++拷贝构造函数

文章目录 引入一、什么是拷贝构造函数?二、什么情况下使用拷贝构造函数?三、使用拷贝构造函数需要注意什么?四、深拷贝和浅拷贝浅拷贝深拷贝 引入 在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎。 相当…

【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁

目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法: 1.普通方法 将synchronized修饰在普通同步方法,那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…

el-table 动态渲染多级表头;一级表头根据数据动态生成,二级表头固定

一、表格需求: 实现一个动态表头,一级表头,根据数据动态生成,二级表头固定,每列的数据不一样,难点在于数据的处理。做这种表头需要两组数据,一组数据是实现表头的,另一组数据是内容…

【洛谷】P1135奇怪的电梯(DFS)

这题利用 dfs 解决,编程实现比较简单。 具体来说,每层楼有两种可能,上楼或下楼,因此可以形成一个以 a 楼为根的二叉树,因此只需一个 for 循环遍历某个父节点的两个子节点,之后递归就行。 易错点&#xff…

马尔可夫预测(Python)

马尔科夫链(Markov Chains) 从一个例子入手:假设某餐厅有A,B,C三种套餐供应,每天只会是这三种中的一种,而具体是哪一种,仅取决于昨天供应的哪一种,换言之&#…