文本转换的工作原理

文本转换是将一个文本序列翻译或转换为另一个相同或不同长度的序列的过程。 这是通过在自然语言处理 (NLP) 领域中使用序列到序列(或 Seq2seq)模型来实现的。 GeoAI 工具箱中的文本分析工具集包含用于训练文本转换模型以及使用模型将文本从一种形式转换为另一种形式的工具。

训练文本转换模型工具为序列到序列任务训练 NLP 模型,经训练的模型可以与使用深度学习转换文本工具配合使用,以类似方式转换、翻译或汇总文本。

可能的应用

以下是此工具的潜在应用:

  • 可以纠正和标准化具有拼写错误和非标准格式的不正确街道地址。 这可以提高对这些地址进行地理编码时的准确性。
  • 可以翻译外文文本,以便更好地理解(在机器翻译的范围内)或进一步进行处理。
  • 宗地边界(例如界限和方位)的法律描述可以转换为遍历文件并自动处理以派生出宗地几何。
文本转换模型流程图
地址标准化的文本转换模型可以纠正拼写错误并标准化街道地址。

ArcGIS 中的文本转换模型以 Vaswani 等人在开创性 Attention is All You Need 论文中提出的转换器架构为基础。 这样可以在需要更少的标注数据训练模型的同时,实现更准确且可并行化的模型。

在内部,ArcGIS 中的文本转换模型为编码器-解码器模型。 编码器的关注图层接收输入文本中的所有单词,但解码器的关注图层只能访问正在处理的单词之前的单词。 然后解码器将转换已编码要素表示以生成令牌的输出序列。 熟知的编码器-解码器模型包括 BART 和 T5。

编码器和解码器描述如下:

  • 编码器 - 编码器将输入文本转换为固定长度要素矢量形式的数字表示。 这种数字表示保留了输入文本的语义。
  • 解码器 - 解码器从编码器获取已编码要素矢量,并将它们与输入序列组合以生成令牌的输出序列。
文本转换模型中的组件

文本转换模型也支持 Mistral 模型骨干。 Mistral 是一个基于变换器架构的大型语言模型,仅作为解码器模型运行。 Mistral 架构的关键组件包括以下内容:

  • 滑动窗口注意力 - 通过将长文本分成较小的重叠段来有效处理长文本,在保留重要上下文的同时降低计算成本和内存使用量。
  • 分组查询注意力 - 通过将相似的查询聚类在一起来提高效率,从而最大限度地减少注意力计算量并加快处理速度。
  • 字节回退 BPE(字节对编码)分词器技术 - 将文本转换为标记以供模型处理。
注:

当自动分析大量非结构化文本时,NLP 模型是有效的工具。 与其他类型的模型一样,需确保将其应用于相关任务时,具有适当的人工监督水平以及模型类型和用于训练模型的训练数据集的透明度水平。

使用文本转换模型

使用深度学习转换文本工具可用于将经过训练的文本转换模型应用于非结构化文本并将其转换为不同的语言或格式。 可以使用来自 ArcGIS Living Atlas of the World 的预训练文本转换模型或者使用训练文本转换模型工具训练自定义模型。

使用深度学习转换文本工具的输入是包含要转换的文本的要素类或表。 输入模型可以是 Esri 模型定义 JSON 文件 (.emd) 或深度学习模型包 (.dlpk)。 该模型包含深度学习模型文件的路径(包含模型权重)和其他模型参数。 某些模型可能包含其他模型参数。 该工具将在输入表中创建一个字段,其中包含转换的文本。

虽然该工具可以在 CPU 上运行,但由于深度学习为计算密集型,因此建议使用 GPU 进行处理。 要使用 GPU 运行此工具,请将处理器类型环境设置为 GPU。 如果您具有多个 GPU,还可以指定 GPU ID 环境设置。

训练文本转换模型

训练文本转换模型工具可用于训练 NLP 模型进行文本分类。 该工具使用机器学习方法,并通过向模型提供由输入文本对和目标转换输出组成的训练样本来训练模型。 通过 Mistral 模型骨干使用情境学习,通过输入提示引导模型的理解和响应,并为模型提供具体示例以帮助其推断所需的输出。 训练 NLP 模型是一项计算密集型任务,为此建议使用 GPU 运行。

