机器学习和神经网络 - 页 51

 

消失(或爆炸)梯度(DL 11)



消失(或爆炸)梯度(DL 11)

当我们深入研究扩大神经网络以解决更大的问题时,添加更多层变得很有必要。然而,更深层次的网络在训练过程中可能会遇到梯度消失或爆炸引起的问题。让我们考虑一个隐藏层具有 sigmoid 激活的深度神经网络。可视化这样一个具有众多节点和层的网络变得不切实际。相反,我们可以用框图来表示它,其中每一列代表一个层,并且激活函数在每个块中指示。

另一种可视化网络的方法是通过计算图,显示应用于每批数据的操作序列。从输入矩阵开始,我们执行矩阵乘法、偏置加法,并在每一层应用激活函数。这个过程通过隐藏层继续进行,直到我们到达输出层,在输出层激活函数变为 softmax。损失是根据激活和目标计算的。

以数学方式表达计算,我们将权重矩阵乘以输入矩阵,添加偏差,并应用激活函数。表达式继续通过隐藏层,最终到达应用 softmax 激活的输出层。输出激活和目标用于计算损失。

在计算梯度下降更新的导数时,会重复应用链式法则。从输出层开始,我们通过乘以权重矩阵的转置和逐元素乘以激活函数的导数来计算增量。此过程通过隐藏层向后传播增量。

当对隐藏层使用 sigmoid 激活函数时,会出现梯度消失问题。 sigmoid 的导数往往具有较小的值,导致增量随着每次反向传播而减小。结果,梯度变得越来越小,使得有效更新权重变得具有挑战性,尤其是在早期层中。

由于梯度消失问题,深度学习在训练深度神经网络时面临困难。然而,大约十年前,人们设计了一些方法来克服这一挑战。一种方法是改变权重矩阵的初始化,生成更大的初始随机权重来抵消由 sigmoid 导数引起的递减增量。

最重大的突破来自采用整流器线性单元 (ReLU) 作为激活函数。与 sigmoid 导数不同,ReLU 导数往往不会显着减少增量。此属性使 ReLU 激活更受欢迎,因为它们有助于训练深度神经网络。

然而,使用 ReLU 激活会引入梯度爆炸的风险,其中增量会随着我们向后传播而变得更大。为了缓解这种情况,建议选择比 sigmoid 激活更小的初始权重。

ReLU 神经元因其易于训练和计算效率而成为隐藏层的首选。权重的初始化取决于所采用的激活函数,深度学习社区在为不同的激活类型确定合适的权重初始化方法方面取得了实质性进展。现代深度学习库通常根据指定的激活自动处理权重初始化。

 

避免神经网络过度拟合(DL 12)



避免神经网络过度拟合(DL 12)

当我们使用更大的神经网络进行深度学习时,过度拟合的风险会显着增加。了解过度拟合的原因以及如何检测和预防它至关重要。当机器学习模型对训练集过于具体而无法推广到新数据时,就会发生过度拟合。主要原因是当模型与训练数据量相比具有过多的参数自由度时,使得具有高自由度或小训练集的模型更容易受到影响。

例如,在多项式回归中,增加多项式的次数可以提供更多参数进行微调,从而使模型能够更精确地拟合训练数据。然而,这可能会阻碍其泛化到训练集之外的示例的能力。

在神经网络的上下文中,权重和偏差用作参数。随着神经网络变得越来越大,权重越来越大,它们在选择参数方面有更大的自由度。因此,在训练大型神经网络时,重要的是要警惕潜在的过度拟合,识别的主要方法是监控验证集。

将数据集拆分为训练集、验证集和测试集有助于评估网络的泛化能力。当发生过度拟合时,训练集和验证集之间的损失或准确性存在明显差异。理想情况下,训练集损失应该随着时间的推移而减少,但如果它开始增加,则表明存在问题。同样,验证集损失应该随着训练集损失的减少而减少,如果在训练集损失继续减少的同时开始增加,则表明存在严重的过拟合。两组模型的准确性也可以揭示分类问题中的过度拟合。

要解决过度拟合,一种方法是直接解决其原因。数据不足可以通过获取更多数据来缓解,正如使用大量数据集的大规模深度学习成功所见。但是,如果获取更多数据不可行,缩小模型可以帮助对抗过度拟合并提高效率。一般准则是选择大小足以应对手头特定问题的神经网络架构。

如果过度拟合问题仍然存在,则可以考虑使用先进的技术。一种这样的技术是提前停止,当观察到训练集和验证集之间的分离时,甚至在达到最大 epoch 数之前停止训练。此外,可以使用 Dropout 和权重正则化等方法来防止过度拟合。

