说明
人工智能(Artificial Intelligence, AI)是大势所趋,我们正处于一个AI开始大爆发的时代,基于AI的各类工具在科研、生产、生活各方各面给我们带来了巨大的便利和影响(好的以及坏的),有关AI的一切我们不可不察。 我并非计算机这个行当的科班出生,现阶段的研究方向更多的是将AI作为一个工具来使用,目前我对计算机相关的认识其实也很浅薄,所开设的机器学习(Machine Learning, ML)专栏:++机器学习_墨@#≯的博客-CSDN博客++ 目的在于记录和总结对机器学习的学习、理解以及实践。 关于机器学习,我的目标不是对相关的理论和工具有一些创新的突破,而是在能熟练使用现有工具的基础上,比同样只是使用这些工具的人理解更深一点点。
具体到本文,作为机器学习专栏的第一篇文章,本文主要是想捋清楚AI相关的概念,对该话题相关的基础知识做一些理解和梳理。 (本博文目前主要是先搭个框架占个坑,因为很多的概念是需要在实践过程中才能深入理解的,所以本博文的内容后续会不定期更新)
Blog
2024.10.6 博文第一次写作
目录
[2.1 传统机器学习](#2.1 传统机器学习)
[2.2 表示学习与深度学习](#2.2 表示学习与深度学习)
[2.2.1 表示学习](#2.2.1 表示学习)
[2.2.2 深度学习](#2.2.2 深度学习)
[2.3 神经网络](#2.3 神经网络)
[3.1 基本概念](#3.1 基本概念)
[3.2 机器学习三要素](#3.2 机器学习三要素)
[3.3 机器学习算法的类型](#3.3 机器学习算法的类型)
[3.4 数据的特征表示](#3.4 数据的特征表示)
[3.5 评价指标](#3.5 评价指标)
[3.6 一些理论和定理](#3.6 一些理论和定理)
[3.7 本章小结](#3.7 本章小结)
一、人工智能绪论
我们首先给智能下个定义:智能是知识和智力的总和。
1950年,阿兰·图灵在其论文《Computing Machinery and Intelligence》中针对计算机智能提出了著名的图灵测试:"一个人在不接触对方的情况下,通过一种特殊的方式,和对方进行一系列的问答,如果在相当长时间内,他无法根据这些问题判断对方是人还是计算机,那么就可以认为这个计算机是智能的。" 图灵测试是促使AI从哲学探讨到科学研究的一个重要因素,它引导了AI的很多研究方向。因为要使得计算机通过图灵测试,计算机必须具备:理解语言、学习、记忆、推理以及决策能力 。于是便有了AI下属的多个子学科(研究范畴):语言和感知 (自然语言处理,计算机视觉,语音信息处理)、学习 (模式识别/机器学习)、记忆 (知识表示,计算机存储)、决策(规划,数据挖掘)等。
1956年在达特茅斯(Dartmouth)会议上,人工智能(AI)被提出作为本领域的名称,同时有关AI的定义也得以明确:要让机器的行为看起来就像是人所表现出的智能行为一样(这也是本领域研究的使命)。目前AI的主要领域可以分成如下几个方面[1]:
- 感知: 模拟人的感知能力,对外部刺激信息(视觉和语言等)进行感知和加工,主要研究领域包括语音信息处理和计算机视觉等。
- 学习:模拟人的学习能力,主要研究如何从样例或从环境的交互中进行学习,主要研究领域包括监督学习、无监督学习和强化学习等。
- 认知:模拟人的认知能力,主要研究领域包括知识表示、自然语言理解、推理、规划、决策等。
1956年的达特茅斯(Dartmouth)会议后,人们对于AI的研究热情高涨,在书[1]中,将1956年至今AI的发展分成了三个主要的阶段:
- 推理期:1956年至1970年左右,这一时期研究者们通过人类的经验,基于逻辑和事实来归纳一些规则,然后通过编写程序来让计算机完成一些任务:这一时期一些典型的智能系统包括:几何定理证明器、语言翻译器等。
- 知识期:1970年至1990年左右,这段时间研究者们意识到知识对AI系统的重要性,这一时期出现了各种各样的专家系统,并在特定领域取得了很多成果。专家系统可以理解成:知识库+推理机,专家系统采用知识和知识推理等技术完成通常由领域专家才能解决的复杂问题。
- 学习期:其实对于人类的很多智能行为(比如语言的理解、图像的理解),我们难以知道其中的原理,更无法描述这些行为背后的知识,我们也就不能构建专家系统。为解决这类问题,研究者的重点转向了让计算机自己从数据中进行学习:机器学习(ML)。ML的主要目的是设计和分析一些学习算法,让计算机可以从数据中自动分析并获得规律,之后利用学习到的规律来对未知数据进行预测。1990年往后,ML逐渐成为热门学科。
需要注意的是:上面按时间做出的分期,其实没有严谨的具体的时间,此外也并不表示在某个分期内没有别的研究内容。
现如今,虽然AI在某些方面已经超越了人类,但是让其能真正通过图灵测试,具备真正意义上的人工智能,这个目标看上去尚需时日才能实现。目前我们对人类智能的机理仍然知之甚少,所以还没有一个通用的理论来指导如何构建一个人工智能系统。人工智能的流派非常多,不过主流的方法可以归为以下两种:
- 符号主义:符号主义主张人工智能源于数理逻辑,即通过逻辑符号来表达思维的形成。在AI的推理期和知识期,符号主义的方法盛行,并取得了大量的成果。符号主义的优点:可解释性
- 联结主义 :又称为仿生学派,其认为人类的认知过程是由大量简单神经元构成的神经网络的信息处理过程,而不是符号运算。联结主义强调仿人脑模型,即将神经元之间的联结关系作为人工神经网络的基础。具有非线性、分布式、并行化以及自适应等特性。
越来越多的研究者开始关注如何融合符号主义和联结主义,建立一种高效并具有可解释性的模型。
二、机器学习概述
AI的研究领域很广,本系列博文将其局限在机器学习这个话题(可能还会进入到更细分的话题下)。
2.1 传统机器学习
从第一章对AI的介绍中可以知道:机器学习(ML)是AI的一个重要分支(研究范畴),ML是指让计算机从有限的观测(训练)数据中学习出一般规律,并利用学习到的规律来对未知数据进行预测/决策的方法。
但是一般而言,有些观测数据是无法直接用的:比如我们要识别图片中的车辆,由于车有不同的颜色、形状、大小(这些可以理解成车的特征),因此不同图片在像素级别(底层特征)上的表示差异性会非常大,我们需要建立更抽象的高层语义特征,然后利用这些特征来识别车辆。根据计算机是否需要对特征进行自动的提取,我们可以将机器学习分为传统的机器学习和现代我们通常所说的机器学习(这句话有点不对劲..)。
传统的机器学习主要关注如何学习一个模型,其着眼点在于模型的学习(训练),原始数据的预处理和特征提取(或者压根不需要进行特征提取:比如平面二维数据的分类)等是人工干预完成,其学习和预测的流程如下:
图2.1 传统的机器学习-学习部分处理流程图
图2.2 传统的机器学习-预测(实践)部分处理流程图
典型的传统机器学习如:后续博文将会介绍的感知机、支持向量机(support vector machine, SVM)。传统机器学习方法的显著优点是 :因为特征是人工选取的,所以具备一定的可解释性,模型整体是可控的。但其缺点也很明显 :且不说我们是否可以提取出有效特征,因为特征的提取和转换是人工完成的,系统的准确性严重依赖特征处理的好坏;此外,很多时候机器学习问题其实变成了特征工程问题,开发一个机器学习系统的主要工作量都消耗在了预处理、特征提取和特征转换上。
有没有方法让计算机自动学习出有效特征呢? 这便是下一节的表示学习要解决的问题。
2.2 表示学习与深度学习
2.2.1 表示学习
"表示"是机器学习领域对"特征"的更一般的称呼。表示学习是指利用算法自动地学习出数据中的有效特征,并提高机器学习模型的性能。在上一节中我以识别图片中车辆的例子来说明底层特征和高层语义特征的概念,表示学习的关键就是解决语义鸿沟:如何从输入数据的底层特征到高层语义特征。表示学习中有两个核心的问题:一是"什么是好的表示";二是"如何学习得到好的表示"。
好的表示是一个比较主观的概念,没有明确的标准,但一般而言,好的表示应该具有:
- 较强的表示特征的能力。
- 应该使得后续的学习任务变得简单,即需要包含更高层的语义信息。
- 具有一般性:我们想要学习到的表示可以比较容易地迁移到其他任务上。
在机器学习中,我们常用两种方式来表示特征:局部表示和分布式表示。以颜色为例来对这两种表示进行简单的说明。
如果要在计算机内表示颜色,一般有两种表示方法: 一是以不同的名字来命名不同的颜色,我们可以假设所有颜色的名字构成一个词表,词表中颜色的总数量为N,此时可以用一个1*N维的向量来表示任意一个颜色:对于第i种颜色,可以将N维的向量中第i个位置的值设置为1,其余位置为0,这便是局部表示法(也称为离散表示)。这种表示方法有其优点:比如具有很好的解释性、有利于人工归纳和总结,作为二值向量,当用于线性模型时计算效率高。但是也有其不足:比如维数很高,且不能拓展,如果有新的颜色,我们只能通过增加一维来表示、此外,不同颜色之间的相似度为0,我们无法知道比如红色和中国红的相似度要高于红色和黑色的相似度。
另外一种表示法为RGB值:不同颜色对应到R、G、B三维空间中的一个点。这种表示方式叫做分布式表示。和局部表示相比,分布式表示的表示能力要强很多,而且很容易表示新的颜色名,此外,不同颜色之间的相似度也很容易计算。
如何学习到好的表示? 深度学习是一种很好的思路。
2.2.2 深度学习
深度学习本质上是表示学习的一种 。上一节中我们了解到要学习到一种好的高层语义表示,通常需要从底层特征开始,经过多步非线性转换才能得到,深层结构的优点是可以增加特征的重用性,从而指数地增加表示能力。深度学习就是通过构建深层的神经网络结构来学习数据的表示,它能够自动地从原始数据中提取特征,并通过多层次的非线性变换来学习数据的高层抽象表示。这使得深度学习在处理复杂数据(如图像、语音和文本)时表现出色。 所谓的"**深度"**就是指原始数据进行非线性特征转换的次数。 除特征的学习外,深度学习将后续的模型训练结合起来,建立了一个端到端(从输入直接到预测输出)的学习算法。
深度学习需要解决的关键问题是贡献度分配问题:模型中不同的组件或其参数对最终模型输出结果的贡献或影响。深度学习采用的主要模型是神经网络模型,其主要原因是神经网络模型可以使用反向传播算法,从而可以很好地解决贡献度分配问题。
深度学习模型需要的计算资源比较多,一般需要在GPU和CPU之间不断进行切换,开发的难度比较大。有一些支持自动梯度计算、无缝CPU和GPU切换功能的深度学习框架:Theano、Caffe、TensorFlow、PyTorch、飞桨、Chainer、MXNet。
2.3 神经网络
上一节中提到:深度学习采用的主要模型是神经网络模型 。那么,什么是神经网络?: 受到人脑神经网络的启发,科学家们构造了一种模仿人脑神经系统的数学模型,称为人工神经网络,简称神经网络。
人工神经网络与生物神经元类似,由多个节点相互连接而成,可以用来对数据之间的复杂关系进行建模,不同节点之间的连接被赋予不同的权重,每个权重代表了一个节点对另一个节点的影响大小,每个节点代表一种特定函数。 人工神经网络可以用作一个通用的函数逼近器(一个两层的神经网络可以逼近任意的函数),因此我们可以将神经网络看作一个可学习的函数,并将之应用到机器学习中。 书[1]中将神经网络的发展分成了如下几个阶段:
- 模型提出 1943-1969年,这期间,科学家们提出了很多的神经元模型和学习规则。
- 冰河期 1969-1983年,这一期间由于计算能力的限制,以及之前所提出的感知器无法处理"异或"回路问题等原因让人们对于以感知器为代表的神经网络产生了质疑。
- 反向传播算法引起的复兴 1983-1995年,是神经网络发展的第二个高潮期,这一时期,反向传播算法重新激发了人们对神经网络的研究兴趣。
- 流行度降低 1995-2006年,这一期间,统计学习理论和以支持向量机为代表的机器学习模型开始兴起,这些更简单的方法在机器学习领域的流行度超过了神经网络。
- 深度学习的崛起2006年至今,研究者们逐渐掌握了训练深层神经网络的方法,以及计算机计算能力的发展,使得神经网络重新崛起。
需要注意的是:上面按时间做出的分期,其实没有严谨的具体的时间,此外每个时期其实都有很多的理论创新,不过更细节的说明本博文不做展开。
常见的神经网络模型:前馈神经网络、卷积神经网络、循环神经网络。
本章的一些概念,如模型、特征等概念,可以结合第三章的内容做进一步的理解。
三、机器学习基础
3.1 基本概念
以苹果为例,介绍一下有关机器学习的一些基本概念:每个苹果有其特征 如颜色、大小、形状、产地等,我们可以用好/坏或者用打分的方式来评价一个苹果(给它贴标签 )。我们将一个标记好特征以及标签的苹果看作一个样本(也称为示例) 。由一组样本构成的集合被称为数据集 ,我们一般将数据集分为训练集和测试集,训练集中的样本用来训练模型,测试集中的样本用来检验模型。
通常,我们用一个N维的向量X=[x 1 ,x 2 ,x 3 ...x N ]来表示一个样本的所有特征,称为特征向量,其每一个维度表示一种特征。样本的标签可以用y来表示,于是一个由M个样本(每个样本应该是独立同分布的)构成的数据集可以记为:
所谓的模型,本质上就是一个从特征(输入)到标签(输出)的映射函数类型。而训练或者说学习就是基于训练集通过一些学习算法(优化算法)从模型里的无穷多的函数中寻找某个最优映射函数的过程。机器学习的整个工作过程可以用下图表示:
图3.1 机器学习工作过程
3.2 机器学习三要素
如果我们着眼于训练的过程,机器学习方法可以粗略地由三个基本要素构成:模型、学习准则、优化算法。
上一节中已经对模型做过介绍,机器学习的任务本质上是找到一个能很好地完成从特征到标签的映射函数,而模型就是我们(基于经验)所假设的一个函数集合,我们通过观察其在训练集上的特征,从中选择一个比较理想的函数。常见的模型分为线性模型和非线性模型两种。
对于线性模型:
(3-1)
参数θ包含了权重向量w和偏置b。
对于非线性模型:
(3-2)
是K个非线性基函数组成的向量。
我们用损失函数 来量化模型的预测标签值与真实标签之间的差异,常见的损失函数包括 :0-1损失函数、平方损失函数、交叉熵损失函数、Hinge损失函数。 这几个函数的介绍本文不做展开,读者可以方便地自行查找。 有了损失函数后,我们就可以将损失值最小化(风险最小化)来作为我们的学习准则。
有关训练,还有一些其它的概念需要理解,如:过拟合、欠拟合、正则化 。这几个概念我在之前博文[2]: ++关于最小二乘拟合与正则化的探讨-CSDN博客++中有过比较详细的介绍,这里不做阐述。
关于优化算法 :有了训练集、模型、学习准则后,如何找到最优的映射函数就成为了一个最优化问题,机器学习的训练过程其实就是最优化问题的求解过程。而我们的训练本质上就是在模型确定的情况下,取求解模型中的参数:权值和偏置。在机器学习中,优化可分为参数优化和超参数优化 : 模型f(x;θ)中的θ称为模型的参数,可以通过优化算法进行学习。除去该可学习的参数外,还有一类是用来定义模型结构或优化策略的参数,这类参数叫作超参数。常见的超参数包括:回归(拟合)时函数的最高阶数(具体可参看博文[2])、聚类时候的类别个数(具体可参看之前写过的关于聚类的博文:[3]++(毫米波雷达数据处理中的)聚类算法(3) -- K-means算法及其实践CSDN博客++)、神经网络的层数、支持向量机中的核函数等。
常见的一些优化算法有:梯度下降法(机器学习中最简单、常用的优化算法)、提前停止(通过提前停止来防止过拟合)、随机梯度下降法、小批量梯度下降法。这些优化算法更具体的介绍和理解,需要结合后续的实践,我在本专栏的后续博文中再做展开。
3.3 机器学习算法的类型
我们可以基于不同的分类方法将机器学习算法分成很多种类型。不过最常见的是按照训练样本所提供的信息以及反馈方式的不同来进行的分类:监督学习 (回归问题,分类问题,结构化学习问题都属于监督学习)、无监督学习 (聚类和密度估计,特征学习,降维等问题都是典型的无监督学习)、强化学习。
监督学习需要训练集中的样本同时包含特征和标签;无监督学习是从不包含标签的训练样本中自动学习到一些有价值的信息;强化学习是一类通过交互来学习的算法,强化学习中,智能体根据环境的状态做出一个动作,并得到奖励,智能体在和环境的交互中不断学习并调整策略,以取得最高的期望总回报,强化学习是一种在线学习机制。
3.4 数据的特征表示
其实第二章的内容就是围绕数据特征而展开和递进的,这里做一点回顾。
实际应用中,数据的类型多种多样(文本、音频、图像、视频等),大小也不相同。在进行模型的训练之前,优化算法需要我们的输入的样本特征是数学上可计算的,因此在进行学习(训练)之前,我们需要将这些不同类型的数据转换为向量(特征向量)表示。如果直接使用数据的原始特征进行训练,可能会存在一些问题:特征单一,需要进行非线性组合才能发挥作用;特征之间的冗余度高;并非所有的特征都对标签的预测有用;有些特征是易变的;原始特征中往往包含噪声。于是我们需要从原始特征中做一些特征提取和特征转换的操作,根据是否人工完成该操作,我们在第二章中将机器学习分成了传统的机器学习和现代的机器学习。计算机自动完成特征的提取和转换的过程,我们称为表示学习。进一步地,所谓的深度学习,是指构建了深层的神经网络结构来学习数据的表示,并将后续基于特征的训练部分组合在一起构成一个端到端的网络。
3.5 评价指标
为了衡量所学习到的模型的好坏,需要给定一个测试集,用模型对测试集中每一个样本进行预测,并根据预测的结果来计算评价分数。
对于分类问题,常见的评价标准有:准确率、精确率 (针对特定类别:类别A的精确率是指所有预测为类A的样本中预测正确的比率)、召回率 (针对特定类别:类别A的召回率是指所有真实类别为类A的样本中预测正确的比率)和F值(精确率和召回率的调和平均)等。
3.6 一些理论和定理
机器学习中有一些非常著名的理论和定理,对于理解机器学习的内在特性非常有帮助:
PAC(Probably Approximately Correct,可能近似正确)学习理论、没有免费午餐定理、奥卡姆剃刀原理、丑小鸭定理、归纳偏置。 关于这些理论和定理,读者可以自行通过词条查找其解释,这些理论可能需要结合实践才能更深入理解,这里不做展开。
3.7 本章小结
本章比较详尽(但是也比较浅层)地对机器学习相关概念和基础理论做了介绍。一些更细节的理论说明及其理解可能需要结合实践进行,读者可以关注本专栏的后续博文。
四、总结
本文作为机器学习专栏的第一篇文章,对 AI相关的概念以及机器学习的一些基础知识做了梳理和介绍。囿于本人的现有知识储备,本文内容比较简单也不够完善,后续我将不断积累和补充。
五、参考资料
[1] 《神经网络与深度学习》 邱锡鹏
[2] ++关于最小二乘拟合与正则化的探讨-CSDN博客++