介绍

我想先问一个简单的问题——你能认出下图中的两个人吗?

我肯定你说对了。对于我们这些早期数学发烧友来说,电影《美丽心灵》(A Beautiful Mind)已经深深地印在了我们的记忆中。Russell Crowe在电影中扮演John Nash,一位诺贝尔经济学奖得主(上图左侧)。

现在,你应该还记得那个经典场景:“不要追金发女郎”。在这个场景中,约翰·纳什引用道:

“当团队中的每个人都在做对自己和团队最有利的事情时,最好的结果就会出现。”

许多人认为这是著名的“纳什均衡”的发现。虽然这场景很经典,但也不一定是对的。这个场景实际上描述了“帕累托最优”。但这对我们理解博弈论还是有帮助的。

所以在这篇文章中,我们将鸟瞰博弈论。我们还将讨论博弈论在人工智能领域的应用。我以一种即使是初学者和非技术人员也能跟上的方式来写这篇文章。

目录

  1. 什么是博弈论?
  2. 博弈论中的纳什均衡
  3. 博弈类型
  4. 人工智能中的博弈论

什么是博弈论?

什么是博弈论?我相信你在某个时候曾经遇到过这个概念,但从来没有真正深入研究过它。相信我,在人工智能领域,这是一个耐人寻味的话题。

我们先来给博弈论下一个正式的定义。

博弈论可以被认为是两个或多个理性的代理人或玩家之间相互作用的模型。

在这里,我必须强调理性这个关键字,因为它是博弈论的基础。但理性究竟意味着什么呢?

我们可以简单地把理性称为一种理解,即每个行为人都知道所有其他行为人都和他/她一样理性,拥有相同的理解和知识水平。同时,理性指的是,考虑到其他行为人的行为,行为人总是倾向于更高的报酬/回报。

简而言之,每个行为人都是自私的,都试图使报酬最大化。

既然我们已经知道了理性意味着什么,让我们来看看与博弈论相关的其他一些关键词:

  • 游戏:一般来说,游戏是由一组玩家,行动/策略和最终收益组成。例如:拍卖、象棋、政治等。
  • 玩家:玩家是参与任何游戏的理性实体。例如:
    • 在拍卖会的投标人
    • 石头剪刀布的玩家
    • 参加选举的政治家等。
  • 收益:收益是所有玩家在获得特定结果时所获得的奖励。它可以是正的,也可以是负的。正如我们之前所讨论的,每个代理都是自私的,并且想要最大化他们的收益:

博弈论中的纳什均衡

纳什均衡是人工智能博弈论方法的“基石”。纳什均衡是每个玩家选择的行动满足:

“没有玩家会想要改变他们的行动。从纳什均衡中改变他们的行为意味着他们没有达到最佳状态"

“考虑到其他所有代理人都是理性的,他们都为他们自己选择最好的行动,纳什均衡产生的行动对我来说是最好的。”

任何玩家都不可能通过改变之前的决定来增加收益。我们也可以将其视为“无悔”,即一旦做出决定,玩家便不会因为考虑到后果而后悔。

为了了解纳什均衡的作用,我们现在来解决博弈论中最常见的问题——囚徒困境。这个游戏是一个经典的例子,它说明了在代理人只关心自身利益的情况下,为了共同利益而协同行动的困难。

在这个游戏中,我们有两个犯人,Alan和Ben,他们因为同样的罪行被抓了起来,被关在两个不同的审讯室里。他们有两个选择:

  1. 保持沉默
  2. 承认罪行

假设每个人都有两个选择。总共有4种结果:

  • {沉默,沉默}
  • {承认,沉默}
  • {沉默,承认}
  • {承认,承认}

这4个结果可以方便地表示为一个博弈矩阵:

在这个表达式中,支付的形式是(Alan的支付,Ben的支付)。沿着行,我们有Alan的动作,沿着列,我们有Ben的动作。

好好思考收益。为什么有收益是负的?这是因为,根据他们的行动,他们将获得预先确定的监禁年限。

结果如下:

  1. 如果两人都保持沉默,两人都将被监禁一年
  2. 如果他们中的任何一人认罪,认罪的人将获得自由,而另一名囚犯将被判15年监禁
  3. 如果两人都认罪,两人都将被判处10年监禁

这一困境的出现是因为两个囚犯都不知道另一个囚犯做了什么。那么,你认为这个问题中的纳什均衡产生的结果是什么呢?人们凭直觉大概是认为犯人会互相合作,保持沉默。

但我们也知道,囚犯会尽力减少他们所受的监禁,这关乎他们的个人利益。即使他们保持沉默,他们仍然会被监禁一年。