Dropout 涉及在训练期间随机将网络中的一些激活归零,以防止特定神经元产生过度影响。通过丢弃神经元,网络的后续层被迫学习不过度依赖这些神经元的功能,从而减少过度拟合。在测试期间进行调整以解决 Dropout 缺失的问题。

权重正则化通过阻止权重变得太大来对抗过度拟合。这是通过在损失函数中加入一个惩罚项来实现的,以阻止大权重。一种常见的权重正则化形式是 L2 正则化,其中将所有权重的平方和作为二次惩罚项添加。这个由超参数控制的正则化项平衡了对正则化与原始损失函数的强调。

在训练神经网络时监控过度拟合至关重要。考虑模型的大小和可用数据,并在必要时采用提前停止、Dropout 和正则化等技术来解决过度拟合问题。

 

卷积层(DL 13)



卷积层(DL 13)

到目前为止,我们所考虑的神经网络都是密集连接的,其中每一层都连接到下一层。密集网络是一个很好的起点,因为它们通用且用途广泛。但是,对于特定的应用程序,我们可以选择更有效的替代架构。在本视频中,我们探索了第一个替代架构,称为卷积层。

卷积网络非常适合图像处理任务。卷积层不是将输入图像视为平面向量,而是保留图像的空间信息。卷积层中的每个神经元仅连接到图像的一个小区域,捕捉像素的空间接近度。通过使用这种架构,网络在学习图像处理任务方面获得了优势。

卷积层有两个关键思想:局部连接和权重绑定。局部连通性意味着神经元连接到图像的一个小子区域,使它们能够学习特定的特征。权重绑定确保将相同的函数应用于图像的不同区域。通过共享权重,网络可以学习在多个区域应用相同的功能。

卷积层引入了新的超参数来考虑。这些包括内核大小(确定子区域大小)、步幅(窗口滑动多少)、输出通道数(应用于每个窗口的函数数)、填充(处理图像边缘)和池化(聚合神经元结果降维)。

池化通过聚合区域中神经元的结果来帮助减少网络中的参数数量。这可以通过平均或取最大值来完成。当我们不需要特征的精确定位而是区域中特征的整体存在时,池化很有用。

与密集网络相比,卷积网络提供了一种更有效的图像处理方式。他们利用空间信息并减少参数数量,使他们更容易训练。

池化有助于减少特征图的维数和后续层中的参数数量。通过聚合相邻神经元的结果,池化保留了最重要的信息,同时丢弃了一些空间细节。

有不同类型的池化操作,例如最大池化和平均池化。在最大池化中,选择每个池化窗口内的最大值作为该区域的代表值。这有助于捕获窗口中出现的最突出的特征。另一方面,平均池化取窗口的平均值,提供更平滑的特征表示。

池化后,我们可以进一步堆叠额外的卷积层,以从前一层的输出中学习更复杂和抽象的特征。每个后续层通过组合来自多个较小接受域的信息来捕获更高级别的特征。

总而言之,具有卷积层和池化层的卷积神经网络 (CNN) 非常适合图像处理任务。卷积层捕获空间邻近度并利用权重共享,使网络能够有效地学习局部特征。池化降低维度并提取重要信息,允许后续层学习更多抽象表示。这种分层特征学习使 CNN 对各种计算机视觉应用非常强大,包括图像分类、对象检测和图像分割。

 

使用少量数据训练大型网络:迁移学习和数据增强(DL 14)



使用少量数据训练大型网络:迁移学习和数据增强(DL 14)

在深度学习中,经常会遇到我们想要利用深度学习的力量但缺乏足够的数据来有效训练深度模型的问题。这个问题出现在各个领域和神经网络架构中。让我们关注使用具有小型图像数据集的卷积网络的图像处理任务的场景。但是,此处讨论的概念也可以应用于其他领域。

深度卷积网络以其在图像处理中的有效性而闻名。然而,在小型图像数据集上训练深度卷积网络通常会导致极度过度拟合,网络只会记住输入数据。在这种情况下,我们需要找到更好地利用我们的数据或探索替代数据源的方法。

克服数据稀缺问题的一种方法是通过数据扩充和迁移学习。迁移学习是现代深度学习中的一个基本概念,而且解释起来非常简单。这个想法是在一个相关但更普遍的问题上训练一个深度神经网络,然后重用这个预先训练好的网络,对我们的特定数据集进行额外的训练来解决我们的问题。

对于图像处理任务,我们可以在从网络或机器学习竞赛中收集的大型图像数据集上训练网络。预训练网络将有最后一层专门用于对来自这些数据集的图像进行分类。当处理具有不同输出层的不同图像处理任务时,我们可以丢弃预训练网络的输出层并添加符合我们问题要求的我们自己的输出层。这涉及添加新的权重,将新的输出层连接到预训练网络的最后一层,可以使用我们的小数据集进行训练。

