11 2023 档案

摘要:原始的BERT有两个版本,其中基本模型有1.1亿个参数,大模型有3.4亿个参数。 在预训练BERT之后,我们可以用它来表示单个文本、文本对或其中的任何词元。 在实验中,同一个词元在不同的上下文中具有不同的BERT表示。这支持BERT表示是上下文敏感的。 阅读全文
posted @ 2023-11-18 20:45 Yohoc 阅读(20) 评论(0) 推荐(0) 编辑
摘要:为了预训练 14.8节中实现的BERT模型,我们需要以理想的格式生成数据集,以便于两个预训练任务:遮蔽语言模型和下一句预测。一方面,最初的BERT模型是在两个庞大的图书语料库和英语维基百科(参见 14.8.5节)的合集上预训练的,但它很难吸引这本书的大多数读者。另一方面,现成的预训练BERT模型可能 阅读全文
posted @ 2023-11-18 20:44 Yohoc 阅读(71) 评论(0) 推荐(0) 编辑
摘要:我们已经介绍了几种用于自然语言理解的词嵌入模型。在预训练之后,输出可以被认为是一个矩阵,其中每一行都是一个表示预定义词表中词的向量。事实上,这些词嵌入模型都是与上下文无关的。让我们先来说明这个性质。 从上下文无关到上下文敏感 ELMo(Embeddings from Language Models) 阅读全文
posted @ 2023-11-18 20:07 Yohoc 阅读(178) 评论(0) 推荐(0) 编辑
摘要:在 14.4节中,我们在一个小的数据集上训练了一个word2vec模型,并使用它为一个输入词寻找语义相似的词。实际上,在大型语料库上预先训练的词向量可以应用于下游的自然语言处理任务,这将在后面的 15节中讨论。为了直观地演示大型语料库中预训练词向量的语义,让我们将预训练词向量应用到词的相似性和类比任 阅读全文
posted @ 2023-11-18 16:25 Yohoc 阅读(58) 评论(0) 推荐(0) 编辑
摘要:在英语中,“helps”“helped”和“helping”等单词都是同一个词“help”的变形形式。“dog”和“dogs”之间的关系与“cat”和“cats”之间的关系相同,“boy”和“boyfriend”之间的关系与“girl”和“girlfriend”之间的关系相同。在法语和西班牙语等其他 阅读全文
posted @ 2023-11-18 15:49 Yohoc 阅读(58) 评论(0) 推荐(0) 编辑
摘要:带全局语料统计的跳元模型 传统的词嵌入模型(如Word2Vec、GloVe等)通常只考虑了局部上下文窗口内的单词共现信息,而没有充分利用全局语料库的统计特征。带全局预料统计的跳元模型尝试通过结合全局语料库的统计信息来提高词嵌入的表示能力,以更好地捕捉单词之间的语义和语法关系。 GloVe模型 从条件 阅读全文
posted @ 2023-11-17 14:14 Yohoc 阅读(54) 评论(0) 推荐(0) 编辑
摘要:读取数据集 下采样 提取中心词和上下文词 下面的get_centers_and_contexts函数从corpus中提取所有中心词及其上下文词。它随机采样1到max_window_size之间的整数作为上下文窗口。对于任一中心词,与其距离不超过采样上下文窗口大小的词为其上下文词。 #@save de 阅读全文
posted @ 2023-11-17 11:58 Yohoc 阅读(27) 评论(0) 推荐(0) 编辑
摘要:近似训练是一种用于加速训练过程的技术。 负采样 负采样是在训练过程中对目标函数进行简化的一种方法。在传统的训练中,需要计算整个词汇表的概率分布,这在大规模任务中会非常耗时。负采样的思想是通过随机采样一小部分负例来近似计算全局的目标函数。具体来说,对于每个正例(例如一个正确的词对应的上下文),从词汇表 阅读全文
posted @ 2023-11-17 11:28 Yohoc 阅读(35) 评论(0) 推荐(0) 编辑
摘要:自然语言是用来表达人脑思维的复杂系统。 在这个系统中,词是意义的基本单元。顾名思义, 词向量是用于表示单词意义的向量, 并且还可以被认为是单词的特征向量或表示。 将单词映射到实向量的技术称为词嵌入。 近年来,词嵌入逐渐成为自然语言处理的基础知识。 为何独热向量是一个糟糕的选择? 自监督的word2v 阅读全文
posted @ 2023-11-17 10:51 Yohoc 阅读(143) 评论(0) 推荐(0) 编辑
摘要:10.6.2节中比较了卷积神经网络(CNN)、循环神经网络(RNN)和自注意力(self-attention)。值得注意的是,自注意力同时具有并行计算和最短的最大路径长度这两个优势。因此,使用自注意力来设计深度架构是很有吸引力的。对比之前仍然依赖循环神经网络实现输入表示的自注意力模型 (Cheng  阅读全文
posted @ 2023-11-16 18:02 Yohoc 阅读(136) 评论(0) 推荐(0) 编辑
摘要:在深度学习中,经常使用卷积神经网络(CNN)或循环神经网络(RNN)对序列进行编码。 想象一下,有了注意力机制之后,我们将词元序列输入注意力池化中, 以便同一组词元同时充当查询、键和值。 具体来说,每个查询都会关注所有的键-值对并生成一个注意力输出。 由于查询、键和值来自同一组输入,因此被称为 自注 阅读全文
posted @ 2023-11-16 17:06 Yohoc 阅读(175) 评论(0) 推荐(0) 编辑
摘要:在实践中,当给定相同的查询、键和值的集合时, 我们希望模型可以基于相同的注意力机制学习到不同的行为, 然后将不同的行为作为知识组合起来, 捕获序列内各种范围的依赖关系 (例如,短距离依赖和长距离依赖关系)。 因此,允许注意力机制组合使用查询、键和值的不同 子空间表示(representation s 阅读全文
posted @ 2023-11-16 16:11 Yohoc 阅读(44) 评论(0) 推荐(0) 编辑
摘要:9.7节中探讨了机器翻译问题: 通过设计一个基于两个循环神经网络的编码器-解码器架构, 用于序列到序列学习。 具体来说,循环神经网络编码器将长度可变的序列转换为固定形状的上下文变量, 然后循环神经网络解码器根据生成的词元和上下文变量 按词元生成输出(目标)序列词元。 然而,即使并非所有输入(源)词元 阅读全文
posted @ 2023-11-16 13:26 Yohoc 阅读(105) 评论(0) 推荐(0) 编辑
摘要:10.2节使用了高斯核来对查询和键之间的关系建模。 (10.2.6)中的 高斯核指数部分可以视为注意力评分函数(attention scoring function), 简称评分函数(scoring function), 然后把这个函数的输出结果输入到softmax函数中进行运算。 通过上述步骤,将 阅读全文
posted @ 2023-11-16 12:03 Yohoc 阅读(201) 评论(0) 推荐(0) 编辑
摘要:上节介绍了框架下的注意力机制的主要成分 图10.1.3: 查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚; 注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出。 本节将介绍注意力汇聚的更多细节, 以便从宏观上了解注意力机制在实践中的运作方式。 具体来说,1964年提出的Nadara 阅读全文
posted @ 2023-11-16 11:39 Yohoc 阅读(225) 评论(0) 推荐(0) 编辑
摘要:查询、键和值 自主性的与非自主性的注意力提示解释了人类的注意力的方式, 下面来看看如何通过这两种注意力提示, 用神经网络来设计注意力机制的框架, 首先,考虑一个相对简单的状况, 即只使用非自主性提示。 要想将选择偏向于感官输入, 则可以简单地使用参数化的全连接层, 甚至是非参数化的最大汇聚层或平均汇 阅读全文
posted @ 2023-11-16 10:17 Yohoc 阅读(51) 评论(0) 推荐(0) 编辑
摘要:束搜索(Beam Search)、贪心搜索(Greedy Search)和穷举搜索(Exhaustive Search)是在搜索领域常用的三种搜索算法,它们在不同的场景下有着不同的特点和应用。 束搜索(Beam Search): 束搜索是一种用于寻找最有可能的输出序列的搜索算法,常用于序列生成任务, 阅读全文
posted @ 2023-11-15 17:29 Yohoc 阅读(634) 评论(0) 推荐(0) 编辑
摘要:我们将使用两个循环神经网络的编码器和解码器, 并将其应用于序列到序列(sequence to sequence,seq2seq)类的学习任务。 编码器 由于这里使用的是门控循环单元, 所以在最后一个时间步的多层隐状态的形状是 (隐藏层的数量,批量大小,隐藏单元的数量)。 如果使用长短期记忆网络,st 阅读全文
posted @ 2023-11-15 16:58 Yohoc 阅读(203) 评论(0) 推荐(0) 编辑
摘要:正如我们在 9.5节中所讨论的, 机器翻译是序列转换模型的一个核心问题, 其输入和输出都是长度可变的序列。 为了处理这种类型的输入和输出, 我们可以设计一个包含两个主要组件的架构: 第一个组件是一个编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。 阅读全文
posted @ 2023-11-15 12:54 Yohoc 阅读(292) 评论(0) 推荐(0) 编辑
摘要:语言模型是自然语言处理的关键, 而机器翻译是语言模型最成功的基准测试。 因为机器翻译正是将输入序列转换成输出序列的 序列转换模型(sequence transduction)的核心问题。 序列转换模型在各类现代人工智能应用中发挥着至关重要的作用。机器翻译(machine translation)指的 阅读全文
posted @ 2023-11-15 11:41 Yohoc 阅读(195) 评论(0) 推荐(0) 编辑
摘要:到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。 其中,隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性,这就不是一个大问题。 然而,对一个单层来说,这可能具有相当的挑战性。 之前在线性模型中,我们通过添加更多的层来解决这个问题。 而在循环神经网络中 阅读全文
posted @ 2023-11-14 15:43 Yohoc 阅读(23) 评论(0) 推荐(0) 编辑
摘要:长期以来,隐变量模型存在着长期信息保存和短期输入缺失的问题。 解决这一问题的最早方法之一是长短期存储器(long short-term memory,LSTM)(Hochreiter and Schmidhuber, 1997)。 它有许多与门控循环单元( 9.1节)一样的属性。 有趣的是,长短期记 阅读全文
posted @ 2023-11-14 15:10 Yohoc 阅读(150) 评论(0) 推荐(0) 编辑
摘要:在 8.7节中, 我们讨论了如何在循环神经网络中计算梯度, 以及矩阵连续乘积可以导致梯度消失或梯度爆炸的问题。 下面我们简单思考一下这种梯度异常在实践中的意义: 我们可能会遇到这样的情况:早期观测值对预测所有未来观测值具有非常重要的意义。 考虑一个极端情况,其中第一个观测值包含一个校验和, 目标是在 阅读全文
posted @ 2023-11-14 11:21 Yohoc 阅读(136) 评论(0) 推荐(0) 编辑
摘要:我们在 4.7节中描述了多层感知机中的 前向与反向传播及相关的计算图。 循环神经网络中的前向传播相对简单。 通过时间反向传播(backpropagation through time,BPTT) (Werbos, 1990)实际上是循环神经网络中反向传播技术的一个特定应用。 它要求我们将循环神经网络 阅读全文
posted @ 2023-11-12 16:05 Yohoc 阅读(68) 评论(0) 推荐(0) 编辑
摘要:独热编码 回想一下,在train_iter中,每个词元都表示为一个数字索引, 将这些索引直接输入神经网络可能会使学习变得困难。 我们通常将每个词元表示为更具表现力的特征向量。 最简单的表示称为独热编码(one-hot encoding), 它在 3.4.1节中介绍过。 简言之,将每个索引映射为相互不 阅读全文
posted @ 2023-11-12 14:03 Yohoc 阅读(81) 评论(0) 推荐(0) 编辑
摘要:隐状态 无隐状态的神经网络 有隐状态的循环神经网络 循环神经网络(recurrent neural networks,RNNs) 是具有隐状态的神经网络。 (循环层、输出层) Xt为三维张量(时间步数num_steps,批量大小batch_size,词表大小vocab_size) Qt为三维张量(时 阅读全文
posted @ 2023-11-12 11:24 Yohoc 阅读(48) 评论(0) 推荐(0) 编辑
摘要:语言模型 马尔可夫模型和n元语法 自然语言统计 读取长序列数据 由于序列数据本质上是连续的,因此我们在处理数据时需要解决这个问题。 在 8.1节中我们以一种相当特别的方式做到了这一点: 当序列变得太长而不能被模型一次性全部处理时, 我们可能希望拆分这样的序列方便模型读取。 在介绍该模型之前,我们看一 阅读全文
posted @ 2023-11-10 22:05 Yohoc 阅读(47) 评论(0) 推荐(0) 编辑
摘要:对于序列数据处理问题,我们在 8.1节中 评估了所需的统计工具和预测时面临的挑战。 这样的数据存在许多种形式,文本是最常见例子之一。 例如,一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。 本节中,我们将解析文本的常见预处理步骤。 这些步骤通常包括: 将文本作为字符串加载到内存中。 将字符 阅读全文
posted @ 2023-11-10 20:45 Yohoc 阅读(67) 评论(0) 推荐(0) 编辑
摘要:在本质上,音乐、语音、文本和视频都是连续的。 如果它们的序列被我们重排,那么就会失去原有的意义。 比如,一个文本标题“狗咬人”远没有“人咬狗”那么令人惊讶,尽管组成两句话的字完全相同。 处理序列数据需要统计工具和新的深度神经网络架构。 为了简单起见,我们以 图8.1.1所示的股票价格(富时100指数 阅读全文
posted @ 2023-11-10 19:06 Yohoc 阅读(99) 评论(0) 推荐(0) 编辑
摘要:从ResNet到DesNet 稠密块体 DenseNet使用了ResNet改良版的“批量规范化、激活和卷积”架构(参见 7.6节中的练习)。 我们首先实现一下这个架构。 import torch from torch import nn from d2l import torch as d2l de 阅读全文
posted @ 2023-11-09 14:15 Yohoc 阅读(76) 评论(0) 推荐(0) 编辑
摘要:函数类 残差块 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l class Residual(nn.Module): #@save def __in 阅读全文
posted @ 2023-11-09 13:40 Yohoc 阅读(60) 评论(0) 推荐(0) 编辑
摘要:训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化(batch normalization) (Ioffe and Szegedy, 2015),这是一种流行且有效的技术,可持续加速深层网络的收敛速度。 再结合在 7.6节中将介绍的残差块,批量规范化使得研究 阅读全文
posted @ 2023-11-09 12:07 Yohoc 阅读(101) 评论(0) 推荐(0) 编辑
摘要:Inception块 在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。具体结构如下图: 这四条路径都使用合适的填充来使输入与输出的高和宽一致,最后我们将每条线路的输出在通道维度上连结,并构成Inception块的输出。在Inception块中,通常调 阅读全文
posted @ 2023-11-09 10:51 Yohoc 阅读(36) 评论(0) 推荐(0) 编辑
摘要:NiN块 回想一下,卷积层的输入和输出由四维张量组成,张量的每个轴分别对应样本、通道、高度和宽度。 另外,全连接层的输入和输出通常是分别对应于样本和特征的二维张量。 NiN的想法是在每个像素位置(针对每个高度和宽度)应用一个全连接层。 如果我们将权重连接到每个空间位置,我们可以将其视为1*1卷积层, 阅读全文
posted @ 2023-11-08 16:38 Yohoc 阅读(34) 评论(0) 推荐(0) 编辑
摘要:VGG块 虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板(例如VGG块)来指导后续的研究人员设计新的网络。 在下面的几个章节中,我们将介绍一些常用于设计深层神经网络的启发式概念。 经典卷积神经网络的基本组成部分是下面的这个序列: 带填充以保持分辨率的卷积层; 非线性激活函数, 阅读全文
posted @ 2023-11-08 16:02 Yohoc 阅读(44) 评论(0) 推荐(0) 编辑
摘要:AlexNet相对于LeNet的主要优势包括: 1. 更深的网络结构 AlexNet有8层结构,而LeNet只有5层。网络更加深入有利于学习更抽象的高级特征。 2. 使用ReLU激活函数 AlexNet使用ReLU激活函数,避免梯度消失问题,使得深层网络的训练更加容易。 3. 引入Dropout操作 阅读全文
posted @ 2023-11-08 15:40 Yohoc 阅读(51) 评论(0) 推荐(0) 编辑
摘要:最大汇聚层和平均汇聚层 填充和步幅 多个通道 汇聚层的目的 1. 降低卷积层对位置的敏感性 卷积层的输出特征图对目标的位置是很敏感的。池化可以减少这种位置敏感性。比如我们做2x2最大池化,输出特征图的值就仅依赖于输入特征图2x2的区域,不再过于依赖位置信息。 2. 降低对空间采样表示的敏感性 卷积层 阅读全文
posted @ 2023-11-07 16:52 Yohoc 阅读(69) 评论(0) 推荐(0) 编辑
摘要:多输入通道 多输出通道 1*1卷积核 当以每像素为基础应用时,1*1卷积层相当于全连接层。 1*1卷积层通常用于调整网络层的通道数量和控制模型复杂性。 阅读全文
posted @ 2023-11-07 16:12 Yohoc 阅读(36) 评论(0) 推荐(0) 编辑
摘要:填充 步幅 总结: 填充可以增加输出的高度和宽度。这常用来使输出与输入具有相同的高和宽。同时填充可以解决原始图像通过卷积丢失边界有用信息的问题。 步幅可以减小输出的高和宽,例如输出的高和宽仅为输入的高和宽的(是一个大于的整数)。 填充和步幅可用于有效地调整数据的维度。 阅读全文
posted @ 2023-11-04 16:30 Yohoc 阅读(20) 评论(0) 推荐(0) 编辑
摘要:特征映射和感受野 因此,当需要检测输入特征中更广区域时,我们可以构建一个更深的卷积网络 。 利用卷积网络进行目标边缘检测 阅读全文
posted @ 2023-11-04 16:02 Yohoc 阅读(7) 评论(0) 推荐(0) 编辑
摘要:对于表格数据(其中行对应样本,列对应特征),我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。原因如下: 当特征数非常高维时,全连接网络的参数会变得极大,导致计算成本大 阅读全文
posted @ 2023-11-04 15:20 Yohoc 阅读(93) 评论(0) 推荐(0) 编辑
摘要:张量与GPU 不同GPU之间操作 神经网络与GPU 总结 我们可以指定用于存储和计算的设备,例如CPU或GPU。默认情况下,数据在主内存中创建,然后使用CPU进行计算。 深度学习框架要求计算的所有输入数据都在同一设备上,无论是CPU还是GPU。 不经意地移动数据可能会显著降低性能。一个典型的错误如下 阅读全文
posted @ 2023-11-03 12:00 Yohoc 阅读(41) 评论(0) 推荐(0) 编辑
摘要:以PyTorch为例 class MLP(nn.Module): def __init__(self): super().__init__() self.hidden = nn.Linear(20, 256) self.output = nn.Linear(256, 10) def forward( 阅读全文
posted @ 2023-11-03 11:33 Yohoc 阅读(73) 评论(0) 推荐(0) 编辑
摘要:深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。 例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一个现在在深度学习框架中还不存在的层。 在这些情况下,必须构建自定义层。本节将展示 阅读全文
posted @ 2023-11-03 11:13 Yohoc 阅读(24) 评论(0) 推荐(0) 编辑
摘要:到目前为止,我们忽略了建立网络时需要做的以下这些事情: 我们定义了网络架构,但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时,甚至没有足够的信息来确定模型应该包含多少参数。 有些读者可能会对我们的代码能运行感到惊讶。 毕竟,深度学习框架无法判断网络的输入维度是什么。 阅读全文
posted @ 2023-11-01 13:55 Yohoc 阅读(20) 评论(0) 推荐(0) 编辑
摘要:参数访问 我们从已有模型中访问参数。 当通过Sequential类定义模型时, 我们可以通过索引来访问模型的任意层。 这就像模型是一个列表一样,每层的参数都在其属性中。 如下所示,我们可以检查第二个全连接层的参数。 print(net[2].state_dict()) OrderedDict([(' 阅读全文
posted @ 2023-11-01 13:43 Yohoc 阅读(28) 评论(0) 推荐(0) 编辑
摘要:一个块可以由许多层组成;一个块可以由许多块组成。 块可以包含代码。 块负责大量的内部处理,包括参数初始化和反向传播。 层和块的顺序连接由Sequential块处理。 下面给出一个例子(以pyTorch为例) class NestMLP(nn.Module): def __init__(self): 阅读全文
posted @ 2023-11-01 13:11 Yohoc 阅读(13) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示