实际情况是这样的:

Ben也会这么想。如果我们专注于博弈矩阵,思考过程将会变得非常有趣:

  1. 在Ben坦白的情况下,Alan最好的选择就是坦白。这将导致10年的监禁而不是15年
  2. 如果Ben保持沉默,Alan最好还是坦白,因为如果他也保持沉默,他将面临一年的监禁,而不是一个自由人

所以这个博弈矩阵和Alan的想法是完全一致的。现在,如果Ben也有同样的想法,博弈矩阵对他来说应该是这样的:

假设Ben也像Alan一样经历了理性思考过程。Ben还得出结论,无论艾伦选择什么,坦白总是有益的。现在,如果我们把这两个囚犯的理性思维叠加起来,结果是这样的:

从结果来看,最好的策略是{坦白,坦白}。即使他们中的任何一个试图偏离这个动作,他们的情况也比他们通过玩这个动作所得到的更糟。因此,{坦白,坦白}是一种纳什均衡策略

很有道理,对吧?对于纳什均衡,我们可以得出这样的结论:对于任何游戏来说,它都是一个“无悔”的解决方案,但不一定是最优的。

博弈类型

我们刚刚看到一个囚徒困境的例子,两个囚徒必须同时做出决定,我们用一个博弈矩阵来表示。这些类型的博弈通常被称为正则形式的博弈

在博弈论中,游戏可以根据许多不同的标准分为许多不同的类别。

让我们仔细看看。

代理之间的交互

直观上,我们可以根据游戏中的代理是竞争还是合作来区分游戏。

政治竞选就是一个竞争游戏的好例子,一个候选人的奖励导致另一个候选人的失败。另一方面,一场篮球比赛可以被看作是一场合作的比赛,每个球员如果互相合作就会得到更多的奖励。

代理怎么进行游戏

我们还可以根据游戏是否同时存在或是否具有广泛性来对它们进行分类

为了理解这一点,让我们以一个名为“性别之战”的问题为例。

考虑到Bob和Amy两个经常一起玩。他们很清楚对方分别喜欢出去踢足球和参加舞会。这次他们决定这次一起出去玩,他们可以给对方一个惊喜或者各自玩自己的。

如果他们打算给对方一个惊喜,他们并不知道对方的周末计划。博弈矩阵描述了4种不同的情况:

博弈矩阵清楚地解释了如果Bob和Amy彼此不配合,他们就得不到任何回报。这是一个同时进行的游戏的例子,在这个游戏中,两个玩家同时行动,并且事先不知道其他玩家的行动。

另一方面,如果他们通过告诉对方自己的行动来相互配合,游戏的形式如下:

这是一个广泛的形式游戏或“回合制游戏”的例子。在这里,每个玩家都可以看到其他玩家在玩什么动作。

这是另一个直观的例子——石头-剪刀-布的游戏是同时进行游戏中的一个很好的例子。另一方面,井字棋游戏是一种广泛的形式游戏。

信息

在博弈论中,经常会出现这样的情况:玩家的信息不完整。他们可能不知道其他玩家所有可用的策略或潜在的回报。玩家可能不知道他们在和什么样的人打交道,也不知道他们的动机是什么。

根据玩家对其他代理的了解程度,游戏大致可以分为三类:

  • 完美信息
  • 不完美信息
  • 不完整信息
完美信息:

在完美信息中,每个代理都知道:

  • 其他代理可能采取的所有操作
  • 他们在做什么
  • 他们得到了多少回报

井字游戏和国际象棋就是很好的例子。在现实世界中,完美信息游戏非常罕见。此外,机器学习和深度学习方法在这些游戏中也非常有效。

不完美信息:

在这种情况下,行为人知道其他行为人的性质和动机,以及在所有可能的结果中他们会得到多少回报。但他们不知道自己在做什么。

在这里,将军知道在每个可能的情况下敌人的动机和回报。但他不知道敌人藏在哪里。因此,将军不知道他所在的确切决策节点(用虚线框表示)。不完全信息游戏在现实场景中经常遇到。

不完全信息

不完全信息是一种非常紧密地模拟现实世界的情况。在这里,代理没有关于其他代理的“类型”的信息。

即使任何给定的代理能够看到其他代理所采取的操作,他/她也不知道其他代理的动机,也不知道其他代理将从该操作中获得什么奖励。

从本质上说,不完全信息博弈是最普遍的博弈形式。

扑克是一个典型的不完全信息游戏的例子,因为玩家不知道对手手里拿的是好牌还是坏牌。

我们对扑克游戏特别感兴趣,因为它的不完全信息的性质使它很好地代表了现实世界。正因为如此,它一直被认为是不完全信息博弈的人工智能领域的一个基准问题。