迁移学习有效性背后的预期在于假设如果预训练问题与我们的特定问题足够相似,则预训练网络学习的功能将转移过来,从而有利于我们的问题。我们可以认为预训练网络已经学习了通用图像处理功能,我们可以在小数据集上训练我们的网络时利用这种学习到的转换。

在应用迁移学习时,我们有多种选择来利用预训练模型。我们需要丢弃输出层以匹配我们的问题,但如果我们认为已经执行了有用的预处理,我们也可以删除其他层。此外,我们可以添加多个层来针对我们的特定问题执行更复杂的处理。为了保留早期层所做的任何有用处理,我们可以在重新训练期间冻结它们的权重,特别是如果预训练模型是在大型数据集上训练的,而我们的问题有一个小数据集。

深度学习库通常提供模型动物园,它们是针对不同问题类型的预训练模型的集合。这些模型作为迁移学习的起点,使深度学习可用于解决范围广泛的问题。

然而,即使借助迁移学习,我们的数据集可能仍然太小而无法有效地训练网络,即使在最后几层也是如此。在这种情况下,我们需要从我们的数据集中提取尽可能多的信息,这让我们想到了数据扩充的想法。

数据增强涉及对数据集应用转换,这些转换看起来与神经网络不同,但对人类或使用学习模型的其他系统保持相同的含义。在图像处理的情况下,可以在不改变人类对所表示图像的感知的情况下应用各种变换。例如,旋转或放大图像不会改变其底层内容。这些转换在神经网络看到的输入数据中引入了显着差异,使得网络难以记住特定示例或依赖输入的精细细节。

然而,我们必须确保转换不会改变数据的含义,并且从网络的角度来看是不同的。例如,鉴于其固有的平移不变性,图像的平移可能对卷积网络的泛化能力几乎没有影响。

数据增强技术包括添加随机噪声、轻微模糊和其他不会扭曲人类对图像感知的修改。这些转换可以很容易地计算出来,并在训练期间随机应用于每批数据。通过在增强数据集上对网络进行多个时期的训练,我们可以防止它简单地记住确切的输入示例,并鼓励它更好地泛化。

重要的是要注意,数据增强技术不如拥有更多数据进行训练(包括用于预训练的相关数据)有效。然而,当与迁移学习相结合时,数据增强使我们能够使用深度神经网络解决更广泛的问题。

总之,当面临需要深度学习但缺乏足够数据的问题时,迁移学习和数据增强是有价值的策略。迁移学习涉及在相关问题上训练网络,并通过额外训练重用它来解决我们的特定问题。数据扩充需要对数据集应用转换以保留其意义,同时引入变体以实现更好的泛化。尽管这些技术不能替代更多数据,但它们为在数据可用性有限的场景中利用深度学习提供了实用的解决方案。

 

剩余网络和跳过连接(DL 15)



剩余网络和跳过连接(DL 15)

深度神经网络功能强大,但由于随着参数数量的增加需要更多数据,因此难以训练。与浅层网络相比,训练深度网络通常在减少损失方面进展缓慢。这是因为输入数据通过具有随机初始化权重的多个层,被扰乱为随机噪声,使得有意义的梯度难以传播。

为了解决这个问题,引入了跳过连接。跳过连接涉及将层分组为块,并为每个块内和周围的数据流提供两条路径。块的输出通过加法或串联的方式与其输入相结合,允许输入通过并使输入和更新更有意义。

包含跳跃连接的残差块有几个优点。首先,他们通过专注于扩充现有数据而不是弄清楚输入的所有内容来简化每个块的学习任务。其次,它们通过提供更短的路径来更新网络中的每一层来促进梯度的流动。与浅层网络相比,这些优势导致更快的训练进度和更好的性能。

使用残差块时,解决输入和输出张量之间的形状兼容性至关重要,尤其是在使用卷积层时。应特别考虑匹配形状并避免参数数量激增,尤其是在使用串联时。通常,对于大型剩余网络中的大多数跳过连接,加法优于串联。

可以采用逐一卷积来保留卷积块中的高度、宽度和通道尺寸。它们允许我们通过指定卷积层中过滤器的数量来调整输出层的深度。

虽然残差网络有各种变体和架构,但关键思想保持一致——通过利用跳跃连接和残差块来改进深度神经网络的训练。这些技术可以实现更好的信息流、更快的训练和更高的模型性能。建议探索不同的残差架构及其具体实现,以进一步理解和应用。

此外,在设置残差网络时考虑一些实际问题也很重要。其中一个问题是在使用跳过连接时管理输入和输出张量之间的形状兼容性。当涉及卷积层时,这会变得更加复杂,因为高度、宽度和通道尺寸需要正确对齐。

