阅读 563

【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了。

这里的内容就介绍到这里,读者感兴趣可以继续深入,下面来说说机器学习。

什么是机器学习?

以上介绍了那么多的人工智能的领域,那么机器学习和人工智能又有什么关系呢?

这里机器学习其实既可以算人工智能一个研究领域,也可以算是一种实现人工智能的方法。

说它是一种方法,因为上面的领域中,都会用到机器学习。就像如果做自然语言处理,那么做的其实就是基于机器学习方法的自然语言处理算法。

说它是一个领域,因为机器学习也有很多的研究,比如说强化学习,弱监督学习,最优化算法,采样方法等等偏理论方面的研究。

下面我们回到我们的机器学习。机器学习其实研究的是如何模拟人类或者实现人类学习的行为,从而能够应对新的任务能力

那么机器,学习的是什么呢?

其实是数据。

机器学习是一门数据驱动的科学,我们人类能够根据历史数据学习到经验,当再次面对类似的问题时,能想到相应的解决方法。对应的机器学习到的其实是通过学习历史数据得到一个模型,这个模型有预测未知数据的能力。

机器学习的数学表示

用数学的形式来表示机器学习,那么机器学习其实就是要学习到一个函数。这里我们把输入当成x,而理想的输出当成y,那么机器学习其实就是要找到一个形式的函数f,使得f(x) = y

对于不同的任务,我们就会有不同的(x, y)对。比如下图的(x=语音,y=文字)就是语音识别,(x=图片,y=类别)就是图片分类了。

(图片摘选自:台大李宏毅教授的机器学习课件)

而对于得到不同形式的f的方法,则对应着不同的机器学习算法,百度一搜就能搜出来一堆,这里就不举例了。

相信学习过函数的人,都不难理解上面的内容。但其实,我们在书中看到的并不是f(x) = y这个样子的。笔者最早在学习机器学习的时候,还是看的机器学习相关的书籍,记得当时看到里面的一堆的数学符号,每次都感觉看懂了一点儿,又感觉一点儿都看不懂,看的是一脸懵逼。

下面我们要开始增加符号了。

加入数据

想想刚刚说的,机器学习其实是一门数据驱动的科学。那么这里要开始增加数据了。

数据的输入这里定义为X=\{ x_1, x_2, ..., x_n \}, 输入有n个样本,构成数据集。用 x_i表示数据集的第i个样本。

同样,数据的理想输出,或者叫数据的标签定义为Y=\{ y_1, y_2, ..., y_n \},构成数据集的标签集。用 y_i表示标签集的第i个样本。这里x_iy_i是一一对应的。

这里举例一个验证码识别的数据集,这里有一些验证码的图片,每个图片都有一个文件名。

这里我们的x_i就是某个图片(这里其实是图片的二维数组,后面图像处理会讲到如何把图像读取到程序的数组之中):

y_i则是该图片的文件名:2bfwr。

现在我们的目标其实变成了:使得f(x|X) = y成立。

加入参数

当然,加入数据不代表结束了,我们还有函数的参数,这里用θ来表示,θ表示的是一系列参数,θ=\{ θ_0, θ_1, θ_2, ..., θ_n \}

假如说我们的函数形式是一次函数,那么这里的函数,就是有两个参数,形如: f(x) = θ_1 x + θ_0

加入参数θ后,现在我们的目标其实变成了:使得f(x|X;θ) = y成立。

如果用英文来说这个公式呢,就是:f x given X, parameterized by θ, is y.

机器学习的数据集

接下来我们来看看机器学习的数据集。

上面我们的得到了目标:令f(x|X;θ) = y成立。而我们在学习的时候,我们的目标其实是学习历史的数据X,让新的数据x能够成功预测出y

所以在数据构建的时候,就需要我们把数据集进行分割成最少两部分:一部分用来当历史的数据,也就是训练集X_{train};而另一部分则当成未知的数据,测试集X_{test}。训练集的标签和测试集的标签则表示为:Y_{train}Y_{test}

现在我们之前的输入x变成了测试集X_{test}的每一个样本,而数据集X则变成了X_{train}

我们现在的目标可以写成\forall x_i  \in X_{test}, y_i  \in Y_{test},  f(x_i|X_{train};θ) = y_i

也就是通过训练数据X_{train}的学习,可以将测试集中的每一个数据x_i都能成功预测成y_i

机器学习算法的流程

下面我们来看一下机器学习算法的流程。

评价指标

上面加入数据集后,我们的目标其实是要让测试集中每一个f(x_i|X_{train};θ) 和 标签y_i相等。这个条件其实是相当的苛刻了。

这里定义一个评价指标函数F,用F(\{ f(x_i;θ), x_i \in X_{test} \}, \{ y_i, y_i \in Y_{test} \})表示在测试集预测效果的好坏。

举例:对于一个文本分类的任务,我们可能会以准确率(Accuracy),作为评价指标,那么这个时候的评价指标:

F_{accuracy}=\frac{f(x_i;θ) = y_i 的个数}{y_i的总数}

这个指标肯定是越高越好了,弱化之前"让每一个样本都预测正确"的目标,机器学习的目标现在变成了最大化测试集的评价指标F

损失函数

