一、说明
这是一篇对神经网络的泛泛而谈的文章,我的意见是,先知道框架,而后知道每一个细节,这是学习人工智能的基本路线。本文就神经网络而言,谈到一些基础概念,适应于初学者建立概念。
二、神经网络定义
神经网络是一组算法,以人脑为松散建模,旨在识别模式。它们通过一种机器感知、标记或聚类原始输入来解释感官数据。他们识别的模式是数字的,包含在矢量中,所有现实世界的数据,无论是图像、声音、文本还是时间序列,都必须翻译成矢量。
神经网络帮助我们进行聚类和分类。您可以将它们视为存储和管理的数据之上的聚类和分类图层。它们有助于根据示例输入之间的相似性对未标记的数据进行分组,并在具有要训练的标记数据集时对数据进行分类。(神经网络还可以提取提供给其他算法进行聚类和分类的特征;因此您可以将深度神经网络视为涉及强化学习、分类和回归算法的大型机器学习应用程序的组件。
人工神经网络是chatGPT,Microsoft的Bing,Google的Bard和Meta的Llama使用的大型语言模型(LLMS)的基础。
深度学习解决了什么样的问题,更重要的是,它能解决你的问题吗?要知道答案,您需要问几个问题:
-
我关心什么结果?在分类问题中,这些结果是可以应用于数据的标签:例如,在电子邮件筛选器中,或在欺诈检测中,或在客户关系管理中。其他类型的问题包括异常检测(在欺诈检测和制造设备的预测性维护中很有用)和聚类,这在显示相似性的推荐系统中很有用。
spam
not_spam
good_guy
bad_guy
angry_customer
happy_customer
-
我有正确的数据吗?例如,如果遇到分类问题,则需要标记数据。您需要的数据集是否公开可用,或者您可以创建它(使用 Scale 或 AWS Mechanical Turk 等数据注释服务)?在此示例中,垃圾邮件将被标记为垃圾邮件,标签将使算法能够从输入映射到您关注的分类。在掌握数据之前,您无法知道自己拥有正确的数据。如果你是一名处理问题的数据科学家,你不能相信任何人会告诉你数据是否足够好。只有直接探索数据才能回答这个问题。
三、几个具体例子
深度学习将输入映射到输出。它发现相关性。它被称为“通用逼近器”,因为它可以学习在任何输入和任何输出之间近似一个未知函数,假设它们是相关的(例如,通过相关性或因果关系)。在学习过程中,神经网络找到正确的或正确的方式转换为,无论是还是。以下是深度学习可以做什么的几个例子。f(x) = y
x
y
f
x
y
f(x) = 3x + 12
f(x) = 9x - 0.1
3.1 分类
所有分类任务都依赖于标记的数据集;也就是说,人类必须将他们的知识转移到数据集中,以便神经网络学习标签和数据之间的相关性。这被称为监督学习。
- 检测人脸,识别图像中的人,识别面部表情(愤怒,快乐)
- 识别图像中的物体(停车标志、行人、车道标记等)
- 识别视频中的手势
- 检测语音,识别说话人,将语音转录为文本,识别语音中的情绪
- 将文本分类为垃圾邮件(电子邮件中)或欺诈性(保险索赔);识别文本中的情绪(客户反馈)
人类可以生成的任何标签,您关心的任何结果以及与数据相关的结果,都可用于训练神经网络。
3.2 聚类
聚类或分组是对相似性的检测。深度学习不需要标签来检测相似性。没有标签的学习称为无监督学习。未标记的数据是世界上的大部分数据。机器学习的一个定律是:算法可以训练的数据越多,它就越准确。因此,无监督学习有可能产生高度准确的模型。
- 搜索:比较文档、图像或声音以显示类似项目。
- 异常检测:检测相似性的另一面是检测异常或异常行为。在许多情况下,异常行为与您想要检测和预防的事情(例如欺诈)高度相关。
3.3 预测分析:回归
通过分类,深度学习能够在图像中的像素和人名之间建立相关性。您可以称之为静态预测。出于同样的原因,暴露于足够多的正确数据,深度学习能够在当前事件和未来事件之间建立相关性。它可以在过去和未来之间运行回归。从某种意义上说,未来的事件就像标签。深度学习不一定关心时间,或者某些事情还没有发生的事实。给定一个时间序列,深度学习可能会读取一串数字并预测接下来最有可能出现的数字。
- 硬件故障(数据中心、制造、运输)
- 健康故障(中风、基于可穿戴设备的生命统计数据和数据的心脏病发作)
- 客户流失(根据 Web 活动和元数据预测客户离开的可能性)
- 员工流动率(同上,但针对员工)
我们预测得越好,我们就越能预防和预防。正如你所看到的,有了神经网络,我们正在走向一个意外减少的世界。不是零惊喜,只是略少。我们也在走向一个更智能的智能体世界,将神经网络与强化学习等其他算法相结合以实现目标。
通过对深度学习用例的简要概述,让我们看看神经网络是由什么组成的。
四、神经网络元素
深度学习是我们用于“堆叠神经网络”的名称;也就是说,由几层组成的网络。
这些层由节点组成。节点只是一个进行计算的地方,松散地模式在人脑中的神经元上,当遇到足够的刺激时就会触发。节点将来自数据的输入与一组系数或权重相结合,这些系数或权重可以放大或抑制该输入,从而根据算法尝试学习的任务为输入分配重要性;例如,哪个输入最有帮助的是无错误地对数据进行分类?这些输入权重乘积被求和,然后总和通过节点的所谓激活函数传递,以确定该信号是否以及在多大程度上应该在网络中进一步传播,以影响最终结果,例如分类行为。如果信号通过,神经元已被“激活”。
下面是一个节点的外观图。
节点层是一排类似神经元的开关,当输入通过网络馈送时,它们会打开或关闭。每个图层的输出同时是后续图层的输入,从接收数据的初始输入图层开始。
将模型的可调整权重与输入特征配对,是我们在神经网络如何对输入进行分类和聚类方面为这些特征分配重要性的方式。
五、深度神经网络的关键概念
深度学习网络与更常见的单隐藏层神经网络的区别在于它们的深度;也就是说,数据在模式识别的多步骤过程中必须通过的节点层数。
早期版本的神经网络(如第一个感知器)是浅层的,由一个输入层和一个输出层组成,中间最多有一个隐藏层。超过三层(包括输入和输出)符合“深度”学习的条件。So Deep不仅仅是一个流行语,让算法看起来像是读萨特,听你还没有听说过的乐队。这是一个严格定义的术语,表示多个隐藏层。
在深度学习网络中,每一层节点都根据前一层的输出训练一组不同的特征。您越深入神经网络,您的节点可以识别的特征就越复杂,因为它们会聚合和重新组合前一层的特征。
这称为功能层次结构,它是复杂性和抽象性不断增加的层次结构。它使深度学习网络能够处理非常大的高维数据集,其中包含数十亿个通过非线性函数的参数。
最重要的是,这些神经网络能够发现未标记、非结构化数据中的潜在结构,这是世界上绝大多数数据。非结构化数据的另一个词是原始媒体;即图片、文本、视频和音频记录。因此,深度学习最能解决的问题之一是处理和聚类世界上原始的、未标记的媒体,识别数据的相似性和异常性,没有人在关系数据库中组织过,也没有人给这些数据命名过。
例如,深度学习可以拍摄一百万张图像,并根据它们的相似性对它们进行聚类:猫在一个角落,破冰船在另一个角落,三分之一是你祖母的所有照片。这是所谓的智能相册的基础。
现在将同样的想法应用于其他数据类型:深度学习可能会对原始文本(如电子邮件或新闻文章)进行聚类。充满愤怒抱怨的电子邮件可能聚集在向量空间的一个角落,而满意的客户或垃圾邮件机器人消息可能会聚集在其他角落。这是各种邮件过滤器的基础,可用于客户关系管理 (CRM)。这同样适用于语音邮件。
对于时间序列,数据可能会围绕正常/正常行为和异常/危险行为进行聚类。如果时间序列数据是由智能手机生成的,它将提供对用户健康和习惯的洞察;如果它是由自动零件生成的,则可用于防止灾难性故障。
与大多数传统的机器学习算法不同,深度学习网络无需人工干预即可执行自动特征提取。鉴于特征提取是一项可能需要数据科学家团队数年才能完成的任务,深度学习是一种绕过有限专家阻塞点的方法。它增强了小型数据科学团队的力量,这些团队本质上是不可扩展的。
在未标记的数据上进行训练时,深度网络中的每个节点层通过反复尝试重建其从中抽取样本的输入来自动学习特征,试图最小化网络的猜测与输入数据本身的概率分布之间的差异。例如,受限玻尔兹曼机以这种方式创建所谓的重建。
在这个过程中,这些神经网络学会识别某些相关特征与最佳结果之间的相关性——它们在特征信号和这些特征所代表的内容之间建立联系,无论是完全重建,还是标记数据。
然后,在标记数据上训练的深度学习网络可以应用于非结构化数据,使其能够访问比机器学习网络更多的输入。这是提高性能的秘诀:网络可以训练的数据越多,它就越准确。(在大量数据上训练的坏算法可能优于在很少数据上训练的好算法。深度学习处理和学习大量未标记数据的能力使其比以前的算法具有明显的优势。
深度学习网络以输出层结束:逻辑或softmax分类器,为特定结果或标签分配可能性。我们称之为预测,但它在广义上是预测性的。例如,给定图像形式的原始数据,深度学习网络可以决定输入数据90%的可能性代表一个人。
六、示例:前馈网络
我们使用神经网络的目标是尽快到达误差最小的点。我们正在进行一场比赛,而比赛是围绕一条赛道进行的,所以我们在一个循环中反复通过相同的点。比赛的起跑线是初始化权重的状态,终点线是这些参数能够产生足够准确的分类和预测时的状态。
比赛本身涉及许多步骤,每个步骤都类似于之前和之后的步骤。就像跑步者一样,我们会一遍又一遍地重复动作以到达终点。神经网络的每一步都涉及猜测、误差测量和权重的轻微更新,对系数的增量调整,因为它慢慢学会注意最重要的特征。
权重的集合,无论它们处于开始状态还是结束状态,也称为模型,因为它尝试对数据与真实标签的关系进行建模,以掌握数据的结构。模型通常一开始很糟糕,最终变得不那么糟糕,随着神经网络更新其参数而随着时间的推移而变化。
这是因为神经网络是在无知中诞生的。它不知道哪些权重和偏差将最好地转换输入以做出正确的猜测。它必须从猜测开始,然后在从错误中学习时尝试按顺序做出更好的猜测。(你可以把神经网络想象成科学方法的缩影,测试假设并再次尝试——只是它是蒙着眼睛的科学方法。或者像个孩子:他们生来就不懂多少,通过接触生活经验,慢慢学会解决世界上的问题。对于神经网络,数据是唯一的体验。
以下是对使用前馈神经网络学习过程中发生的情况的简单解释,这是最简单的解释架构。
输入进入网络。系数或权重将该输入映射到网络在最后进行的一组猜测。
input * weight = guess
加权输入会导致对该输入的猜测。然后,神经将其猜测与数据的基本事实进行比较,有效地询问专家“我做对了吗?
ground truth - guess = error
网络的猜测和基本事实之间的区别在于其错误。网络测量该误差,并将误差带回其模型,调整权重以达到导致误差的程度。
error * weight's contribution to error = adjustment
上面的三个伪数学公式说明了神经网络的三个关键功能:评分输入、计算损失和对模型进行更新——重新开始三步过程。神经网络是一个纠正反馈循环,奖励支持其正确猜测的权重,并惩罚导致其错误的权重。
让我们在上面的第一步上徘徊。
6.1 多元线性回归
尽管它们的名字受生物学启发,但人工神经网络只不过是数学和代码,就像任何其他机器学习算法一样。事实上,任何了解线性回归(您在统计学中学习的第一种方法)的人都可以理解神经网络的工作原理。在最简单的形式中,线性回归表示为
Y_hat = bX + a
其中是估计输出,是输入,是斜率,是二维图形垂直轴上一条线的截距。(更具体地说:可能是辐射暴露,可能是癌症风险; 可能是日常俯卧撑,可能是你可以卧推的总重量; 肥料的数量和作物的大小。您可以想象,每次向 添加一个单位时,无论您在 X 轴上有多远,因变量都会按比例增加。两个变量一起向上或向下移动之间的简单关系是一个起点。Y_hat
X
b
a
X
Y
X
Y_hat
X
Y_hat
X
Y_hat
下一步是想象多元线性回归,其中有许多输入变量产生输出变量。它通常表示如下:
Y_hat = b_1*X_1 + b_2*X_2 + b_3*X_3 + a
(为了扩展上面的作物示例,您可以将生长季节的日照量和降雨量添加到肥料变量中,这三者都会产生影响。Y_hat
现在,这种形式的多元线性回归正在神经网络的每个节点上发生。对于单个层的每个节点,来自前一层每个节点的输入与来自每个其他节点的输入重新组合。也就是说,输入根据其系数以不同的比例混合,这些系数不同,导致后续层的每个节点。通过这种方式,网络测试哪个输入组合是重要的,因为它试图减少错误。
一旦你对节点输入求和得出,它就会通过一个非线性函数传递。原因如下:如果每个节点只是执行多元线性回归,那么随着X的增加,它将线性增加,并且没有限制,但这不符合我们的目的。Y_hat
Y_hat
我们试图在每个节点上构建一个开关(如神经元......),它打开和关闭,这取决于它是否应该让输入的信号通过以影响网络的最终决策。
当您有交换机时,您会遇到分类问题。输入的信号是否指示节点应将其分类为足够或not_enough,打开或关闭?二元决策可以用 1 和 0 表示,逻辑回归是一个非线性函数,它挤压输入以将其转换为 0 到 1 之间的空间。
每个节点的非线性变换通常是类似于逻辑回归的 s 形函数。它们以sigmoid(希腊语中的“S”),tanh,hard tanh等名称命名,它们塑造了每个节点的输出。所有节点的输出,每个节点被压缩到0到1之间的S形空间中,然后作为输入传递到前馈神经网络中的下一层,依此类推,直到信号到达网络的最后一层,在那里做出决策。
6.2 梯度下降
一种常用的优化函数的名称称为“梯度下降”,该函数根据权重引起的误差进行调整。
梯度是斜率的另一个词,斜率在 x-y 图上的典型形式表示两个变量如何相互关联:运行中的上升、货币随时间变化的变化等。在这种特殊情况下,我们关心的斜率描述了网络误差与单个权重之间的关系;也就是说,随着重量的调整,误差如何变化。
更精细地说,哪个重量会产生最小的误差?哪一个正确表示输入数据中包含的信号,并将它们转换为正确的分类?哪个人可以在输入图像中听到“鼻子”,并且知道应该将其标记为面部而不是煎锅?
随着神经网络的学习,它会慢慢调整许多权重,以便它们能够正确地将信号映射到意义。网络误差与每个权重之间的关系是一个导数 dE/dw,它衡量权重的微小变化导致误差的轻微变化的程度。
每个权重只是涉及许多转换的深度网络中的一个因素;权重的信号经过激活并在几层上求和,因此我们使用微积分的链式规则来回馈网络激活和输出,最终得出所讨论的权重及其与整体误差的关系。
微积分中的链式规则指出:
在前馈网络中,网络误差与单个权重之间的关系如下所示:
也就是说,给定由第三个变量 Activation 介导的两个变量 Error 和权重,权重通过该变量传递,您可以通过首先计算激活的变化如何影响 Error 的变化以及权重的变化如何影响激活的变化来计算 权重的变化如何影响误差的变化。
深度学习中学习的本质就是:根据模型产生的误差调整模型的权重,直到你无法再减少误差。
七、逻辑回归
在多层的深度神经网络上,最后一层具有特定的作用。处理标记的输入时,输出层对每个示例进行分类,应用最可能的标签。输出层上的每个节点代表一个标签,该节点根据它从前一层的输入和参数接收的信号强度打开或关闭。
每个输出节点产生两个可能的结果,二进制输出值 0 或 1,因为输入变量要么值得标签,要么不需要标签。毕竟,没有小怀孕这样的事情。
虽然处理标记数据的神经网络产生二进制输出,但它们接收的输入通常是连续的。也就是说,网络作为输入接收的信号将跨越一系列值,并包含任意数量的指标,具体取决于它试图解决的问题。
例如,推荐引擎必须就是否投放广告做出二元决策。但它做出决定所依据的输入可能包括客户上周在亚马逊上花了多少钱,或者客户访问该网站的频率。
因此,输出层必须将诸如花在尿布上的 67.59 美元和 15 次访问网站等信号压缩到 0 到 1 之间的范围;即给定输入是否应该被标记的概率。
我们用于将连续信号转换为二进制输出的机制称为逻辑回归。这个名字很不幸,因为逻辑回归用于分类,而不是大多数人熟悉的线性意义上的回归。它计算一组输入与标签匹配的概率。
让我们来看看这个小公式。
对于表示为概率的连续输入,它们必须输出正结果,因为不存在负概率这样的东西。这就是为什么您将输入视为分母中 e 的指数 – 因为指数迫使我们的结果大于零。现在考虑 e 的指数与分数 1/1 的关系。一个,正如我们所知,是概率的上限,超过这个上限,我们的结果不能不荒谬。(我们对此有120%的把握。
随着触发标签的输入 x 的增长,x 的表达式 e 缩小到零,留下分数 1/1 或 100%,这意味着我们接近(但从未完全达到)标签应用的绝对确定性。与输出负相关的输入的值将被 e 指数上的负号翻转,随着负信号的增长,x 的数量变大,使整个分数越来越接近零。
现在想象一下,不是以x作为指数,而是所有权重的乘积及其相应输入的总和 - 通过网络的总信号。这就是你在神经网络分类器的输出层输入逻辑回归层的内容。
通过这一层,我们可以设置一个决策阈值,高于该阈值的示例标记为 1,低于该阈值则不标记为 <>。您可以根据需要设置不同的阈值 - 低阈值会增加误报的数量,较高的阈值会增加误报的数量 - 具体取决于您要出错的一方。
八、神经网络与人工智能
在某些圈子里,神经网络是人工智能的代名词。在其他情况下,它们被认为是一种“蛮力”技术,其特点是缺乏智力,因为它们从一张白纸开始,然后通过敲打到一个准确的模型。通过这种解释,神经网络是有效的,但在建模方法中效率低下,因为它们不对输出和输入之间的功能依赖性做出假设。
值得一提的是,最重要的人工智能研究小组正在通过训练越来越大的神经网络来推动学科的边缘。蛮力有效。这是人工智能突破的必要条件,如果不是充分条件的话。OpenAI对更通用AI的追求强调蛮力方法,这种方法已被证明对GPT-3等知名模型有效。
像Hinton的胶囊网络这样的算法需要更少的数据实例来收敛到一个准确的模型上;也就是说,目前的研究有可能解决深度学习的暴力效率低下问题。
虽然神经网络作为函数近似器很有用,在许多感知任务中将输入映射到输出,以实现更通用的智能,但它们可以与其他AI方法结合使用以执行更复杂的任务。例如,深度强化学习将神经网络嵌入到强化学习框架中,它们将行动映射到奖励以实现目标。Deepmind在视频游戏和棋盘围棋方面的胜利就是很好的例子。