为了简化卷积块,可以使用一个接一个的步幅和适当的填充来保持输入图像的高度和宽度。这确保在添加块的输入和输出张量时至少空间维度匹配。为了解决通道维度,可以采用一对一的卷积。虽然这些卷积可能看起来微不足道,因为它们从单个像素接收输入,但它们有效地允许我们调整输出层的深度。通过指定一对一卷积中的过滤器数量,我们可以增加或减少输出张量的深度,使形状兼容。

在处理大型残差网络时,必须在跳过连接的数量和参数爆炸之间取得平衡。过度使用连接会导致激活张量的大小和参数数量的大幅增加。因此,建议限制基于级联的跳过连接的数量,并且对大多数连接更喜欢加法。

模块化是残差网络提供的另一个优势。残差块的统一结构和轻松添加更多块的能力有助于构建更深、更强大的网络。通过逐渐增加块的数量,可以创建一个适合计算资源和模型容量之间所需权衡的网络。

虽然残差网络已被证明是非常有效的,但值得注意的是,还有各种其他类型的残差架构具有不同的设计选择,例如在一个块中合并归一化层或多个路径。探索这些变化可以为改进深度神经网络的训练提供进一步的见解和可能性。

总体而言,残差网络通过利用跳跃连接和残差块为训练深度神经网络提供了一种有价值的方法。它们简化了学习任务,加速了梯度传播,并为构建强大的网络架构提供了模块化。理解残差网络背后的概念和考虑因素有助于深度学习研究和实际应用的进步。

 

词嵌入(DL 16)



词嵌入(DL 16)

我们在神经网络中处理的大部分数据都是图像数据。然而,我们也可以将神经网络用于其他类型的问题,例如文本数据。将文本数据表示为神经网络的输入并不像图像那样简单。

在图像数据中,我们可以使用标准的数字存储格式,将图像表示为红色、绿色和蓝色像素的阵列。这种表示很方便,因为它捕获了像素和相关颜色强度之间的空间关系。

对于文本数据,将字符转换为 ASCII 或其他数字值的标准数字表示与神经网络的学习方式没有直接关系。可以考虑使用各种方法将 ASCII 值转换为神经网络的有效输入,例如使用 ASCII 值的二进制表示或将字符范围规范化为介于 0 和 1 之间。但是,这些表示不捕获语义单词以数组表示图像的方式相同。

一种方法是使用整个词汇表的单热编码来创建巨型向量。每个词都有一个独特的向量表示,解决了相似词具有不同含义的问题。然而,这导致了维度的大量扩展,失去了词相似度和维度之间的平衡。

为了解决这个问题,我们的目标是实现多个目标的文本数据表示。首先,我们想要一个不过分高维的词表示。其次,我们希望表示携带语义信息,其中相似的词具有相似的向量表示。这一直是自然语言处理中的一个具有挑战性的问题。

近年来,神经网络已成功用于为文本数据生成适当的输入表示。一种方法涉及从文本数据中提取 n-grams,它是 n 个单词的序列。这些 n-gram 为句子或文档中的特定点提供上下文信息。

这个想法是使用 one-hot 字典表示作为输入来训练网络,并预测周围 n-gram 的 one-hot 编码。例如,我们可以使用 5-gram 输入并预测 n-gram 中的其他四个词。通过使用 n-grams 在附近的词上训练网络,我们期望语义相似的词将具有相似的表示并在训练期间接收相似的梯度反馈。

通过丢弃网络的输出层,我们可以使用最后一个隐藏层中的激活向量作为输入词的数字编码。这种表示被称为词嵌入,它在实际文本中捕获词的上下文。存在用于生成词嵌入的各种方法,例如 Word2Vec。

我们可以利用其他人使用更多数据和计算资源生成的预训练嵌入,而不是训练我们自己的词嵌入。我们可以很容易地生成一个查找表来将任意文本文档翻译成词嵌入。这种方法允许我们使用词嵌入作为神经网络的输入,以对文本数据进行机器学习。

使用词嵌入作为神经网络的输入来对文本数据进行机器学习有几个优点。这些预训练的嵌入是由具有大量数据和计算资源的模型生成的,从而产生了丰富而有意义的单词表示。

通过将文档传递给现有的词嵌入,我们可以获得文本的矢量化表示。这种向量表示捕获了单词的上下文信息,可以用作我们神经网络的输入。

词嵌入的使用使迁移学习成为可能,从一项任务中获得的知识(例如,训练词嵌入模型)可以应用于另一项相关任务(例如,我们针对文本数据的特定机器学习问题)。我们可以利用现有的嵌入,从它们的泛化能力中获益,而不是从头开始训练我们自己的嵌入。

一旦我们有了文本的词嵌入表示,我们就可以继续训练我们的神经网络。神经网络可以将词嵌入向量作为输入,并学习根据嵌入中编码的语义信息进行预测。

