Skip to content

1 绪论

1.1 机器学习的定义

正如我们根据过去的经验来判断明天的天气,吃货们希望从购买经验中挑选一个好瓜,那能不能让计算机帮助人类来实现这个呢?机器学习正是这样的一门学科,人的“经验”对应计算机中的“数据”,让计算机来学习这些经验数据,生成一个算法模型,在面对新的情况中,计算机便能作出有效的判断,这便是机器学习。

另一本经典教材的作者Mitchell给出了一个形式化的定义,假设:

  • P:计算机程序在某任务类T上的性能。
  • T:计算机程序希望实现的任务类。
  • E:表示经验,即历史的数据集。

若该计算机程序通过利用经验E在任务T上获得了性能P的改善,则称该程序对E进行了学习。

1.2 机器学习的一些基本术语

假设我们收集了一批西瓜的数据,例如:(色泽=青绿;根蒂=蜷缩;敲声=浊响), (色泽=乌黑;根蒂=稍蜷;敲声=沉闷), (色泽=浅自;根蒂=硬挺;敲声=清脆)……每对括号内是一个西瓜的记录,定义:

  • 所有记录的集合为:数据集。

  • 每一条记录为:一个实例(instance)或样本(sample)。

  • 例如:色泽或敲声,单个的特点为特征(feature)或属性(attribute)。

  • 对于一条记录,如果在坐标轴上表示,每个西瓜都可以用坐标轴中的一个点表示,一个点也是一个向量,例如(青绿,蜷缩,浊响),即每个西瓜为:一个特征向量(feature vector)。

  • 一个样本的特征数为:维数(dimensionality),该西瓜的例子维数为3,当维数非常大时,也就是现在说的“维数灾难”。

    计算机程序学习经验数据生成算法模型的过程中,每一条记录称为一个“训练样本”,同时在训练好模型后,我们希望使用新的样本来测试模型的效果,则每一个新的样本称为一个“测试样本”。定义:

  • 所有训练样本的集合为:训练集(trainning set),[特殊]。

  • 所有测试样本的集合为:测试集(test set),[一般]。

  • 机器学习出来的模型适用于新样本的能力为:泛化能力(generalization),即从特殊到一般。

    西瓜的例子中,我们是想计算机通过学习西瓜的特征数据,训练出一个决策模型,来判断一个新的西瓜是否是好瓜。可以得知我们预测的是:西瓜是好是坏,即好瓜与差瓜两种,是离散值。同样地,也有通过历年的人口数据,来预测未来的人口数量,人口数量则是连续值。定义:

  • 预测值为离散值的问题为:分类(classification)。

  • 预测值为连续值的问题为:回归(regression)。

    我们预测西瓜是否是好瓜的过程中,很明显对于训练集中的西瓜,我们事先已经知道了该瓜是否是好瓜,学习器通过学习这些好瓜或差瓜的特征,从而总结出规律,即训练集中的西瓜我们都做了标记,称为标记信息。但也有没有标记信息的情形,例如:我们想将一堆西瓜根据特征分成两个小堆,使得某一堆的西瓜尽可能相似,即都是好瓜或差瓜,对于这种问题,我们事先并不知道西瓜的好坏,样本没有标记信息。定义:

  • 训练数据有标记信息的学习任务为:监督学习(supervised learning),容易知道上面所描述的分类和回归都是监督学习的范畴。

  • 训练数据没有标记信息的学习任务为:无监督学习(unsupervised learning),常见的有聚类和关联规则。

二元分类

二元分类

二元分类是监督学习中分类问题的基本应用。监督学习通俗来讲就是训练集拥有正确的标签,例如你想根据房子的尺寸、卧室数等特征预测房价,那么你的训练集中除了有房子的特征以外,还得有这些房子的实际交易价格。与监督学习相对的是无监督学习,无监督学习中的训练集没有正确的标签,就好像你扔给了计算机一大堆数据,让计算机自己去学着找出里面有用的信息。监督学习中主要分为二类模型,回归和分类。生活中有许多二元分类的应用,例如你收到一封邮件,你想判断它是否是垃圾邮件?或者在银行的业务中,银行需要判断是否贷款给某个客户?

下面先进行一些符号说明:

(x,y)表示一个训练样本,xnx维的特征向量,y是标签(0或1)。

m表示训练集中训练样本的个数,x(1),y(1)表示第一个训练样本。

矩阵[x(1)x(2)...x(m)]表示维度为nxm的矩阵,这个矩阵代表所有训练样本的特征向量x,每一列代表一个训练样本的特征向量。xRnxm

矩阵[y(1)y(2)...y(m)]表示维度为1m的矩阵,这个矩阵代表所有训练样本的标签,每一列代表一个训练样本的标签。xR1m

所谓的二分类,就是指输入向量x后返回的标签y的情况只有两种(这个问题中,指0或1)。

Logistic回归

为了解决二元分类问题,下面将介绍logistic回归,它通常用于监督学习问题的输出标签是0或1时,即一个二元分类问题时。

下图是logistic回归算法的结构图示例,其中除以255是数据预处理步骤,这只是为了集中和标准化我们的训练集。

Logistic回归其实是一个很小的神经网络,对于每一张照片我们将它当作输入向量x,然后我们需要给出预测值a,即我们需要找到一种很好的关系来使得我们的预测值尽可能接近实际的标签。而Logistic回归需要不断通过正向传播和反向传播来学习参数(即学习到一种关系)。从输入x到给出预测值的过程称为正向传播,而通过得到的预测值从后往前对w和b进行求导叫做反向传播过程。

对于一张图片,将它转换为特征向量x输入算法后,我们期望算法告诉我们这张图是否是一只猫,算法通常会给出一个预测值a,a通常是一个概率值,表示这张图片为正类(即为1)的概率,为了决定这个预测的结果是正类还是负类,我们通常还需要设定一个阈值,任何大于这个阈值的都为正类,否则,为负类。

设logistic回归的参数是w,它的维度等于输入特征向量的维度,即w是一个nx维的向量,而b是一个实数。

那么已知输入x和参数w,b,我们如何计算预测值a呢? 如果我们计算a=wTx+b,即w是x的线性函数。事实上,如果你这么做的话,你其实是在用线性回归算法,线性回归算法并不是一个好的二元分类算法。在此,给出一个不正式的证明,直观上来说,你期望算法的输出a是一个概率,它表示这张图是1的概率,所以a应该是位于0~1之间的,但实际上wTx+b可能是负值,也可能是比1大得多的值,这并不符合我们的要求。所以我们可以对线性回归的值再用一层激活函数,让a=σ(wTx+b)

直观上可以看到σ函数的值域是0~1,因此这也使得我们的预测值a永远在(0,1)之间。

在logistic回归中,我们需要做的就是根据训练集来训练得到参数w和b的值使得我们的预测输出a尽可能接近真实标签值y。这样,在给出一张新的图片时,我们可以根据参数w和b计算得到a,从而预测出这张新的图片是否是一只猫?

机器学习与深度学习之间有什么区别?

机器学习与深度学习之间有什么区别?

机器学习 (ML) 是训练计算机程序或系统在没有明确指令的情况下执行任务的科学。计算机系统使用机器学习算法来处理大量数据、识别数据模式并预测未知或新场景的准确结果。深度学习是机器学习的一个子集,使用特定的算法结构,称为神经网络,以人脑为模型。深度学习方法试图自动执行通常需要人类智能的更复杂的任务。例如,您可以使用深度学习来描述图像、翻译文档或将声音文件转录为文本。

阅读有关机器学习的信息 »

阅读有关深度学习的信息 »

机器学习与深度学习之间有什么相似之处?

您可以使用机器学习 (ML) 和深度学习来识别数据中的模式。它们都依赖数据集来训练基于复杂数学模型的算法。在训练期间,算法会发现已知输出和输入之间的相关性。然后,模型可以根据未知输入自动生成或预测输出。与传统编程不同,它们的学习过程也是自动进行的,尽可能减少了人工干预。

以下是机器学习和深度学习之间的其他相似之处。

人工智能技术

机器学习和深度学习都是数据科学和人工智能 (AI) 的子集。它们都可以完成复杂的计算任务,如果采用传统的编程技术,这些任务需要大量的时间和资源才能完成。

统计基础

深度学习和机器学习都使用统计方法,通过数据集来训练算法。这些技术涉及回归分析、决策树、线性代数和微积分。机器学习专家和深度学习专家都非常了解统计数据。

大型数据集

机器学习和深度学习都需要大量高质量的训练数据才能做出更准确的预测。例如,机器学习模型需要每个特征提供大约 50-100 个数据点,而深度学习模型需要每个特征至少提供数千个数据点。

应用范围广泛多样

深度学习和机器学习解决方案可解决所有行业和应用程序的复杂问题。如果使用传统的编程和统计方法,则解决或优化这些类型的问题将花费更多的时间。

计算能力要求

训练和运行机器学习算法需要强大的计算能力,而由于深度学习的复杂性增加,其计算要求甚至更高。由于计算能力和云资源的最新发展,这两种解决方案现在都可用于个人用途。

逐步改进

随着机器学习和深度学习解决方案摄取更多数据,它们在模式识别方面将变得更加准确。将输入添加到系统后,系统会通过将其用作训练的数据点来进行改进。

机器学习的哪些局限性导致了深度学习的发展?

传统的机器学习 (ML) 需要通过特征工程进行大量的人工互动才能生成结果。例如,如果您正在训练机器学习模型对猫和狗的图像进行分类,则必须对其进行手动配置,以识别眼睛形状、尾巴形状、耳朵形状、鼻子轮廓等特征。

由于机器学习的目标是减少对人工干预的需求,因此深度学习技术消除了在每个步骤中对数据进行人工标记的需求。

尽管深度学习已经存在了几十年,但在 2000 年代初,Yann LeCun、Yoshua Bengio 和 Geoffrey Hinton 等科学家对这一领域进行了更详细的探索。尽管科学家们推进了深度学习,但在当时,大型、复杂的数据集有限,而且训练模型所需的处理能力成本高昂。在过去的 20 年中,这些条件有所改善,深度学习现在在商业上是可行的。

深度学习是机器学习 (ML) 的子集。您可以把它看作是一种高级的机器学习技术。两者都有多种应用场景。但是,深度学习解决方案需要更多资源:更大的数据集、更多的基础设施要求和更高的后续成本。

以下是机器学习和深度学习之间的其他区别。

预期应用场景

使用机器学习还是深度学习的决定取决于您需要处理的数据类型。机器学习从结构化数据(例如分类和推荐系统)中识别模式。例如,一家公司可以使用机器学习根据先前的客户流失率数据预测客户何时会取消订阅。

另一方面,深度学习解决方案更适合非结构化数据,在非结构化数据中,需要高度的抽象化才能提取特征。深度学习的任务包括图像分类和自然语言处理,其中需要识别数据对象之间的复杂关系。例如,深度学习解决方案可以分析社交媒体的提及情况,以确定用户的情绪。

解决问题的方法

传统机器学习通常需要执行特征工程,即人们从原始数据中手动选择和提取特征并为其分配权重。相反,深度学习解决方案只需最少的人工干预即可执行特征工程。

深度学习的神经网络架构在设计上更加复杂。深度学习解决方案的学习方式以人脑的工作方式为模型,节点代表神经元。深度神经网络由三层或更多层节点组成,包括输入层和输出层节点。

img

在深度学习中,神经网络中的每个节点都会自动为每个特征分配权重。信息从输入到输出,沿正向方向流经网络。然后计算预测产出和实际产出之间的差异。这个错误通过网络反向传播以调整神经元的权重。

由于自动加权过程、架构层次的深度以及所使用的技术,因此需要通过模型来为深度学习中远多于机器学习的运算求解。

训练方法

机器学习有四种主要的训练方法:有监督学习、无监督学习、半监督学习和强化学习。其他训练方法还包括迁移学习和自监督学习。

相比之下,深度学习算法使用几种更复杂的训练方法。其中包括卷积神经网络、循环神经网络、生成式对抗网络和自动编码器。

Performance

机器学习和深度学习都有特定的用例,它们在这些用例中的性能优于其他用例。

对于较简单的任务,例如识别新的垃圾邮件,机器学习较为适用,而且通常会优于深度学习解决方案。对于较复杂的任务,例如医学成像识别,深度学习解决方案的性能优于机器学习解决方案,因为前者可以识别肉眼看不见的异常。

人工参与

机器学习和深度学习解决方案都需要大量的人工参与才能发挥作用。必须通过人工定义问题、准备数据、选择和训练模型,然后评估、优化和部署解决方案。

img

机器学习模型可能更易于人们解释,因为它们源自决策树等更简单的数学模型。

相反,深度学习模型需要花费大量时间才能进行详细分析,因为这些模型在数学上很复杂。话虽如此,但神经网络的学习方式消除了对数据进行人工标记的需求。您可以通过选择预先训练的模型和平台来进一步减少人工参与。

基础设施要求

由于深度学习模型更复杂且需要更大的数据集,因此与机器学习模型相比,深度学习模型需要更高的存储和计算能力。机器学习数据和模型可以在单个实例或服务器集群上运行,深度学习模型则通常需要高性能集群和其他重要基础设施。

深度学习解决方案的基础设施要求可能导致其成本比机器学习高出许多。对于运行深度学习解决方案,现场基础设施可能不实用或不划算。您可以使用可扩展的基础设施和完全托管的深度学习服务来控制成本。