人工智能中的博弈论

啊——你一定想知道这一切在人工智能的背景下意味着什么。这些不同类型的游戏和信息与人工智能有什么关系?好吧,让我们来看看!

就人工智能而言,博弈论基本上有助于做出决策。考虑到“理性”是博弈论的基础,这并不难。事实上,博弈论已经开始在人工智能中确立自己的地位——你能猜到它在哪里吗?

其中一个是生成对抗网络(GANs)的概念。它们被引述如下:

“这是过去二十年来机器学习中最酷的想法。”——Yann LeCun,人工智能和深度学习领域的领导者之一

那么博弈论是如何帮助GANs的呢?

要回答这个问题,我们需要首先了解GANs的基础知识。GAN是两个神经网络的组合,即:

  • 生成器
  • 判别器

生成器是生成随机图像的神经网络。另一方面,判别器尝试对生成的图像是属于给定的数据集还是生成的图像进行分类。

如果图像被分类为“生成的”或伪图像被判别器捕获,则生成器网络调整其参数。另一方面,如果“判别器”将生成的假图像作为数据集中的一个分类,那么“判别器”将调整其参数。

这种竞争过程一直持续下去,直到达到一种没有更多改进余地的状态。这种状态被称为“纳什均衡”。惊讶吗?

本质上,这是两个神经网络之间的竞争游戏。虽然在这种情况下,他们不断优化自己,以找到纳什均衡。

博弈论的核心实施在于信息不完全博弈。正如我们已经讨论过的,扑克是一个经典例子,它也是AI应用在不完全信息上一个不错的基准问题。

不完全信息非常重要,因为现实世界中的问题常常属于这一类。迄今为止,在人工智能的历史上,机器学习和深度学习方法在不完全信息游戏方面还暂时未取得特别大的成功。

其中一个这样的游戏是德州扑克。这是一个不完美信息游戏,因为对手的信息隐藏在他手中的牌中。这是一个非常具有挑战性的问题,考虑到在游戏中这个扑克有10的161次方的可能性

具体来说,可观测宇宙中的原子总数是10的82次方!

因此,使用蛮力建模这个游戏是不可能的。也有人尝试过使用深度学习和深度强化学习,但效果一般。

不过,由美国卡内基梅隆大学(Carnegie Mellon University)的托马斯•桑德赫姆(Tuomas Sandholm)教授和人工智能研究员诺姆•布朗(Noam Brown)开发的名为Libratus的人工智能程序,迄今为止的表现超过了以往任何一种方法。Libratus已经赢了赢过两万多次扑克牌的世界冠军。Libratus的神奇之处在于它不使用任何机器学习方法!

博弈论是Libratus的核心思想。与深度学习或强化学习方法相比,它的计算能力相对较低。为了了解更多关于博弈论在Libratus的发展中是如何应用的,以及博弈论在未来如何成为人工智能的一部分,我强烈推荐Lex Fridman和Tuomas Sandholm之间的人工智能播客:https://youtu.be/b7bStIQovcY

另一方面,人们经常讨论将机器学习和深度学习研究转移到真实的用例。由于现实世界中的案例通常是不完整信息游戏,因此大多数机器学习和深度学习方法在这方面都存在困难。

由于博弈论方法在真实用例中的通用性,它们正逐渐获得发展势头。最好的例子是Milind Tambe的工作,她是“社会公益AI”的负责人。利用博弈论的概念,米琳德坦贝处理现实世界的问题如下:

  • 公共安全
  • 野生动物保护
  • 公共卫生等

我强烈建议大家看看这段视频,看看Tambe教授是如何使用博弈论解决与上述应用相关的现实问题的。视频播放五分钟后,你将会看到博弈论是如何在真实的用例中实现的:https://youtu.be/O2su1u2AXG0

结尾

在这篇文章中,我们讨论了博弈论的基本原理,并简要介绍了基本的主题。我们甚至谈到了博弈论是如何在机器学习领域及其在现实世界中的应用。

这是一篇介绍性的文章——在以后的文章中,我们将更深入地讨论博弈论以及如何将它应用到人工智能领域,那这篇文章中,我将从技术角度进行分析。

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

OpenCV中文官方文档:http://woshicver.com/

