gpt4 book ai didi

nlp - Pytorch:如何实现嵌套转换器:单词的字符级转换器和句子的单词级转换器?

转载 作者:行者123 更新时间:2023-12-03 23:51:44 27 4
gpt4 key购买 nike

我有一个模型,但我很难弄清楚如何在 Pytorch 中实际实现它,尤其是在训练模型时(例如如何定义小批量等)。首先让我快速介绍一下上下文:

我正在研究 VQA(视觉问答),其中的任务是回答有关图像的问题,例如:

enter image description here

因此,撇开许多细节不谈,我只想在这里关注模型的 NLP 方面/分支。为了处理自然语言问题,我想使用字符级嵌入(而不是传统的词级嵌入),因为它们更健壮,因为它们可以轻松适应单词的形态变化(例如前缀、后缀、复数、动词变位、连字符等)。但同时我也不想在单词层面失去推理的归纳偏见。因此,我想出了以下设计:

enter image description here

如上图所示,我想使用 transformers (甚至更好, universal transformers ),但有点扭曲。我想使用 2 个转换器:第一个转换器将单独处理每个单词字符(字符级转换器),为问题中的每个单词生成初始单词级嵌入。一旦我们拥有所有这些初始词级嵌入,第二个词级更改器(mutator)将细化这些嵌入,以用上下文丰富它们的表示,从而获得上下文感知的词级嵌入。

整个 VQA 任务的完整模型显然更复杂,但我只想在这里关注这个 NLP 部分。所以我的问题基本上是关于在实现这个时我应该注意哪些 Pytorch 功能。例如,由于我将使用字符级嵌入,因此我必须定义一个字符级嵌入矩阵,但随后我必须对该矩阵执行查找以生成字符级转换器的输入,对每个单词重复此操作在问题中,然后将所有这些向量输入到词级转换器中。此外,单个问题中的单词可以有不同的长度,单个 minibatch 中的问题也可以有不同的长度。所以在我的代码中,我必须以某种方式在单个小批量中同时考虑单词和问题级别的不同长度(在训练期间),我不知道如何在 Pytorch 中做到这一点,或者它是否甚至可能在全部。

关于如何在 Pytorch 中实现这一点的任何提示,可以引导我走向正确的方向,我们将不胜感激。

最佳答案

一种实现您在 pyTorch 中所说的方法需要调整 Transformer 编码器:

1) 定义一个自定义标记器,将单词拆分为字符嵌入(而不是单词或词段嵌入)

2)为每个词定义一个掩码(类似于原始论文在解码器中用来掩码 future 标记的),以强制模型被约束到词上下文(在第一阶段)

3)然后使用传统的Transformer with mask(有效限制词级上下文)。

4)然后丢弃掩码并再次应用Transformer(句子级上下文)。

.

需要注意的事项:

1) 请记住,Transformer 编码器的输出长度始终与输入的大小相同(解码器是能够产生更长或更短序列的解码器)。因此,在您的第一阶段,您将没有字级嵌入(如图所示),而是字符级嵌入。如果您想将它们合并到词级嵌入中,您将需要一个额外的中间解码器步骤或使用自定义策略(例如:学习的加权和或使用类似于 BERT 的标记的东西)合并嵌入。

2) 您可能会面临效率问题。记住 Transformer 是 O(n^2),所以序列越长,它的计算成本就越高。在最初的 Transformer 中,如果你有一个长度为 10 个单词的句子,那么 Thansformer 将不得不处理一个 10 个标记的序列。如果您使用词片嵌入,您的模型将在大约 15 个标记的序列中工作。但是,如果您使用字符级嵌入,我估计您将处理约 50 个标记的序列,这对于长句子可能不可行,因此您可能需要截断您的输入(并且您将丢失所有长注意模型的术语依赖能力)。

3) 你确定你会通过添加字符级的 Transformer 有代表性的贡献吗? Transformer 旨在根据上下文(环绕嵌入)丰富嵌入,这就是原始实现使用词级嵌入的原因。 BERT 使用词块嵌入,以利用相关词中的语言规律性,而 GPT-2 使用 Byte-Pais-Embeddings (BPE),我不推荐在您的情况下使用它,因为它更适合下一个 token 预测.在您的情况下,您认为在学习的字符嵌入中会捕获哪些信息,以便可以在单词的字符之间有效共享?你认为它会比对每个单词或单词片段使用学习嵌入更丰富吗?我的猜测是,这就是您想要找出的……对吗?

关于nlp - Pytorch:如何实现嵌套转换器:单词的字符级转换器和句子的单词级转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56602442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com