接下来,再来定义一个损失函数L,用L(y',y)来表示预测值y'与真实值y的接近程度,其中y'= f(x;θ)

损失函数有很多分类,以后的课程在实践中还会介绍。这里只要知道,损失函数一般都是正的,并且当L(y',y)=0时,预测值y'和真实值y相等即可。

前面一直说,机器学习中学习的是数据。而机器的这个学习的过程,就是要最小化训练数据的损失函数的过程,即最小化所有样本的损失之和:

\sum_{x_i \in X_{train}, y_i \in Y_{train}} L(f(x_i;θ), y_i)

这里需要求解的也就是使得上式最小化的时候的θ的取值θ'

记做:

θ'= \arg\min_{\theta} \sum_{x_i \in X_{train}, y_i \in Y_{train}} L(f(x_i;θ), y_i)

(arg min表示使目标函数取最小值时的变量值)

这里的数学符号看着有些唬人,但θ'其实也就是类似我们求解出一元一次函数f(x) = θ_1 x + θ_0中的参数来,可能算出来θ_1=1, θ_0=2,那我们最后得到的形式也就是f(x) = x + 2

小结

机器学习的算法流程也就是:通过最小化训练集的损失函数的方式,来达到最大化测试集的评价指标的目的。通过学习训练集,而在测试集预测的能力叫泛化能力,机器学习的模型都会有这种能力。

看到这里我们可能有个疑问,为什么机器学习不直接最优化评价指标呢?

我们也可以通过最大化训练集的评价指标,来最大化测试集的评价指标。这里其实对于很多机器学习任务来说,是很难直接优化评价指标,比如说上面说的准确率,也就是正确的个数,这个在函数中其实是不可导的,用微积分的话也就是不可微,是很难直接优化的。

当然,有的时候我们也可以直接优化评价指标,这个时候我们只需要取一个负号,令L=-F,那么也就是最小化“负的评价指标”,也就是最大化评价指标了。

损失函数可以给我们一个更通用的形式。

机器学习的分类

根据有无标签分类

我们上面举的例子其实都是有标签的数据集,但有的时候数据集并没有标签。根据数据集是否有标签可以分为有监督学习和无监督学习。

有监督学习的训练数据如:(x_1,y_1), (x_2,y_2), (x_3,y_3);而无监督的数据则如:x_1, x_2, x_3

这系列课程以及后面的课程涉及的内容都是有监督学习,也就是数据都是有标签的,读者如果有兴趣可以自己看无监督学习方面的内容。

根据标签的输出分类

根据标签的输出类型,我们可以分为回归问题,分类问题,以及时间序列问题。

  • 回归问题 输出的标签是数值类型,比如说:房价的预测,股价的预测,结果都是一个具体的数值,取值有无穷可能。
  • 分类问题 输出的标签是类别,比如说:动物识别,垃圾短信分类,预测出来的结果是一个有限个数的类别。
  • 时间序列问题 输出的标签是一个序列,比如说:机器翻译,看图说话,预测结果是一个序列的单词。

机器学习系统的实现步骤

现在我们来看看一个机器学习系统都需要哪些步骤,其实只需要以下五个步骤即可。

  • 1. 收集数据:这里也就是构建我们的XY的步骤了,一般我们都会选择一个网络上已经有的数据集。
  • 2. 特征工程:这一步将要把我们的数据,转换成有用的信息。选取有用的信息,删除无用的信息,比如说我们要预测二手房房价,那我们可能房子面积、地理位置,是否南北通透等等有很大的关系,而和卖家的年龄,卖主的身高则没啥关系。
  • 3. 训练模型:这里要选取一个机器学习算法,以及最优化方法,得到我们的函数f了。
  • 4. 测试调优:这里需要不断的尝试各种方法,让f更好。
  • 5. 使用模型:最后以上方法得到了一个好的模型后,就可以投入使用了。

深度学习又是什么?

看完了机器学习,那么什么又是深度学习呢?

深度学习其实是一种机器学习的算法:神经网络,也就是一个复杂的f函数了。它的特点是可以不断的叠加层数。每增加一层,其实也就是就多套了一层函数。我们之前的f(x; θ)变成了 f_0(f_1(f_2(...f_n(x:θ_n)...θ_2;θ_1); θ_0)n为层数。

层数越多,模型的表达能力就越强。比如说2015年的ResNet它的层数多达152层。

随着AlexNet2012年以来的出现,模型的层数越来越多,也越来越复杂,于是就叫深度学习了。同时深度学习的效果也越来越好,于是几乎所有领域的最前沿(state-of-art)的算法都变成深度学习方法了,也就变得越来越火了。

深度学习和机器学习在处理上的区别

深度学习和一般机器学习方法最大的优势不需要进行特征工程,像房价预测还好说,对于图像以及文本这样复杂的数据,人工提取的特征方法就很受到局限性。

深度学习的缺点

那么有了深度学习,传统的方法是不是没用了吗?

这个答案明显是否定的,深度学习的效果虽然好,但是他的代价也很大,一个深度学习系统需要的训练数据通常都是巨大的,需要花费大量的代价标注数据。

深度学习需要的计算资源也是庞大的,前段时间自然语言处理领域的一个预训练模型XLNet的效果非常好,不过训练这个模型的成本就要花掉6万美金。

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

小结

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

关注下面的标签,发现更多相似文章
评论