神经网络的具体架构将取决于手头的任务。它可以是考虑文本顺序性质的递归神经网络 (RNN),捕获局部模式的卷积神经网络 (CNN),或两者的组合。该网络可以设计用于执行情感分析、文本分类、语言生成或机器翻译等任务。

在训练过程中,神经网络学习识别模式并根据输入的词嵌入进行预测。通过网络传播的梯度更新权重,优化网络做出准确预测的能力。

通过利用词嵌入,我们解决了以对神经网络有意义的方式表示文本数据的挑战。这些嵌入捕获单词之间的语义关系,使网络能够从上下文中学习并做出明智的预测。此外,利用预训练嵌入可以节省计算资源并提高机器学习管道的效率。

通过使用词嵌入作为我们神经网络的输入,我们可以利用迁移学习和语义表示的力量。这种方法显着增强了神经网络处理和理解文本数据的能力,为各种自然语言处理任务和应用打开了大门。

 

循环神经网络(DL 17)



循环神经网络(DL 17)

在我们之前的讲座中,我们讨论了词嵌入的使用,词嵌入是将词表示为具有适度维数的向量的可训练表示。这些嵌入可以作为构建对文本数据进行操作的机器学习系统的基础。对于产品评论的情感分类等简单任务,将文档分解为单词、嵌入每个单词并将嵌入序列作为输入传递给神经网络可能就足够了。然而,对于更复杂的任务,如对话回复或机器翻译,需要更复杂的方法。

为了说明这一点,我们使用了预测句子中下一个单词的示例。这项任务比情感分类更具挑战性,但比机器翻译更容易。在设置神经网络以对文本数据进行操作时,我们面临两种广泛的方法。一个极端是提供整个文档作为网络的输入,而另一个极端是提供单个单词作为输入。然而,这两种方法都有缺点:对整个文档进行操作会限制训练示例并处理不同的文档大小,而一次对一个单词进行操作会忽略理解单词含义和表示不直接映射到单词的概念所必需的周围上下文.

为了在这些极端之间找到折衷方案,我们引入了一种方法,该方法一次对一个词进行操作,但结合了网络对先前输入的记忆以保留重要的上下文。基本思想是将网络的输出反馈回其输入,使其能够使用之前的激活作为迄今为止所见单词的摘要。这种方法产生了递归神经网络 (RNN),可以通过随时间展开它们来可视化,表示输入单词和网络输出反馈时不同时间点的网络。

对于下一个单词预测任务,RNN 隐藏层的输出作为句子中前一个单词的摘要。 RNN 学习根据上下文预测下一个单词。 RNN 的输入是嵌入向量,而输出是单热字典编码,以允许表达不同可能输出的不确定性。

训练 RNN 涉及计算梯度以更新网络的权重。挑战来自于这样一个事实,即权重不仅通过将它们应用于当前输入而且通过它们对先前时间步长的输入的影响来影响损失。要计算权重对特定时间步长损失的影响,我们需要考虑它们对当前输入的影响、它们对早期时间步长的影响以及它们对当前时间步长误差的贡献。

递归神经网络通常使用 sigmoid 或 tanh 激活函数,因为它们容易出现梯度消失问题。当梯度不能在网络中向后传播很远时就会出现这个问题,从而限制了捕获长期依赖性的能力。因此,普通 RNN 在需要大量上下文和长期记忆的任务上效果不佳,这就是我们关注句子而不是文档的原因。

在下一课中,我们将探索一种专门用于解决长期记忆问题并在文本和语言处理任务中取得更好性能的循环神经网络变体。

 

LSTM(深度学习 18)



LSTM(深度学习 18)

本讲座的目的是演示循环神经网络 (RNN) 在语言建模中的实际应用。之前,我们讨论了使用 RNN 来预测句子中的下一个单词,这是 RNN 的常见预训练任务。对于更复杂的任务,如问答或机器翻译,我们可以采用迁移学习方法。首先,我们在下一个单词预测任务上预训练 RNN,然后针对我们感兴趣的特定任务对其进行微调。

为了从 RNN 获得更有意义的输出,我们关注在前向或后向通过网络的隐藏激活或状态。这些隐藏状态代表整个文本输入。例如,在翻译一个句子时,每个单词被顺序输入 RNN,最后一个时间步产生的隐藏状态成为整个文本的表示。然后我们可以将这个隐藏状态传递给额外的神经网络层来解决所需的任务,例如分类或文本生成。

这个将文本输入 RNN 以将其编码为隐藏层状态,然后使用另一个 RNN 作为解码器的过程允许我们生成输出文本。通过在输入输出对上训练这对 RNN,我们可以翻译句子或生成响应。

