【发布时间】:2020-02-26 09:56:42
【问题描述】:
我们知道BERT有一个tokens的最大长度限制= 512,所以如果一篇文章的长度远大于512,比如文本中有10000个tokens BERT如何使用?
【问题讨论】:
标签: nlp text-classification bert-language-model
我们知道BERT有一个tokens的最大长度限制= 512,所以如果一篇文章的长度远大于512,比如文本中有10000个tokens BERT如何使用?
【问题讨论】:
标签: nlp text-classification bert-language-model
你基本上有三个选择:
我建议尝试选项 1,但前提是这还不足以考虑其他选项。
【讨论】:
本文比较了几种不同的策略:How to Fine-Tune BERT for Text Classification?。 在 IMDb 电影评论数据集上,他们实际上发现剪掉文本的中间(而不是截断开头或结尾)效果最好!它甚至优于更复杂的“分层”方法,包括将文章分成块然后重新组合结果。
作为另一个轶事,我将 BERT 应用于 Wikipedia Personal Attacks 数据集 here,发现简单截断效果很好,我没有动力尝试其他方法 :)
【讨论】:
除了分块数据并将其传递给 BERT 之外,还可以检查以下新方法。
长文档分析有新的研究。正如您向 Bert 询问的那样,最近 ALLEN NLP (https://arxiv.org/abs/2004.05150) 提供了一个类似的预训练变压器 Longformer。看看这篇论文的链接。
相关工作部分还提到了一些以前关于长序列的工作。谷歌他们。我建议至少通过 Transformer XL (https://arxiv.org/abs/1901.02860)。据我所知,它是长序列的初始模型之一,因此在进入“Longformers”之前将其用作基础会很好。
【讨论】:
Defending Against Neural Fake News (https://arxiv.org/abs/1905.12616) 论文中使用了一种方法
他们的生成模型产生 1024 个令牌的输出,他们希望将 BERT 用于人类与机器生成。他们扩展了 BERT 使用的序列长度,只需初始化 512 个嵌入并在他们在数据集上微调 BERT 的同时对其进行训练。
【讨论】:
主要有两种方法:
我在这篇文章中恢复了一些典型的BERT长文论文:https://lethienhoablog.wordpress.com/2020/11/19/paper-dissected-and-recap-4-which-bert-for-long-text/
您可以在那里概览所有方法。
【讨论】:
您可以利用 HuggingFace Transformers 库,其中包含以下可处理长文本(超过 512 个标记)的 Transformer 列表:
最近提出的其他八种高效 Transformer 模型包括 Sparse Transformers (Child et al.,2019)、Linformer (Wang et al., 2020)、Sinkhorn Transformers (Tay et al., 2020b)、Performers (Choromanski et al., 2020b)、合成器 (Tay et al., 2020a)、线性变压器 (Katharopoulos et al., 2020) 和 BigBird (Zaheeret al., 2020)。
来自 Google Research 和 DeepMind 的作者的paper 试图根据 Long-Range Arena“聚合指标”对这些 Transformer 进行比较:
他们还建议在分类任务方面,Longformer 的性能优于 Reformer。
【讨论】:
我最近(2021 年 4 月)发表了一篇关于此主题的论文,您可以在 arXiv (https://arxiv.org/abs/2104.07225) 上找到该论文。
在那里,表 1 允许回顾以前解决问题的方法,整个手稿是关于长文本分类并提出一种称为文本指南的新方法。这种新方法声称与该问题的先前答案之一中提到的论文 (https://arxiv.org/abs/1905.05583) 中使用的幼稚和半幼稚文本选择方法相比,可以提高性能。
关于您的选择的长话短说:
低计算成本:使用幼稚/半幼稚的方法来选择原始文本实例的一部分。示例包括选择前 n 个标记,或从原始文本实例的开头和结尾编译一个新的文本实例。
中到高计算成本:使用最近的转换器模型(如 Longformer),其令牌限制为 4096 而不是 512。在某些情况下,这将允许覆盖整个文本实例,修改后的注意力机制降低了计算成本,并且
高计算成本:将文本实例划分为适合 BERT 等模型的块,每个实例的“标准”令牌限制为 512 个,分别在每个部分上部署模型,加入生成的向量表示。
现在,在我最近发表的论文中,提出了一种称为文本指南的新方法。文本指南是一种文本选择方法,与幼稚或半幼稚截断方法相比,它可以提高性能。作为一种文本选择方法,Text Guide 不会干扰语言模型,因此它可用于提高具有“标准”令牌限制(对于转换器模型为 512)或“扩展”限制(例如 4096)的模型的性能对于 Longformer 模型)。摘要:文本指南是一种低计算成本的方法,它比简单和半简单的截断方法提高了性能。如果文本实例超出了为长文本分类(如 Longformer(4096 个标记)而专门开发的模型的限制),它还可以提高它们的性能。
【讨论】:
在将 BERT 模型下载到内核中时,您可以在配置中使用 max_position_embeddings 参数。使用此参数,您可以选择 512、1024、2048 作为最大序列长度
max_position_embeddings(int,可选,默认为 512)——此模型可能使用的最大序列长度。通常将此设置为较大的值以防万一(例如,512 或 1024 或 2048)。
【讨论】:
一个相对简单的方法是改变输入。例如,您可以截断输入或单独分类输入的多个部分并聚合结果。但是,这样可能会丢失一些有用的信息。
在长文本上应用 Bert 的主要障碍是注意力需要对n 输入标记进行O(n^2) 操作。一些较新的方法试图巧妙地改变 Bert 的架构并使其兼容更长的文本。例如,Longformer 将注意力范围限制为一个固定值,因此每个标记只与一组附近的标记相关。该表(Longformer 2020,Iz Beltagy 等人)展示了一组基于注意力的长文本分类模型:
LTR 方法从左到右按块处理输入,适用于自回归应用程序。稀疏方法主要通过避免完全二次注意将计算顺序减少到O(n)
矩阵计算。
【讨论】: