机器学习、深度学习和神经网络
术语及相关概念
在深入了解人工智能(AI)的工作原理以及它的各种应用之前,让我们先区分一下与AI密切相关的一些术语和概念:人工智能、机器学习、深度学习和神经网络。这些术语有时会被交替使用,但它们并不指代同样的东西:
- 人工智能是计算机科学的一个分支,处理智能行为的模拟。AI系统通常会展示与人类智能相关的行为,如规划、学习、推理、问题解决、知识表示、感知、运动和操控,较少涉及社会智能和创造力。
- 机器学习是AI的一个子集,它使用计算机算法分析数据,并根据所学做出智能决策,而无需明确编程。机器学习算法通过大量数据进行训练,并从示例中学习。它们不遵循基于规则的算法。机器学习使机器能够自己解决问题,并使用提供的数据做出准确的预测。
- 深度学习是机器学习的一个专门子集,它利用分层的神经网络模拟人类决策。深度学习算法能够标记和分类信息,识别模式。这使得AI系统能够在工作中不断学习,并通过判断决策是否正确,改进结果的质量和准确性。
- 人工神经网络,通常简称神经网络,受生物神经网络的启发,尽管它们的工作原理有所不同。AI中的神经网络是由小型计算单元(称为神经元)组成,它们接受输入数据并随着时间的推移学习做出决策。神经网络通常有多层,它们是深度学习算法在数据集增加时变得更加高效的原因,而与其他机器学习算法不同,后者可能会在数据增加时出现平台效应。
现在,你已经对一些关键AI概念的区别有了广泛的理解,接下来还有一个重要的区分,即人工智能与数据科学的区别:
- 数据科学是从大量不同的数据中提取知识和洞察的过程和方法。它是一个跨学科的领域,涉及数学、统计分析、数据可视化、机器学习等。它使我们能够从大量数据中获取信息、看到模式、找出意义,并用它来做出推动业务决策的判断。
- 数据科学可以使用许多AI技术来从数据中提取洞察。例如,它可以使用机器学习算法甚至深度学习模型来提取意义并做出推论。AI和数据科学之间有一些交集,但它们并不是彼此的子集。相反,数据科学是一个涵盖整个数据处理方法论的广泛术语,而AI包括所有允许计算机学习如何解决问题并做出智能决策的技术。
- AI和数据科学都可以涉及使用大数据,也就是极为庞大的数据量。后面我们将更详细地讨论机器学习、深度学习和神经网络的相关术语。
机器学习
机器学习是人工智能的一个子集,它使用计算机算法分析数据,并根据所学做出智能决策。与基于规则的算法不同,机器学习通过构建模型来对数据进行分类和预测:
- 让我们通过一个问题来理解机器学习的应用:如果我们想判断一个人的心脏是否会衰竭,机器学习能否解决这个问题?答案是肯定的。
- 假设我们有一些数据,比如每分钟心跳数、身体质量指数(BMI)、年龄、性别以及结果(心脏是否衰竭)。通过机器学习,给定这些数据集,我们能够学习并创建一个模型,基于输入预测结果。
- 那么,这与使用统计分析创建算法有什么区别呢?算法是一种数学技术。传统编程中,我们会拿到数据和规则,并使用它们来开发一个算法,给出答案。在前面的例子中,如果使用传统算法,我们会利用如心跳数和BMI等数据,创建一个算法来判断心脏是否会衰竭。这本质上是一个if-then-else语句。当我们提交输入时,基于我们确定的算法得到结果,而这个算法不会改变。
- 而机器学习则不同,它接受数据和答案,并创建算法。机器学习不直接给我们最终答案,而是给我们一组规则,确定模型会是什么样的。模型确定规则,当它收到输入时,会通过这些规则来做出判断。与传统算法不同,机器学习模型可以不断训练,并将来用于预测结果。
机器学习依赖于通过检查和比较大量数据集来定义行为规则,找到共同模式。例如,我们可以向机器学习程序提供大量鸟类的图片,并训练模型在看到鸟类图片时标记为“鸟”。同样,我们也可以为“猫”创建标签,并提供猫的图片进行训练。当机器模型看到猫或鸟的图片时,它会根据一定的置信度标记图片:
- 这种机器学习类型被称为监督学习,即通过人工标注的数据训练算法。你提供更多的样本,监督学习算法会变得更加精确地对新数据进行分类。
- 另一种机器学习类型是无监督学习,它依赖于提供未标注的数据,并让算法自己发现数据中的模式。你提供输入数据,但不提供标签,让机器自行推断数据的特征。这种学习方式对于聚类数据很有用,即根据数据与邻近数据的相似性,将数据分组。在数据聚类之后,可以使用不同技术来探索数据,寻找模式。例如,你可以提供一个持续的网络流量数据流,机器学习算法会自主学习网络的正常活动以及异常行为和可能的恶意行为。
- 第三种机器学习算法是强化学习,它依赖于给机器学习算法提供一组规则和约束条件,并让它学会如何实现目标。你定义状态、目标、允许的行动和约束条件。算法通过尝试不同的组合来实现目标,并根据决策的好坏给予奖励或惩罚。算法会尽力在给定的约束下最大化奖励。例如,你可以使用强化学习来教机器玩棋类游戏或通过障碍物。机器学习模型是一种用于在数据中发现模式的算法,而不需要程序员显式编程这些模式。
机器学习技术与训练
机器学习是一个广泛的领域,我们可以将其分为三种不同的类别:监督学习、无监督学习和强化学习。通过这些方法,我们可以解决许多不同的任务:
- 监督学习是指当我们在数据集中有类别标签时,使用这些标签来构建分类模型。也就是说,当我们接收到数据时,它已经有标签,告诉我们数据代表的是什么。例如,在之前的例子中,我们有一个包含年龄、性别等标签的表格。
- 无监督学习则不同,我们没有类别标签,必须从无结构的数据中发现类别标签。这通常涉及深度学习等技术,例如通过观察图片来训练模型,通常采用聚类的方式进行。
- 强化学习是另一种子集,它使用奖励函数来惩罚不好的行为或奖励好的行为。
监督学习的细分
监督学习可以进一步细分为回归(Regression)、分类(Classification)和神经网络(Neural Networks)三类。
- 回归模型通过观察特征x与结果y之间的关系来构建,其中y是一个连续变量。本质上,回归用于估算连续值。
- 神经网络指的是模仿人类大脑结构的结构。
- 分类则侧重于识别离散值。我们可以根据许多输入特征x为输出y分配离散的类别标签。例如,在之前的例子中,给定一组特征x(如每分钟心跳、身体质量指数、年龄和性别),算法将输出y分类为两个类别:True或False,预测心脏是否会衰竭。
在其他分类模型中,我们可以将结果分类为多个类别。例如,预测一个菜谱是印度菜、中国菜、日本菜还是泰国菜。一些分类方法包括决策树、支持向量机、逻辑回归和随机森林。
通过分类,我们可以从数据中提取特征。在这个例子中,特征可能是每分钟心跳或年龄。特征是输入模式的独特属性,帮助确定输出类别或类标签。每一列是一个特征,每一行是一个数据点。分类是预测给定数据点所属类别的过程。我们的分类器使用一些训练数据来理解输入变量与类别之间的关系。
训练模型
那么,训练到底意味着什么呢?训练是指使用学习算法来确定和开发模型的参数。虽然有许多算法可以做到这一点,用通俗的话来说,如果你正在训练一个预测心脏是否衰竭的模型(True或False的值),你会向算法展示一些标记为True的实际数据,然后再次向算法展示一些标记为False的数据,你会不断重复这个过程,直到算法学会从标记为True的心脏衰竭数据中识别出来,标记为False的数据则相反。
数据集划分
在机器学习中,我们通常将数据集分为三部分:训练集、验证集和测试集。
- 训练集是用于训练算法的数据。
- 验证集用于验证结果并微调算法的参数。
- 测试集是模型从未见过的数据,用于评估模型的效果。
通过这些评估方法,我们可以使用如准确率、精确度和召回率等指标来表示模型的好坏。
深度学习
机器学习是人工智能(AI)的一个子集,深度学习则是机器学习的一个专门子集。深度学习通过分层算法创建神经网络,这是一种人工复制大脑结构和功能的方式,使得AI系统能够在工作中持续学习,并提高结果的质量和准确性。这就是为什么深度学习可以让系统从非结构化数据中学习,例如照片、视频和音频文件。例如,深度学习使得AI系统具备自然语言理解的能力,能够理解传达的信息的上下文和意图。
- 深度学习算法并不直接将输入映射到输出。相反,它们依赖于多个处理层。每一层将其输出传递给下一层,下一层再处理这些输出并传递给下一层。由于有很多层,因此称之为深度学习。
- 在创建深度学习算法时,开发人员和工程师配置层数和连接每一层输出与下一层输入的函数类型。然后,他们通过提供大量带注释的示例来训练模型。例如,你可以给深度学习算法提供成千上万张图片和与每张图片内容对应的标签。算法会通过其分层的神经网络运行这些示例,并调整每一层神经网络中变量的权重,从而能够检测出定义相似标签的图片的共同模式。
深度学习解决了旧版本学习算法中的一个主要问题。尽管机器学习算法的效率和性能在数据集增长时会达到瓶颈,深度学习算法在数据不断增加时仍然能持续改进。深度学习在多个任务中已经证明了其高效性,包括图像字幕生成、语音识别与转录、人脸识别、医学影像和语言翻译等。深度学习也是自动驾驶汽车的主要组成部分之一。
神经网络
人工神经网络
人工神经网络是由一组较小的单元称为神经元组成的计算单元,这些神经元模拟了人类大脑处理信息的方式。人工神经网络借鉴了生物神经网络的一些思想,目的是近似其处理结果。这些单元或神经元像生物神经网络一样,接受输入数据,并随着时间的推移学习做出决策。
- 神经网络通过反向传播(Backpropagation)进行学习。反向传播使用一组训练数据,将已知的输入与期望的输出匹配。首先,输入数据被传入网络并产生输出。然后,误差函数会计算给定输出与期望输出之间的差距。最后,网络会进行调整,以减少误差。
- 神经网络中的一组神经元被称为层,每一层接受输入并提供输出。每个神经网络至少有一个输入层和一个输出层,它还可能包含一个或多个隐藏层,这些隐藏层模拟了人脑中的活动。隐藏层接受一组加权输入,并通过激活函数产生输出。如果一个神经网络有多个隐藏层,它就被称为深度神经网络(Deep Neural Network)。
- 感知机(Perceptrons)是最简单且最早的神经网络类型,它是单层神经网络,由输入节点直接连接到输出节点。输入层将输入值通过乘以权重并求和的方式传递给下一层。隐藏层接收来自其他节点的输入,并将其输出传递给其他节点。隐藏层和输出层的节点具有一种叫做偏置(Bias)的属性,它是应用在节点上的一种特殊类型的权重,用来在考虑其他输入后进行调整。
- 最后,激活函数决定了节点如何响应其输入。激活函数会根据输入值的总和和偏置进行计算,结果将作为输出传递。激活函数有不同的形式,选择合适的激活函数是神经网络成功的关键。
卷积神经网络CNNs
卷积神经网络(Convolutional Neural Networks,CNNs)是多层神经网络,它们受到动物视觉皮层的启发。CNNs在图像处理、视频识别和自然语言处理等应用中非常有用。卷积(Convolution)是一种数学运算,将一个函数应用于另一个函数,结果是两个函数的混合。卷积非常擅长检测图像中的简单结构,并将这些简单特征结合起来构建更复杂的特征。
在卷积神经网络中,这一过程通过一系列层进行,每一层对前一层的输出进行卷积。CNNs擅长从较简单的特征中构建复杂的特征。
递归神经网络RNNs
递归神经网络(Recurrent Neural Networks,RNNs)之所以叫做“递归”神经网络,是因为它们对每个序列元素执行相同的任务,且前一步的输出会作为后续阶段的输入。在一般的神经网络中,输入通过多层处理后产生输出,假设两个连续的输入是相互独立的,但在某些情况下,这种假设并不成立。例如,当我们需要考虑一个单词的上下文时,必须考虑前一步的观察结果才能产生正确的输出。
RNNs可以利用长序列中的信息,每一层网络代表某一时刻的观察值。