在本章节,我们将要搞清楚,人工智能,机器学习,以及深度学习是什么,以及它们之前的区别和联系。
什么是人工智能?
首先关于人工智能,可以看看百科上面的解释。
人工智能(Artificial Intelligence),英文缩写为AI。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
总体来说,人工智能其实就是让计算机实现人类拥有的智能。
人类能做的事情被计算机学家分成了几个大类,大类下面又有小类。
下面我们这里将要介绍几个大类:计算机视觉,自然语言处理,推荐系统,智能信息检索。
计算机视觉
计算机视觉,英文全称为Computer Vision,简称为CV。其实也就是研究图片的。比如说早期的应用,其实也就是研究如何进行手写字符识别,也就算图像分类领域了。
当然,发展到现在,还有目标检测,检测图片中所有的物体,并且选出区域来。
风格迁移:给一张风格图片,将原始图片变成和风格图片类似的样子。其实也就是AI滤镜了。
以及非常火的DeepFake(AI换脸),其实都可以算是计算机视觉这个方向的。
自然语言处理
自然语言处理,英文全称为Natural Language Processing,简称为NLP。它目标是让计算机在理解语言上能像人类一样的智能。
比如说,我们现在用到的机器翻译,翻译的很多时候比人还要好。
还有,比如说我们有时候需要过滤掉邮件里的垃圾短信,或者知道一条消息的情感,这就是文本分类或者叫情感分类。
当然,还有些对于一般人来说,听起来会很陌生的方向,或者说很难触碰到的方面:命名实体识别。
推荐系统
推荐系统,英文全称Recommender system。我们使用淘宝、京东的时候,想必不少见了把。这里可以分为基于内容的推荐,基于关联规则的推荐等等。
智能信息检索
信息检索,英文全称为Information Retrieval,简称为IR。也就是搜索引擎的技术了。
这里我添加智能两个字其实是因为,狭义的信息检索指的是信息查询,也就是我们查找文章里面是否存在一个字一个词或者几个词。而我们对搜索的要求其实也越来越高了,我们不是搜是不是存在某一个词或者某几个词的文章,而是要找到类似的含义的文章。
有的时候我们还要找到一个答案,搜索引擎也变成了问答系统。
当然,我们搜索的内容也不单单仅限于文字了,可能是以图搜图了,也就是图像搜索。
其他的情况
当然,除了以上的类别以外。其实还是有很多别的方面的研究,比如说AI下棋,AI打游戏,算游戏AI领域的。
以及交叉的领域方面的研究,比如说Image Captioning(图片描述自动生成),也就是看图说话,又有图片又有文字,算是CV+NLP了。
这里的内容就介绍到这里,读者感兴趣可以继续深入,下面来说说机器学习。
什么是机器学习?
以上介绍了那么多的人工智能的领域,那么机器学习和人工智能又有什么关系呢?
这里机器学习其实既可以算人工智能一个研究领域,也可以算是一种实现人工智能的方法。
说它是一种方法,因为上面的领域中,都会用到机器学习。就像如果做自然语言处理,那么做的其实就是基于机器学习方法的自然语言处理算法。
说它是一个领域,因为机器学习也有很多的研究,比如说强化学习,弱监督学习,最优化算法,采样方法等等偏理论方面的研究。
下面我们回到我们的机器学习。机器学习其实研究的是如何模拟人类或者实现人类学习的行为,从而能够应对新的任务的能力。
那么机器,学习的是什么呢?
其实是数据。
机器学习是一门数据驱动的科学,我们人类能够根据历史数据学习到经验,当再次面对类似的问题时,能想到相应的解决方法。对应的机器学习到的其实是通过学习历史数据得到一个模型,这个模型有预测未知数据的能力。
机器学习的数学表示
用数学的形式来表示机器学习,那么机器学习其实就是要学习到一个函数。这里我们把输入当成,而理想的输出当成,那么机器学习其实就是要找到一个形式的函数,使得。
对于不同的任务,我们就会有不同的对。比如下图的就是语音识别,就是图片分类了。
(图片摘选自:台大李宏毅教授的机器学习课件)
而对于得到不同形式的的方法,则对应着不同的机器学习算法,百度一搜就能搜出来一堆,这里就不举例了。
相信学习过函数的人,都不难理解上面的内容。但其实,我们在书中看到的并不是这个样子的。笔者最早在学习机器学习的时候,还是看的机器学习相关的书籍,记得当时看到里面的一堆的数学符号,每次都感觉看懂了一点儿,又感觉一点儿都看不懂,看的是一脸懵逼。
下面我们要开始增加符号了。
加入数据
想想刚刚说的,机器学习其实是一门数据驱动的科学。那么这里要开始增加数据了。
数据的输入这里定义为, 输入有n个样本,构成数据集。用 表示数据集的第i个样本。
同样,数据的理想输出,或者叫数据的标签定义为,构成数据集的标签集。用 表示标签集的第i个样本。这里和是一一对应的。
这里举例一个验证码识别的数据集,这里有一些验证码的图片,每个图片都有一个文件名。
这里我们的就是某个图片(这里其实是图片的二维数组,后面图像处理会讲到如何把图像读取到程序的数组之中):
而则是该图片的文件名:2bfwr。
现在我们的目标其实变成了:使得成立。
加入参数
当然,加入数据不代表结束了,我们还有函数的参数,这里用来表示,表示的是一系列参数,。
假如说我们的函数形式是一次函数,那么这里的函数,就是有两个参数,形如:
加入参数后,现在我们的目标其实变成了:使得成立。
如果用英文来说这个公式呢,就是: given , parameterized by , is .
机器学习的数据集
接下来我们来看看机器学习的数据集。
上面我们的得到了目标:令成立。而我们在学习的时候,我们的目标其实是学习历史的数据,让新的数据能够成功预测出。
所以在数据构建的时候,就需要我们把数据集进行分割成最少两部分:一部分用来当历史的数据,也就是训练集;而另一部分则当成未知的数据,测试集。训练集的标签和测试集的标签则表示为:,
现在我们之前的输入变成了测试集的每一个样本,而数据集则变成了。
我们现在的目标可以写成。
也就是通过训练数据的学习,可以将测试集中的每一个数据都能成功预测成。
机器学习算法的流程
下面我们来看一下机器学习算法的流程。
评价指标
上面加入数据集后,我们的目标其实是要让测试集中每一个 和 标签相等。这个条件其实是相当的苛刻了。
这里定义一个评价指标函数,用表示在测试集预测效果的好坏。
举例:对于一个文本分类的任务,我们可能会以准确率(Accuracy),作为评价指标,那么这个时候的评价指标:
这个指标肯定是越高越好了,弱化之前"让每一个样本都预测正确"的目标,机器学习的目标现在变成了最大化测试集的评价指标。
损失函数
接下来,再来定义一个损失函数,用来表示预测值与真实值的接近程度,其中。
损失函数有很多分类,以后的课程在实践中还会介绍。这里只要知道,损失函数一般都是正的,并且当时,预测值和真实值相等即可。
前面一直说,机器学习中学习的是数据。而机器的这个学习的过程,就是要最小化训练数据的损失函数的过程,即最小化所有样本的损失之和:
这里需要求解的也就是使得上式最小化的时候的的取值。
记做:
(arg min表示使目标函数取最小值时的变量值)
这里的数学符号看着有些唬人,但其实也就是类似我们求解出一元一次函数中的参数来,可能算出来,那我们最后得到的形式也就是。
小结
机器学习的算法流程也就是:通过最小化训练集的损失函数的方式,来达到最大化测试集的评价指标的目的。通过学习训练集,而在测试集预测的能力叫泛化能力,机器学习的模型都会有这种能力。
看到这里我们可能有个疑问,为什么机器学习不直接最优化评价指标呢?
我们也可以通过最大化训练集的评价指标,来最大化测试集的评价指标。这里其实对于很多机器学习任务来说,是很难直接优化评价指标,比如说上面说的准确率,也就是正确的个数,这个在函数中其实是不可导的,用微积分的话也就是不可微,是很难直接优化的。
当然,有的时候我们也可以直接优化评价指标,这个时候我们只需要取一个负号,令,那么也就是最小化“负的评价指标”,也就是最大化评价指标了。
损失函数可以给我们一个更通用的形式。
机器学习的分类
根据有无标签分类
我们上面举的例子其实都是有标签的数据集,但有的时候数据集并没有标签。根据数据集是否有标签可以分为有监督学习和无监督学习。
有监督学习的训练数据如:;而无监督的数据则如:
这系列课程以及后面的课程涉及的内容都是有监督学习,也就是数据都是有标签的,读者如果有兴趣可以自己看无监督学习方面的内容。
根据标签的输出分类
根据标签的输出类型,我们可以分为回归问题,分类问题,以及时间序列问题。
- 回归问题 输出的标签是数值类型,比如说:房价的预测,股价的预测,结果都是一个具体的数值,取值有无穷可能。
- 分类问题 输出的标签是类别,比如说:动物识别,垃圾短信分类,预测出来的结果是一个有限个数的类别。
- 时间序列问题 输出的标签是一个序列,比如说:机器翻译,看图说话,预测结果是一个序列的单词。
机器学习系统的实现步骤
现在我们来看看一个机器学习系统都需要哪些步骤,其实只需要以下五个步骤即可。
- 1. 收集数据:这里也就是构建我们的和的步骤了,一般我们都会选择一个网络上已经有的数据集。
- 2. 特征工程:这一步将要把我们的数据,转换成有用的信息。选取有用的信息,删除无用的信息,比如说我们要预测二手房房价,那我们可能房子面积、地理位置,是否南北通透等等有很大的关系,而和卖家的年龄,卖主的身高则没啥关系。
- 3. 训练模型:这里要选取一个机器学习算法,以及最优化方法,得到我们的函数了。
- 4. 测试调优:这里需要不断的尝试各种方法,让更好。
- 5. 使用模型:最后以上方法得到了一个好的模型后,就可以投入使用了。
深度学习又是什么?
看完了机器学习,那么什么又是深度学习呢?
深度学习其实是一种机器学习的算法:神经网络,也就是一个复杂的函数了。它的特点是可以不断的叠加层数。每增加一层,其实也就是就多套了一层函数。我们之前的变成了 ,为层数。
层数越多,模型的表达能力就越强。比如说2015年的ResNet它的层数多达152层。
随着AlexNet2012年以来的出现,模型的层数越来越多,也越来越复杂,于是就叫深度学习了。同时深度学习的效果也越来越好,于是几乎所有领域的最前沿(state-of-art)的算法都变成深度学习方法了,也就变得越来越火了。
深度学习和机器学习在处理上的区别
深度学习和一般机器学习方法最大的优势不需要进行特征工程,像房价预测还好说,对于图像以及文本这样复杂的数据,人工提取的特征方法就很受到局限性。
深度学习的缺点
那么有了深度学习,传统的方法是不是没用了吗?
这个答案明显是否定的,深度学习的效果虽然好,但是他的代价也很大,一个深度学习系统需要的训练数据通常都是巨大的,需要花费大量的代价标注数据。
深度学习需要的计算资源也是庞大的,前段时间自然语言处理领域的一个预训练模型XLNet的效果非常好,不过训练这个模型的成本就要花掉6万美金。
在模型的使用中,深度学习方法如果不通过知识蒸馏等模型压缩的方法优化模型,预测也是很耗时且耗资源的。即使通过压缩,很多时候在性能上也无法满足需求。
小结
总体来说,机器学习和深度学习还是各有利弊的,当然现在深度学习在大部分领域都会远远超过传统的方法,并且也能够实用。