然而,由于梯度消失,具有 10h 激活的常规 RNN 在处理较长序列时会遇到困难。为了解决这个问题,我们可以采用一种称为长短期记忆 (LSTM) 的架构。 LSTM 为激活流动提供了多条路径,允许梯度更有效地通过网络传播。

LSTM 层由输入和输出组成。我们可以使用这些来训练网络执行诸如预测下一个单词之类的任务。输入与先前的隐藏状态连接,而附加隐藏状态 (c) 在每个时间步从网络传递到自身。这种 c 状态使梯度传播不受 10h 激活强加的限制。 S 型激活函数用于控制保留或遗忘先前状态的哪些信息,这些门是在训练期间学习的。

LSTM 包含 h 和 c 路径,允许在每个时间步内进行更复杂的计算,并通过 LSTM 网络的多个应用程序促进快速梯度传播。虽然我们不完全了解每个组件学习的特定功能,但与其他类型的 RNN 相比,LSTM 架构在实践中已被证明是有效的。

LSTM 架构的实际有效性在于它们能够解决梯度消失问题并捕获顺序数据中的长期依赖性。通过结合门控机制和信息流的多条路径,LSTM 在各种自然语言处理任务中显示出比传统 RNN 有显着改进。

LSTM 的门控特性使它们能够选择性地记住和忘记来自先前时间步长的信息,使它们非常适合建模和生成序列。 LSTM 门中的 sigmoid 激活控制信息流,决定保留什么和丢弃什么。这些门从训练数据中学习并自适应地决定先前隐藏状态和当前输入的哪些部分与当前时间步长相关。

LSTM 记住长期依赖关系的能力在语言建模中尤为重要。例如,在语言翻译中,理解句子的上下文需要考虑整个输入序列。编码 LSTM 的最后一个时间步的隐藏状态捕获句子的整体含义,从而实现准确的翻译或其他下游任务。

此外,LSTM 有助于在前向和反向传播过程中进行有效的梯度传播。通过保留相关信息并减轻梯度消失的影响,LSTM 能够在长序列上有效训练深度循环网络。这是通过使用平行路径实现的,这些路径允许梯度不间断地流动,防止它们在穿过网络时消失或爆炸。

LSTM 在语言建模方面的成功使其成为许多最先进模型的基本构建块。研究人员和从业者已经扩展了 LSTM 架构,增加了注意力机制、多头注意力和基于转换器的模型等附加功能。这些进步进一步增强了 LSTM 的建模能力,使它们能够处理更复杂的任务,包括文档摘要、情感分析和对话生成。

总之,LSTM 通过解决传统 RNN 的局限性彻底改变了语言建模。它们捕获长期依赖性、处理梯度消失和有选择地保留相关信息的能力使它们成为自然语言处理中不可或缺的工具。通过利用 LSTM 架构,研究人员和开发人员在各种与语言相关的任务中取得了重大进展,从而改进了机器翻译、问答系统和文本生成模型。

 

变形金刚和自注意力(DL 19)



变形金刚和自注意力(DL 19)

基于神经网络的 Transformer 架构在语言建模和其他各种任务中取得了最先进的性能。让我们探索 Transformers 背后的核心思想,包括它们从自注意力块构建以及循环和残差网络特征的集成。

递归神经网络 (RNN) 通过逐渐构建表示文档信息内容的隐藏状态,在文本处理方面表现出色。他们接收词嵌入作为输入,并且可以接受无监督任务的训练,例如预测句子中的下一个词。然而,由于需要逐层重复处理,包括 LSTM 变体在内的 RNN 很难处理长输入。

另一方面,残差网络通过利用残差连接有效地处理具有多层的深度模型。这些连接通过允许每个块增强输入并使梯度更有效地传播来简化训练。

残差网络在图像处理方面具有额外的优势,例如利用残差块内的卷积,这与图像相关的功能非常吻合。为了结合用于文本处理的循环网络和用于学习深度模型的残差网络的优势,引入了 Transformer。

与 RNN 类似,Transformer 对词嵌入进行操作。但是,它不是一次接收一个单词,而是处理连接到矩阵中的整个文档的所有嵌入。 Transformer 可以在预测缺失单词的无监督任务上进行训练,从而生成可用于各种自然语言处理任务的文档编码。

从残差网络中,Transformers 继承了允许每个块增强其前身的跳跃连接,即使在大型网络中也能简化训练。为了促进文本处理,块内的体系结构包含一个称为自注意力的关键思想。

自注意力解决了需要注意句子中距离较远的词以理解特定词的含义的需要。 Transformer 的体系结构旨在促进学习此类功能,而不是明确设计注意力功能。

在自注意力编码器块中,每个词的嵌入都经过三个密集层:查询 (q)、键 (k) 和值 (v)。这些层共享所有单词的权重,但应用于输入句子的不同元素。通过计算查询和关键向量之间的点积,该模型可以评估相似性。

