Press "Enter" to skip to content

【Python机器学习基础】1 . 人工智能、机器学习、深度学习介绍

在本章节,我们将要搞清楚,人工智能,机器学习,以及深度学习是什幺,以及它们之前的区别和联系。

 

什幺是人工智能?

 

首先关于人工智能,可以看看百科上面的解释。

 

人工智能(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万美金。

 

在模型的使用中,深度学习方法如果不通过知识蒸馏等模型压缩的方法优化模型, 预测也是很耗时 且耗资源的。即使通过压缩,很多时候在性能上也无法满足需求。

 

总体来说,机器学习和深度学习还是各有利弊的,当然现在深度学习在大部分领域都会远远超过传统的方法,并且也能够实用。在学习深度学习之前,本系列课程将会先讲传统机器学习的方法。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注