注:此文有大量原文引用,但并无牟利目的,如涉及版权问题,请通知本人下架。另禁止转载。
[格式]
原文摘录
我的批注
人工智能基础(高中版)
第一章 人工智能: 新时代的开启
1 人工智能的用途
应用的角度说,人工智能最核心的能力就是根据给定的输入做出判断或预测。
例子:
·在人脸识别应用中,它是根据输入的照片,判断照片中的人是谁。
·在语音识别中,它可以根据人说话的音频信号,判断说话的内容。
·在医疗诊断中,它可以根据输入的医疗影像,判断疾病的成因和性质。
·在电子商务网站中,它可以根据一个用户过去的购买记录,预测这位用户对什么商品感兴趣,从而让网站做出相应的推荐。
·在金融应用中,它可以根据一只股票过去的价格和交易信息,预测它未来的价格走势。
·在围棋对弈中,它可以根据当前的盘面形势,预测选择某个落子的胜率。
2 人工智能的原理 - 机器学习
如语音和图像的识别,很难以人工的方式定义具体的规则。因此,当代的人工智能普遍通过学习(leaming)来获得进行预测和判断的能力。这样的方法被称为机器学习
(machine learning),它已经成为人工智能的主流方法。
(无/半)监督学习
机器学习有多种不同的方式。最常见的一种机器学习方式是监督学习
(super- vised earing)。这里,我们希望能得到一个公式来预测一种机器学习的算法然后依据这些反馈不断地对预测的公式进行调整。在这种学习方式中,预测量的真实值通过提供反馈对学习过程起到了监督的作用。我们称这样的学习方式为监督学习。在实际应用中,监督学习是一种非常高效的学习方式。
不提供监督信息(预测量的真实值)的条件下进行学习。我们称这样的方法为无监督学习
(unspervised eaming)。
无监督学习往往比监督学习困难得多,但是由于它能修助我们克服在很多实际应用中获取监督数据的困难,因此一直是人工智能发展的一个重要研究方向。
半监督学习
(semi-supervised learning)介于监督学习与无监督学习之间,它要求对小部分的样本提供预测量的真实值。这种方法通过有效利用所提供的小部分监督信息,往往可以取得比无监督学习更好的效果
强化学习
比如在下棋、股票交易或商业决策等场景中,我们关注的不是某个判断是否准确,而是行动过程能否带来最大的收益。为了解决这类问题,人们提出了种不同的机器学习方式,称为强化学习
(reinforcement learning)。
强化学习的目标是要获得一个策略
(polioy)去指导行动。比如在围棋博奔中这个策略可以根据盘面形势指导每一步应该在哪里落子;在股票交易中,这个策略会告诉我们在什么时候买人、什么时候卖出。
在 2016 年击败围棋世界冠军李世三九段的阿尔法狗,其令世人震惊的博弈能力就是通过强化学习训练出来的。
区别:
与监督学习不同,强化学习不需要一系列包含输入与预测的样本,它是在行动中学习。
第二章 牛刀小试:察异辨花
1 特征
① 特征
特征是在分类器乃至于所有人工智能系统中非常重要的概念。
因此,我们需要根据物体和数据本身具有的特点,考虑不同类别之间的差异,并在此基础上设计出有效的特征。而这不是一件简单的事一它往往需要我们真正理解事物的特点和不同类型之间的差异。
特征的质量很大程度上决定了分类器最终分类效果的好坏。
例子:
上面例子中使用的花瓣长度和宽度是较为简单的特征。在
② 特征向量
用x1来表示花瓣的长度,用x2来表示花瓣的宽度。为了使用方便,进一步地把这两个数字一起放进括号中,写成(x1,x2)。这种形式的一组数据在数学中被称为向量(vector)
有了向量这个数学工具后,我们就可以把描述一个事物的特征数值都组织在起,形成一个特征向量(feature vector),对它进行更完备的刻画。
如图 2-5 所示,我们把鸢尾花的特征向量画在了坐标系中。坐标系中的一个点就代表了一朵鸢尾花的特征,这些表示特征向量的点被称为特征点
(feature point):所有这些特征点构成的空间被称为特征空间
(feature space)。
2 分类器
在区分鸢尾花品种的简单例子中,我们可以直接画出一条直线将两类点分开。
而分类器就是用计算机帮人画出这条线
在分类中,训练和测试数据一般都需要知道它门实际的类别。人工
地给数据标上真实类别(其他任务中对应着其他真实的值)的过程被称为数据的标注(anno-tation)。数据标注的过程耗时耗力,有的数据标注还可能需要相关领域的专业知识。
经过埃德加·安德森的采集和标注后,我们得到了如图 2-9 所示的数据集
:
有了这样的数据集,我们就可以在它基础之上去训练一个分类器。当一个数据集饺用于分类器训练,我们会称之为训练集
(raining)。
人工智能系统也类似,它的学习过程被称为训练(training);考试过程被称为测试(testing);它解决实际问题的过程,被称为应用(application)。
训练分类器
① 训练的原理
在图 2-10 中通过简单的示意图来进行说明:最开始分类直线分错了两个样本,分类的直线便向该误分类样本一侧移动;第一次调整以后,一个误分类样本的预测被正,但仍有一个样本被误分类一这个仍被误分类的样本到分类直线的距离相比调整之前减小了。接下去,直线向着这个仍被误分类的样本一侧移动,直到分类直线越过该误分类样本。这样,所有训练数据都被正确分类了。
损失函数(loss function)
是在训练过程中用来度量分类器输出错误程度的数学化表示。预测错误程度越大,损失函数的取值就越大。
有了损失函数衡量分类器对数据的误分类程度后,我们可以用优化的方法来调整
分类器的参数,以减少分类器对数据的误分类。 一般地,优化
(optimization)就是调整分类器的参数,使得损失函数最小的过程。
定义合适的损失函数对于训练分类器是非常重要的。
感知器和支持向量机就是基于不同的损失函数建立起来的。
所以他们本质上都是算法
② 训练的方法
下面我们介绍两种常见的训练线性分类器的算法
一感知器和支持向量机,它们提供了两种利用训练数据自动寻找参数的方法。
- 1
感知器
略
- 2
支持向量机
略
③ 衡量训练的成效
在整个测试集上都测试一遍后,我们统计出分类器分类正确的样本数,它与测试样本总数的比率可以反映预测的准确程度,被称为分类准确率
(classification accur)
多分类
上面我们介绍了对两类物体的分类,即二分类
(binary classification)。实际中,我们住往需要对多种类别进行分类,比如区分牡丹、荷花、梅花等多种花。那么我们该如何解决这样的多分类
(multiclass classification)问题呢?
回顾前面的例子,我们使用了一个分类函数解决了二分类问题。在多分类问题中,我们是否可以把多分类问题转化为多个二分类问题呢?我们使用多个二分类函数,其中的每一个分类函数都有自己的参数,只负责区分一个类别。
例子: 如图 2-18 所示,我们有三个分类器,分别是牡丹、荷花、梅花的分类器,它们只负责区分某一个类别是牡丹不是牡丹,是荷花不是荷花,是梅花不是梅花。当输人一张图片的特征向量后,三个分类器都能够输出自已的预测,综合三个预测结果,我们最终就能够得到多分类的预测结果。
经过归一化
指数函数后,它们的值都大于零,并且加起来和为 1。我们可以将它们看作概率,即输人属于某一类的可能性大小。比如输出(0.013,0.265,0.722) 可以表示有 1,3%的可能性属于第一类,有 26.5%的可能性属于第二类,有 72.2%的可能性属于第三类。因此输入很有可能属于第三类。
3 应用
① 人脸识别
相机中的人脸检测技术使用的就是二分类技术。它的整个流程如图 2-20 所示,一张照片首先被切割成一块块的图像块。
然后每一个图像块都会经过人脸分类器去判明别是否是人脸。
出来的不同位置、不同尺寸的图像块都是人脸。这些框都在人脸的附近,我们可以通过后处理融合技术,将这些框融合为一个框,得到右图的结果。
② 医疗
癌症检测
,从分类的角度来看,就是一个二分类问题一判断生物组织样本的每一个区域是否是肿瘤(tumor)。
这个结果在测试数据上已经能够达到并超过一般的人类病理学家。
第三章 别具慧眼: 识图认物
1 深度神经网络(深度学习)
原理
① 利用卷积提取图像特征
卷积运算在图像处理中应用十分广泛,许多图像特征提取方法都会用到卷积。
以灰度图为例,我们知道在计算机中一幅灰度图像被表示为一个整数的矩阵。如果我们用一个形状较小的矩阵和这个图像矩阵做卷积运算
,就可以得到一个新的矩阵,这个新的矩阵可以看作是一幅新的图像。换句话说,通过卷积运算,我们可以将原图像变换为一幅新图像。这幅新图像有时侯比原图像更清楚地表示了某些性质
,我们就可以把它当作原图像的一个特征。这里用到的小矩阵就称为卷积核
(convolution kernel)。
通过卷积,我们可以从图像中提取边缘 特征
。
更进一步地,研究者们设计了一些更加复杂而有效的特征。方向梯度直方图(histogram of oriented gradients, H0G)是一种经典的图像特征,在物体识别和物体检测中有较好的应用。
② 一个深度神经网络通常由多个顺序连接的层
(layer) 组成。
第一层一般以图像为输入,通过特定的运算从图像中提取特征。接下来每一层以前一层提取出的特征输入,对其进行特定形式的变换,便可以得到更复杂一些的特征。这种层次化的特征提取过程可以累加,赋予神经网络强大的特征提取能力。经过很多层的变换之后,神经网络就可以将原始图像变换为高层次的抽象
的特征。
这种由简单到复杂、由低级到高级的抽象过程可以通过生活中的例子来体会。例如,在英语学习过程中,通过字母的组合,可以得到单词;通过单词的组合,可以得到句子;通过句子的分析,可以了解语义;通过语义的分析,可以获得表达的思想或目的。而这种语义、思想等,就是更高级别的抽象。
拓展:
深度学习
的“深
”其实表征着神经网络的层数之多,更进一步代表着模型参数之多。一个参数更多的模型,其可学习和调整的空间就更大,表达能力就更强。
2012 年超越传统方法 10 个百分点的 A1exNt,共有 5 个卷积层;而到了 2016 年的 PolyNet,则有足足 500 多个卷积层。
③ 训练神经网络
为了将鸢尾花的二维向量分成两类,我们只需要训练三个参数。而在 Alex Net 中,需要学习的参数多达六千万个,其难度远高于线性分类器的训练。针对神经网络训练的问题,人工智能科学家们提出了反向传播(backpropagation)算法
(图 3-19)。它是训练神经网络最有效的手段之一。
解释: 每次我们将一幅训练图像输人网络中,经过逐层的计算,最终得到预测的属于每一类的概率,我们将预测结果与正确答案进行对比,如果发现预测结果不够好,那么会从最后一层开始,逐层调整神经网络的参数,使得网络对这个训练样本能够做出更好的预测。我们将这种从后往前调整参数的方法称为反向传播算法。
具体的调整算法涉及梯度计算的链式法则(chain rule)和随机梯度下降(stochastic gradient descent)等更复杂的知识,这里不做详细介绍。
应用
① 图片分类
然而 2012 年的 Image Net 挑战赛给人们带来了惊喜,来自多伦多大学的参赛团队首次使用深度神经网络,将图片分类的错误率一举降低了 10 个百分点,正确率达到 84.7%。自此以后,Image Net 挑战赛就是深度神经网络比拼的舞台。仅三年后,来自微软研究院的团队提出一种新的网络结构,将错误率降低到了 4.9%,首次超过了人类的正确率。到了 2017 年,图片分类的错误率已经可以达到 2.3%。这是举办 Image Net 挑战赛的最后一年,因为深度神经网络已经比较好地解决图片分类的问题。
深度神经网络之所以有这么强大的能力,就是因为它可以自动从图像中学习有效的特征。
② 人脸识别
在深度神经网络被应用于“人脸识别”任务之前,传统的机器学习算法也曾试图解决这一问题。但是由于传统算法在进行识别的过程中,无法同时确保准确率与识别效率,这一情况使得传统人脸识别算法很难达到应用规模。而当前的在亿万级别人脸数据上川练得到的深度模型,在使用时则可以同时满足大规模和高精度的要求,真正应用于生活的方方面面。
优势
- 1 在计算机视觉的各个领域,深度神经网络学习的特征也逐渐替代了手工设计的特征,人工智能也变得更加“智能”。
- 2 另一方面,深度神经网络的出现也降低了人工智能系统的复杂度。
如图 3-14 所示,在传统的模式分类系统中,特征提取与分类是两个独立的步骤,而深度神经网络将二者集成在了一起。我们只需要将一张图片输人给神经网络,就可以直接得出对图片类别的预测,不再需要分步完成特征提取与分类。从这个角度来讲,深度神经网络并不是对传统模式分类系统的颠覆,而是对传统系统的改进与增强。
弊端
① 深度学习 过多的层数 带来的问题:
1 过多的层数带来过多的参数,很容易导致机器学习中一个常见的通病:过拟合
。
训练模型的过程是在训练集上完成的,而我们对一个模型表现的评测会在测试集上完成。有的模型在训川练集上是一等一的“优等生”,但是在测试集上的表现却不尽如人意,有时的表现都不能达到及格水平。我们将这种复杂模型过多地“迎合”训练数据、导致其在大量新数据上表现很差的现象称为过拟合(overfitting)
。
就好比在学习解数学题时,有时候会遇到一些偏题、怪题,甚至参考答案错误的题目,但我们却喜欢钻牛角尖,死记硬背这些题目的解法,然后机械地套用到正常题目上而导致做错。而欠拟合的模型则是一个反应有些愚钝的“差生”:在训练数据和新数据上的表现都不能让人满意,简而言之就是能力有限。这种由于模型本身过于简单能力较弱,而导致的在训练过程中准确率很低并且难以提升、在新数据上表现同样很差的现象称为欠拟合(under-fitting)
。
在图像分类任务中,过拟合可以理解为由于模型的能力太强大,在训练过程中不但记住了训练集中需要被分类样本的真实特征,也记住了训练集中的很多噪声
信息。这导致模型虽然在训练集上分类准确率可以达到很高甚至 100%,但在对新加入的数据进行分类时,这个死板的“优等模型”所给出的结果往往是错的,
有时候短视的人也是一种过拟合 太重视短期内的杂乱的波动的随机的噪声信息了
那么如何在加深网络结构、增加网络表达能力的同时,尽量避免过拟合的情况呢?神经网络训练中常用权值衰减(weight decay)等正则化(regularization)方法来解决这个问题。相应的技术细节在这里不一一展开,大家有兴趣可自行查阅相关资料。
2 事实上,对网络进行简单堆叠加深还会导致一种影响性能的现象:梯度消失
(gradient vanish)。
那么什么是梯度,梯度又为什么会消失呢?
在第二章我们简单介绍了优化的概念,优化的目标就是使得网络输出的预测值和目标值更加接近。深度网络的训练也是一种优化的过程一在这里,寻找一个在特定任务上表现较好的网络。如果将网络训练的过程比喻成下山,优化过程就相当于在连绵起伏的山脉中找到最低的那个低谷。而梯度
,就相当于在行走的每一步中对优化方向的指引
这种“指”最直接的来源就是模型的输出结果与目标输出的差别,也就是误差。在前面提到的反向传播算法中,我对每一层参数的调整正是通过这种误差的传播完成的。如果网络过深,这种来自遥远的输出层的误差会逐层地被指数级缩小(或放大)。假设每经过一层,数值范围变成原来的一半,那么经过 10 层后,0.50= 0.00097, 意味着倒数第 11 层的梯度数值是最后一层梯度的千分之一。此时的“梯度”将逐渐接近于 0,也就是说梯度在反向传播的过程中逐渐“消失了”。梯度消失后,网络的优化过程失去了指导,将无法找到一个较好的解(如图 3-25 所示)。
解决这个问题常用的技术有批处理化(batch normalization)和跨层连接(short- ct)等,我们不详细探讨,有兴趣的同学可以查阅相关资料。
第四章 耳听八方:析音赏乐
1 数字化
的听觉感受器把声波传导到听神经。但是计算机是无法存储连续信号的,因此我们需要通过采样使得电信号在时间上变得离散,再通过量化使得它在幅度上变得离散。
当采样频率比较高时,波形看起来是近似连续的。
即: 从声波到最终的 MP3 文件主要经历了采样
(sampling)、量化
(quantization)和编码
(encoding)等步骤。
计算机里面的音频文件描述的实际上是一系列按时间先后顺序排列的数据点,所以也被称为时间序列
(time series),把它可视化出来就是我们常见的波形
(waveform),其横坐标代表时间,纵坐标没有直接的物理意义,它反映了传感器在传导声音时的振动位移。
2 提取特征
这里我们要学习一个比频谱更加有效且被广泛使用的特征一梅尔频率倒谱系数
(Mel-Frequency Cepstral Coefficients, MFCC)。MFCC 特征的维数很低,它可以粗略地刻画出频谱的形状,因而可以大致描述出不同频率声音的能量高低。不仅如此,这种对频谱的粗略刻画还可以表达出声音的一个重要特性一共振峰。
3 应用
语音识别
在一些音乐应用中有一个有趣的功能,根据用户哼唱的一个片段找出相对应的歌曲,这就是乐曲检索。
第五章 冰雪聪明:看懂视频
1 行为识别
基本原理
行为
(action)是人类在执行某一任务的时候所发生的一连串动作,视频行为识别(action recognition)是计算机分析给定视频数据,辨别出用户行为的过程。
可以看出,运动
(motion)是我们判断行为类别的重要特征
。那么应该如何提取视频中的运动信息呢?
从物理知识中我们知道,在现实世界的三维空间中,可以用位移、速度等物理量来描述空间中一个点从一个位置经过一段时间到达另一个位置的运动过程。在视频处理中,我们用光流(optical flow)
来描述运动的情况。确切地说,光流描述的是三维的运动点投影(project)到二维图像之后相应的投影点的运动。由于我们处理的是运动被拍摄后的二维图像数据,所以只能用二维投影点的运动来间接地刻画真实世界中的三维运动。
2 基于深度学习的视频行为识别
- 1 基于单帧的识别方法
当我们不考虑视频中图片信息在时间维度上的变化时,就可以用视频中的某帧图片代表整个视频的信息。
在运动性比较强的情形下,识别行为就需要结合一连串的动作。比如跳高和跳远,在助跑阶段很相似,只用单帧的图像就很难做出区分,这会导致分类的正确率下降很多。
- 2 双流卷积神经网络
- 3 长视频的处理:时序分段网络
对于短视频(10 秒左右),双流神经网络可以很好地进行识别。对于长视频的识别,它给我们带来的挑桃战是如何对较长的时间进行建模。这里我们介绍另一种处理长视频数据(几分钟)的神经网络一时序分段网络(temporal segment networks, TSN),它是为了解决视频中存在跨越时间长的行为被提出的。
稀疏时间采样
(sparse temporal sampling)策略,就是对于长度不同的数据,根据时间先后分成固定数量的段落。
第六章 无师自通:分门别类
1 聚类
介绍
可见,通过分析数据在特征空间的聚集情况,也可以将一组数据分成不同的类。我们称这类方法为聚类
(clustering)。
聚类作为一种无监督学习过程,不需要数据的类别标注,甚至不需要预先定义类别,是一种非常实用的分析方法。
方法
- 1 K 均值聚类
① 介绍
上述的聚类方法,就是 K 均值聚类(K-means clustering)算法。在 K 均值聚类算法中,已知样本的划分方式,可以计算每一类样本的聚类中心。反之,已知聚类中心,也可以得到一个更好的划分方式。
那么,最初的聚类中心要如何获得呢?
首先,我们要决定聚类的类别数 K,再在所有样本中随机选取 K 个样本作为聚类中心,就完成聚类中心的初始化了。
那么, 聚类中心的个数要取多少呢?
样本到对应聚类中心的平均距离一定程度上可以衡量聚类的效果。从图 6-18 可以看到,随着聚类数量 K 的增加,平均距离在不断地下降。然而,聚类数量过大,会导致照片划分得过细,每一类中只包含很少的照片,这样就失去实用性了。如何在平均距离和聚类数量间取得平衡呢?从图 6-18 可以看到,在 K=3 的时候,曲线产生了一个明显的拐点。在拐点之后,随着 K 的增加,平均距离减少得非常缓慢。因此,拐点
处 K=3 是一个合适的选择。由于这条曲线与手时的形状相似,这种方法被称为手肘法
(elbow method),而这个拐点则被称为手肘点
。
② 应用
人以群分:相册中的人脸聚类
- 2 层次聚类
除了 K 均值聚类,层次聚类也是一种经典的聚类算法。
层次聚类首先将每个样本都单独当成一类,而后重复地合并最相似的两个类。当所有的类别间的距离都超过一个预设的截止距离时,层次聚类就完成了。
应用:
在生物学上,层次聚类除了可以帮我们分辨不同品种的鸢尾花,还可以用来分析基因,推导动植物的分类甚至是进化过程。以生物 DNA 序列作为特征,不断合并基因相似度高的物种,我们就可以得到生物的“分类树”。
有趣的是,由层次聚类得到的“分类树”与图 6-20 所示的生物进化树非常吻合。随着基因测序工程的进行与无监督学习的发展,未来,人工智能还将帮助我们发现更多生物间的未知联系。
第七章 识文断字:理解文本
1 确定文本主题
① 概念
为方便讨论,我们现在介绍一些相关的专有名词。我们通常将上文中提到的海量文本数据称为语料库
(corpus),语料库中独立的文本称为文档
(document),文档的中心思想或主要内容称为主题
(topc)。例如,2017 年的全部报纸文章可以组成一个语料库,报纸上的每一篇文章构成一篇文档,这些文档可能围绕“政治”、“经济”、“教育”、“科技”、“民生”等主题展开。
② 方法
词袋模型
(bag-of--words model)是用于描述文本的一个简单的数学模型,也是常用的一种文本特征提取方式。词袋模型将一篇文档看作是一个“装有若干词语的袋子”,只考虑词语在文档中出现的次数,而忽略词语的顺序以及句子的结构。
词袋模型非常简单,但还需要与一些文本处理技术相搭配才能在应用中取得较好的效果
中文分词
: 我们首先需要将句子中的词语分开,才能根据词语构建词袋。这个过程对于英文来讲是非常容易的,我们只需要以空格和标点符号为依据,就可以将所有的词语分隔开来。但在中文文本中,所有的词语连接在一起,计算机并不知道
中文分词方法大多基于匹配与统计学方法,我们在这里不做介绍。
分完词后的筛选:
“的”、“也”、“了”等词语...大量出现,但却对区分不同文档的主题毫无帮助。类似这样不携带任何主题信息的高频词称为停止词(stop word)。在构建词典时,我们通常不会去除停止词
。
在构建词典时,我们通常会去除出现次数极低的低频词
。这类词语通常是一些不常用的专有名词。它们可能出现在特定的文章中(比如一篇采访稿中可能出现了一位随机受访者的姓名),但是并不能代表某一类主题。如果我们过度依赖这样的词语对文章的主题进行归类,那么就有可能出现过拟合的现象。另一方面,如果我们将这些低频词全部收录到词典中,就会大大增加词典的大小以及特征向量的维数,从而造成计算上的困难。
衡量主题的质量
词频率
与逆文档频率
是反映一个词语对于一篇文档的重要性的两个指标。
一个词语在一篇文档中出现的频率即为词频率(term frequency)
我们定义一个词语的文档频率(document frequency)为语料库中出现过这个词语的文档总数与语料库中所有文本的总数的商。
将一个词语在某篇文章中的词频率与该词的逆文档频率相乘,我们就可以得到这个词在这篇文章中的词频率一逆文档频率(f-d)。词频率-逆文档频率是对词频率的一种修正,可以更好地突出文本中的重要信息。我可以将文档的词频向量中的频率值替换为词频率-逆文档频率值,得到这篇文档的词频率-逆文档频率向量,作为文档的特征。
③ 多主题
在 K 均值算法中,我们会将一个样本划归为一个特定的类别,而一段文本通常可能围绕多个主题展开。例如,一篇关于“推动中小学人工智能教育”的新闻至少会围绕“人工智能”和“中小学教育”两个主题展开,我们将其划归为任意单一主题都是不合适的。
而潜在语义分析技术
就是针对文本数据“多主题”的特点而设计的。这种技术可以通过无监督的方式从文本中分析出多个潜在的主题,完成聚类算法不能完成的任务。
2 高屋建瓴:发掘文本中潜在的主题
主题模型
(topic model)是描述语料库及其中潜在主题的一类数学模型。
第八章 神来之笔:创作图画
1 生成对抗网络
能赋予机器像画画这样的创造力呢?本章我们就来探讨一下如何用生成对抗网络(generative adversarial network, GAN)
来创作出以假乱真的图片。
介绍
生成对抗网络由生成网络
(generative network)和判别网络
dis- criminative network)两个部分组成。其中生成网络就是用于生成数据,而判别网络则是用来分辨数据是真还是假。
以计算机自动创作图画的过程为例,生成网络在其中扮演的角色就是艺术创作家(创作图画),而判别网络所扮演的角色是艺术鉴赏家(判别图像是机器仿制的还是画家绘制的)。生成对抗网络的基本思想就是通过生成网络和判别网络之间的相互“对抗
”来学习。
进阶
生成对抗网络虽然可以生成像真的图片,但是它生成的内容却是随机的。
如何能生成具有指定属性的图片,比如戴眼镜的明星呢?条件生成对抗网络
(conditional generative adversarial network)解决了这个问题。它可以生成符合给定条件的图片。
第九章 运筹帷幄:围棋高手
1 阿尔法狗与强化学习
下面用阿尔法狗做例子阐述强化学习
对于阿尔法狗的大获成功,强化学习
(reinforcement learning)功不可没,这也使得强化学习成为当前人工智能研究中的一个热点。
① 基础
过程中,阿尔法狗给出当前局面(situation)应该在哪落子,以期最终在对弈中获胜。这个面对当前局面做出落子决策的过程由阿尔法狗中的走棋网络负责。走棋网络又被称为策略网络
(policy network),该网络接受当前棋盘局面作为输人,并输出在当前局面下选择每个位置的落子概率。
② 训练
- 1 监督学习策略网络
对于该策略网络的训练,阿尔法狗团那队从在线围棋对战平台 KGS 上获取了 16 万局人类棋手的对弈棋谱,并从中采样了 3000 万个样本作为训练样本。
- 2 为了进一步提高策略网络的棋力,阿尔法狗使用了
强化学习
技术。
通过引入强化学习技术,阿尔法狗可以通过自我对奔左右互搏来提升自身棋力,从而变得更强。那么,到底什么是强化学习呢?
强化学习 vs. 监督学习:
强化学习与监督学习和无监督学习一样,同为机器学习算法中的一种。强化学习与监督学习最主要的区别就在于其收到的反馈是评估性
的而不是指导性
的。监督学习给出的指导性反馈将会通过监督信号告知学习者应该做出什么样的行为以获取更高的收益。而强化学习的评估性反馈意味着该学习系统只会告诉学习者当前的做法是好的还是坏的,所以学习者必须在多次尝试之后才能发现哪些行为会得到更高的回报;而且当前的行为不仅影响此时的回报,住往还会影响后续的回报。
强化学习策略网络
2 阿尔法狗与估值网络
① 为什么要继续引入这个?
虽然经过强化学习训练后的策略网络棋力大增,但是其缺点也很明显,即该版本的阿尔法狗只根据当前棋局局面就做出落子判断,这像是一个高手但只凭直觉在下棋,缺少所谓的“大局观”。所谓“手下一着子,心想三步棋”,顶尖的围棋高手(是这样的)
② 介绍
为了使阿尔法狗拥有这种大局观,Deep Mind 团队在阿尔法狗中引入了估值网络
(value network),用于增强阿尔法狗对当前局面价值的判断,同时引人了蒙特卡罗树搜索算法
推演当前局面的发展,帮助阿尔法狗找到更好的落子方案。
阿尔法狗中的估值网络用于量化评估当前围棋的局面,它使得阿尔法狗在对弈中无需走完全局即可快速预测当前局面的胜率。估值网络以棋盘当前局面作为输入,并预测阿尔法狗在当前局面下的胜率。
3 阿尔法狗与快速走子网络
① 为什么要继续引入这个?
为了加速棋局推演的**速度 **
② 介绍
阿尔法狗中引入了快速走子网络,它可以说是一个轻量级的策略网络,其落子效果虽不如策略网络,但速度却是策略网络的 1000 倍。
4 总结
至此,阿尔法狗系统性地将策略网络、估值网络、快速走子网络整合到了蒙特卡罗树搜索算法中,博采众长,从而发挥出了巨大的威力,最终战胜了顶尖围棋高手,一战成名。
阿尔法狗一战成名后,Deep Mind 团队并没有沾沾自喜,而是继续推出了更强版的人工智能围棋程序阿尔法元
(AlphaGo Zero)。阿尔法元相比之前的阿尔法狗结构更为简洁,且摒弃了人类棋谱的影响,完全
通过自我博弈的强化学习算法训练自己,并且在与阿尔法狗的对弈中取得了 100 比 0 的胜利。
阿尔法元的训川练是通过不断的自我对弈来完成的。
阿尔法元结构清晰而简洁,是强化学习算法的应用典范。阿尔法元在训练的开始就没有任何除规则以外的监督信号,并且只以棋盘当前局面作为网络输人,而不像阿尔法狗一样还使用其他的人工特征(例如气、目、空等)。
它告诉我们在没有人类先验知识的情况下机器也可以在围棋这种高难度任务上战胜人类。
此外,阿尔法元在模型上只使用一个神经网络,该神经网络可以同时预测当前局面落子概率分布与局面胜率评估值,而不像之前版本一样分别使用策略网络与估值网络。