同一词的查询向量和关键向量之间的点积表示自相似性。此外,在特定词的查询向量和所有其他词的关键向量之间计算点积。 Softmax 用于将相似度分数转换为 0 和 1 之间的权重,强调最相似的向量。

通过将 softmax 权重与每个词的值向量相乘,将注意力应用于文档的不同部分。这个加权和产生一个从整个文档计算出来的输出向量。此过程对所有单词并行执行,从而生成一个矩阵,该矩阵根据注意力对文档进行编码。

原始词嵌入使用来自整个文档的信息进行扩充,并按注意力加权。然后应用匹配形状的规则致密层。可以在一个编码器块中使用多个注意力头来学习不同的注意力模式。所有 attention heads 的输出相加并与 skip connection 组合,产生 block 的输出。

自注意力机制允许网络学习在每个注意力头中要注意什么。多个注意力头使模型能够在各种情况下关注不同方面,将输入表示增强为文本文档的有用编码。

这种编码可以进一步处理以进行分类,或用作另一个神经网络的输入以完成机器翻译等任务。 Training Transformers 最初专注于一种语言的语言编码和另一种语言的解码。类似于 RNN 的无监督训练也可以通过为文档提供随机空白词并训练模型来预测缺失词来进行。

Transformers 彻底改变了各种自然语言处理任务,并已成为语言建模和许多其他应用程序的最先进架构。让我们更深入地研究 Transformers 的核心概念,并探索它们如何结合循环网络和残差网络的最佳方面。

递归神经网络 (RNN),例如 LSTM,对文本处理很有效,因为它们按顺序处理词嵌入并建立表示文档信息内容的隐藏状态。 RNN 可以接受无监督任务的训练,例如使用现成的数据预测句子中的下一个单词。然而,由于需要反复通过多个层传递数据,RNN 往往难以处理长输入。

另一方面,残差网络擅长通过利用残差连接来处理深度模型,从而简化训练并使梯度能够有效传播。在图像处理中,残差网络利用残差块内的卷积,为与图像分析相关的功能提供优势。目标是将循环网络在处理文本方面的优势与从残差网络学习深度模型的优势结合起来。

这将我们带到了 Transformer 架构。与循环网络一样,Transformers 对词嵌入进行操作。然而,与一次处理一个单词的循环网络不同,Transformers 接收整个文档的嵌入并连接到一个矩阵中,每一行代表一个不同单词的嵌入。 Transformer 可以接受无监督任务的训练,例如预测遗漏的单词,为各种自然语言处理任务生成文档编码。

从残差网络中,Transformer 继承了跳跃连接,确保每个块只需要增加其前身,并允许梯度即使在大型网络中也能有效传播。为了促进文本处理,Transformers 在块内采用了一种独特的架构,称为自注意力。

自注意力是指为了理解句子中的一个词,我们需要注意句子中可能距离较远的其他词。该架构没有明确设计有特定的注意功能;相反,它旨在促进学习此类功能。

在自注意力编码器块中,每个词的嵌入都经过三个密集层,称为查询、键和值。这些层在所有单词之间共享,但应用于输入句子的不同元素。通过获取查询和关键向量之间的点积,我们可以评估相似性。较大的点积表示指向相似方向的向量,而较小的点积表示指向不同方向的向量。

对于给定的词,我们计算其查询向量与所有其他词的关键向量之间的点积。这会产生一个相似度分数向量,表示查询向量与每个关键向量的相似程度。将 softmax 应用于这些分数会将它们转换为 0 到 1 之间的值,强调最相似的向量。生成的 softmax 权重用作文档中所有单词的值向量的乘数。

每个值向量都按元素乘以其相应的 softmax 权重,创建一个加权和来表示该词对其他词的关注度。这个过程对每个词并行应用,生成从整个文档计算的输出向量,根据对每个词的注意力加权。然后将此信息添加到原始词嵌入中。

为了产生一个注意力头的输出,应用了一个匹配形状的规则密集层。多个注意力头可以在一个编码器块中使用,允许网络在不同的上下文中学习不同的注意力模式。所有attention heads的输出被组合并添加到skip connection中,产生block的输出。

与使用多个通道的卷积层类似,Transformers 通常在一个编码器块中使用多个注意力头来捕捉不同的注意力模式。这使网络能够学习和组合各种注意力计算,将输入表示增加到文本文档的有用编码中。

一旦生成编码,就可以将其用于各种任务。例如,额外的层可以用于分类,或者编码可以作为另一个神经网络的输入来完成机器翻译等任务。最初,Transformer 训练的重点是用一种语言编码,用另一种语言解码。也可以通过随机删除文档中的单词并训练模型来预测丢失的单词来进行无监督训练。

为了考虑词序和接近度,Transformers 结合了位置编码。此附加信息被添加到词嵌入中,使模型能够理解词在文档中的相对位置。

Transformers 是一种用于自然语言处理任务的强大架构。通过结合循环网络和残差网络的优势,他们在各种应用中取得了最先进的成果。自注意力机制让模型学习关注哪些词,多个注意力头捕获不同的注意力模式。变形金刚极大地推进了语言建模领域,并继续成为研究和开发的活跃领域。

 

其他指标和 ROC 曲线 (DL 20)



其他指标和 ROC 曲线 (DL 20)

这是一个关于使用神经网络衡量二元分类任务成功的替代指标的简短讲座。

在二元分类任务中,我们的神经网络通常有两个输出节点,我们的目标向量是 [1, 0] 或 [0, 1]。将网络的输出解码为类别标签时,有四种可能的结果:

  1. True Positive:目标是 [1, 0],解码输出一致。
  2. 假阴性:目标是 [1, 0],但解码输出错误地将其标记为 [0, 1]。
  3. True Negative:目标为[0, 1],解码输出一致。
  4. 误报:目标是 [0, 1],但解码输出错误地将其标记为 [1, 0]。

这些结果可用于计算不同的指标,以评估模型在二元分类中的性能。以下是一些需要考虑的替代指标:

  1. 精度:在所有标记为正的数据点中,模型正确标记为正的数据点的分数。
  2. 灵敏度或召回率:应该被标记为模型正确识别的第一个类别的数据点的分数。
  3. 特异性:应该被标记为模型正确识别的第二类或负类的数据点的分数。

准确性衡量正确标签的总体分数,可能并不总是提供最多信息的指标。不同的情况,例如误报或漏报的重要性,可能需要关注特定指标。此外,数据集中正负标签的分布会严重影响准确性。

要了解指标之间的权衡,通常使用接受者操作特征 (ROC) 曲线等技术将它们可视化。 ROC 曲线绘制了针对不同分类阈值的假阳性率与真阳性率的关系。

通过考虑假阳性和假阴性之间的权衡并分析ROC曲线,我们可以根据我们问题的具体要求选择最合适的模型和评估指标。

重要的是要考虑误报和漏报的相对重要性,以及不同模型在这方面的表现,而不是仅仅依赖于准确性。因此,在处理您的项目时,建议评估指标之间的权衡并考虑对您的特定问题的影响,而不是仅仅依赖整体准确性。

在评估机器学习模型时,了解不同指标之间的权衡至关重要。在某些情况下,准确性可能无法提供模型性能的全面描述,尤其是当误报和漏报具有不同程度的重要性时。让我们探讨一些替代指标更合适的情况:

  1. 假阳性和假阴性的重要性:在医学诊断等领域,假阳性和假阴性的后果可能会有很大差异。例如,在癌症检测中,假阴性(遗漏阳性病例)可能会产生严重影响,而假阳性(错误诊断阴性病例)可能导致不必要的治疗。在这种情况下,精确度和召回率/灵敏度等指标可以为模型的性能提供有价值的见解。

  2. 不平衡数据:当正负标签在数据集中分布不均时,准确性可能会产生误导。假设 95% 的数据点属于正类。在那种情况下,一个简单地预测一切都是积极的模型将达到 95% 的高精度,而无需真正学习潜在的模式。精确率和召回率等指标可以帮助解决偏差并关注模型在每个类别上的表现。

  3. Precision-Recall Trade-off:机器学习模型通常在精度和召回率之间进行权衡。 Precision衡量的是正确识别正例的能力,而recall衡量的是捕捉所有正例的能力。通过调整模型的阈值或决策边界,我们可以优先考虑精度或召回率。然而,改变阈值以改进一个指标通常是以牺牲另一个指标为代价的。在为给定问题选择合适的指标时,理解这种权衡很重要。

  4. 接受者操作特征 (ROC) 曲线:ROC 曲线通过绘制不同分类阈值下的假阳性率与真阳性率的关系图,提供二元分类模型性能的图形表示。实现高真阳性率和低误报率的模型将有一条更靠近左上角的曲线,表明性能更好。 ROC 曲线下面积 (AUC-ROC) 通常用作汇总指标,值越接近 1 表示性能越好。

不同的机器学习模型可能在灵敏度和特异性或精度和召回率之间有不同的权衡。重要的是要考虑问题的具体要求和不同指标的相对重要性。通过评估这些权衡并了解模型如何跨各种指标执行,我们可以做出更明智的决策并为我们的应用程序选择最合适的模型。

在您的项目中,考虑假阳性和假阴性之间的权衡,并选择符合问题目标的指标。不要仅仅依赖准确性,而是要考虑您的任务的具体需求和影响,以准确地评估和比较不同模型的性能。