AI的博弈论,一份插图教程的更多相关文章

  1. 《2018:skymind.ai 发布了一份非常全面的开源数据集》

    这是一份非常全面的开源数据集,你,真的不想要吗?   近期,skymind.ai 发布了一份非常全面的开源数据集.内容包括生物识别.自然图像以及深度学习图像等数据集,现机器之心将其整理如下:(内附链接 ...

  2. JAVA工程师必学技能,进阶&涨薪的推进器!这份实战教程请收下

    Netty 作为互联网中间件的基石,是 JAVA 工程师进阶为高级程序员必备的能力之一.也是目前是互联网中间件领域使用最广泛最核心的网络通信框架. Netty是一个高性能.异步事件驱动的NIO框架,它 ...

  3. Java NIO教程 目录

    "Java NIO系列教程" 是笔者hans为NIO的初学者编写的一份入门教程,想仔细学习的同学可以按照顺序去阅读.由于我学的也不是特别的精,所以错误.疏漏在所难免,希望同学们指正 ...

  4. 简书markdown教程

    1 支持 Markdown 的编辑器 Windows 推荐 Sublime Text 3,强大优雅的编辑器.MarkdownPad,一款可以直接预览排版效果的编辑器. Mac 推荐 Ulysess,专 ...

  5. 深入浅出Git教程(转载)

    目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式版本控制 1.5 ...

  6. C++教程之初识编程

    突然想写一份C++教程,并且此教程会尽量使用通俗语言来描述,进入正题! 如果你从来没有接触过编程语言,希望我的教程能够帮助你! 一.代码示例 ​ 当然我希望你暂时不要纠结我在写什么,把代码贴在前面是想 ...

  7. 从锅炉工到AI专家(3)

    剖析第一个例子 学习<机器学习>,很多IT高手是直接去翻看TensorFlow文档,但碰壁的很多.究其原因,TensorFlow的文档跨度太大了,它首先假设你已经对"机器学习&q ...

  8. 深入浅出Git教程【转载】转载

    深入浅出Git教程(转载)   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...

  9. iReport官方文档(英文版本)+ iReport中文教程

    背景介绍 最近学习iReport,但是网上找到的博客里都是断断续续,几乎没有很详尽的资料文档,要么下载收费,要么不全.很是困扰. 在此,我提供给大家两个官网文档: JasperReports Libr ...

随机推荐

  1. MySQL学习之路 一 : MySQL 5.7.19 源码安装

    MySQL 5.7.19 源码安装 查看系统: # cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 安装依赖包 # yum - ...

  2. 记一次crontab执行和日志生成问题

    一.crontab未执行 crontab里面设置定时任务如下: 1 19 * * * /usr/bin/python3 /home/nola/a.py > /home/nola/logs/a_l ...

  3. 前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践

    Serverless 是当下炙手可热的技术,被认为是云计算发展的未来方向,拥有免运维.降低开发成本.按需自动扩展等诸多优点.尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于 ...

  4. localstorage浏览器储存

    需求 a.html页面生成订单信息,b.html中调用. 通过不操作数据库,直接在浏览器自带的数据库中进行操作,当然主要是对Json数据的操作. a.html代码部分: <!--html--&g ...

  5. 【DPDK】谈谈DPDK如何实现bypass内核的原理 其一 PCI设备与UIO驱动

    [前言] 随着网络的高速发展,对网络的性能要求也越来越高,DPDK框架是目前的一种加速网络IO的解决方案之一,也是最为流行的一套方案.DPDK通过bypass内核协议栈与内核驱动,将驱动的工作从内核态 ...

  6. getBoundingClientRect的实用场景

    在用vue开发项目时候,遇到一个问题,首页有代办列表,是固定定位,滚动时候需要监听距离页面顶部的距离,如果很接近顶部则将代办列表展示,首页隐藏,如果再网上翻动则又回到首页. 因为是是fixed定位,所 ...

  7. .NET CORE之Authentication

    这篇文章以实现一个Basic认证来了解下在 .NET CORE 下面如何去实现认证. 首先可以肯定的是认证实现是基于 Middlerware 管道实现的,官方源码地址:https://github.c ...

  8. JS反爬绕过思路之--谷歌学术镜像网链接抓取

    首先,从问题出发: http://ac.scmor.com/ 在谷歌学术镜像网收集着多个谷歌镜像的链接.我们目标就是要把这些链接拿到手. F12查看源码可以发现,对应的a标签并不是我们想要的链接,而是 ...

  9. 痞子衡嵌入式:恩智浦SDK驱动代码风格、模板、检查工具

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦 SDK 驱动的代码风格. 上周痞子衡受领导指示,给 SE 同事做了一个关于 SDK 代码风格的分享.随着组内新人的增多,这样的培训 ...

  10. Java自学路线图之Java框架自学

    Java自学路线图的框架分为两个阶段,第一阶段的Java框架包含六个内容:MyBatis,Spring,SpringMVC,Maven高级,Git,Dubbo. 在Java自学过程中掌握框架的使用,对 ...