训练数据以输入表的形式提供,其中包含一个用作预测变量的文本字段和一个包含表中每个输入文本的目标标注的标注字段。

当训练文本转换模型时,可以从头开始训练模型、微调已训练模型或者使用上下文学习。 通常,使用转换器架构的语言模型被认为是少样本学习模型。

但是,如果可以访问执行类似任务的预训练文本转换模型,则可以在新的训练数据上对其进行微调。 微调现有模型通常比训练新模型更快,而且这个过程也需要更少的训练样本。 在微调预训练模型时,请确保保留与预训练模型中使用的骨干模型相同的骨干模型。

此预训练模型可以是 Esri 模型定义文件或深度学习包文件。 输出模型也以这些格式保存在指定的输出模型文件夹中。

训练深度学习模型是一个迭代过程,其中输入训练数据将多次通过神经网络。 通过整个训练数据的每次训练都称为一个轮数。 最大轮数参数指定模型在训练时所看到训练数据的最大次数。 这取决于您正在训练的模型、任务的复杂性以及训练样本的数量。 如果您有很多训练样本,则可以使用较小的值。 通常情况下,较好的做法是重复训练更多轮数直到验证损失持续下降。

模型骨干参数指定用作模型编码器并提取输入文本要素表示的预配置神经网络。 该模型支持基于 T5 的编码器,这些编码器基于转换器架构,以半监督方式对大量文本进行预训练,并可以可以很好地理解语言。 模型骨干参数还支持 Mistral 大型语言模型 (LLM)。 Mistral 一种仅限解码器的变换器模型,采用滑动窗口注意力机制实现高效的长文本处理,使用分组查询注意力机制简化计算,使用字节回退 BPE 分词器技术处理不同的文本输入。

模型训练分批进行,批处理大小参数指定一次为训练处理的训练样本数。 增加批处理大小可以提高工具性能。 但是,随着批处理大小的增加,会占用更多内存。 如果在训练模型时发生内存不足错误,请使用较小的批处理大小。

学习率参数是最重要的超参数之一。 它是在训练期间调整模型权重的速率。 如果指定了低学习率,则模型改进缓慢并且可能需要很长时间来训练,从而导致时间和资源的浪费。 高学习率可能会适得其反,模型无法达到理想学习效果。 在高学习率的情况下,模型权重可能会被大幅调整,从而导致结果错误。 通常情况下,最好不要指定学习率参数的值,因为该工具使用了基于 Leslie N. Smith 的“训练神经网络的循环学习率”论文的自动学习率查找器。

该工具使用部分训练数据(默认为 10%)作为验证集。 验证百分比参数允许您调整用于验证的训练数据量。 对于 Mistral 模型,必须保留至少 50% 的数据进行验证,因为 Mistral 需要的训练集较小,并且依赖较大的验证集来评估模型性能。

默认情况下,该工具使用提前停止技术,当模型在连续训练轮数中不再改进时,该技术会停止模型训练。 可以通过取消选中模型停止改进时停止参数来关闭此行为。

还可以指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。 默认情况下,不会冻结骨干模型的图层,可能会更改模型骨干值的权重和偏差以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。

文本数据通常包含 HTML 标签和 URL 形式的噪声。 您可以使用移除 HTML 标签移除 URL 参数来预处理文本并在处理前移除标签。

参考资料

Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. "Attention Is All You Need." December 6, 2017. https://arxiv.org/abs/1706.03762.

Raffel, Colin. et al. "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer." July 20, 2020. https://doi.org/10.48550/arxiv.1910.10683.

"Encoder models." https://huggingface.co/course/chapter1/5?fw=pt.

Brown, Tom B. et al. "Language Models are Few-Shot Learners." July 22, 2020. https://doi.org/10.48550/arxiv.2005.14165.

Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." April 4, 2017. https://doi.org/10.48550/arxiv.1506.01186.

"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.