博客

人工智能与大模型

Hugging Face BERT 的问答教程

2024.04.19 27分钟阅读
什么是问答 AI
问答 AI 是旨在理解用户提出的自然语言问题并提供相关且准确答案的系统和模型。这些系统利用自然语言处理 (NLP)、机器学习(有时还包括深度学习)技术来理解问题的含义并生成适当的响应。
问答型人工智能的目标是使机器能够以模拟人类理解和交流的方式与用户交互。在不断发展的自然语言处理 (NLP) 领域,双向编码器表示变换器 (BERT) 等模型的出现为取得重大进步打开了大门,使机器能够以前所未有的精度理解和生成类似人类的文本。这些模型变得更加复杂,为从简单的文本分类到复杂的人工智能问答等各种任务设定了基准。
对于 NLP 爱好者或希望利用 BERT 进行 AI 驱动的 QA 潜力的专业人士来说,这份综合指南展示了使用 BERT 进行问答 (QA) 的步骤。
如何使用 BERT 构建问答 AI ?
虽然 BERT 是经过大量文本训练的强大工具,但它并不高度专业化,因此开箱即用并不理想。然而,通过在 QA 数据集上微调 BERT,我们正在帮助模型掌握 QA 任务的细微差别,特别是对于医学和法律等特定领域的提示,从而节省响应时间和计算资源。通过利用现有知识,然后根据质量保证进行调整,即使数据有限,我们也有更好的机会获得令人印象深刻的结果。有两种主要方法可以专门针对问答 (QA) 功能来微调 BERT 模型 - 仅通过问题、答案进行微调,和通过问题、答案与上下文进行微调
  • 仅通过问题和答案进行微调

     

在这种方法中,BERT 模型的处理方式有点类似于分类或回归任务,在训练期间提供问题及其相应的答案。在这里,问答模型本质上是学习将给定问题映射到特定答案。
随着时间的推移,模型会记住这些映射。当在推理过程中遇到熟悉的问题(或非常相似的问题)时,模型可以回忆或生成合适的答案。然而,这种方法有其局限性。它在很大程度上取决于训练数据,并且该模型可能无法很好地概括其训练集之外的问题,特别是当它们需要上下文理解或从段落中提取信息时。
它的缺陷在于缺乏创造性,严重依赖记忆,当提出从未遇到过或可以归因于现有问题的问题时,可能会导致空洞的回答。
  • 通过问题、答案和上下文进行微调

     

使用上下文(或段落)、相关问题和上下文中的答案训练的 BERT 模型更具表演性和创造性。在这里,目标不是让模型记住它正在训练的数据。相反,目标是增强模型从给定的上下文或段落中理解和提取相关信息的能力,就像人类如何从阅读理解段落中识别和提取答案一样。这种方法使模型能够更好地推广到看不见的问题和上下文,使其成为大多数真实世界 QA 应用程序的首选方法。
虽然方法1是一个直接映射问题,但方法2将其视为一个信息提取问题。两者之间的选择很大程度上取决于手头的应用程序和可用数据。如果目标是创建一个能够根据不同段落回答广泛问题的 QA 模型,那么方法2(涉及上下文)更合适。另一方面,如果目标是建立一个 FAQ 聊天机器人来回答一组固定的问题,那么第一种方法可能就足够了。
Hugging Face 提取式问答教程
在本教程中,我们将遵循方法2的微调方法,使用上下文构建问答 AI。我们的目标是完善 BERT 问答 Hugging face 模型的熟练程度,使其能够熟练地处理和响应更广泛的对话询问。
在处理对话问题时,我们会深入探讨个人之间自然、流畅的对话中出现的问题。这些问题涉及到大量的上下文,细致入微,可能不如基于事实的调查那么简单。如果不对这些具体问题进行微调,BERT 可能很难完全捕捉到这些查询的潜在意图和上下文。因此,通过微调完善其能力,我们的目标是为 BERT 配备所需的专业技能,以熟练应对和面对更广泛的对话挑战。
  • 用于微调的数据集

     

在本教程中,我们将使用会话问答数据集 CoQA。CoQA 是 Hugging Face 的一个重要数据集,旨在开发对话式人工智能问答系统。你可以在 Hugging Face 上找到CoQA 数据集。
数据集以 JSON 格式提供,包括几个组件:给定的上下文(作为提取答案的来源)、与该上下文相关的一组10个问题,以及每个问题的相应答案。此外,它还包括提取答案的主上下文文本中每个答案的开始和结束索引。
CoQA 挑战的主要目标是评估机器对文本段落的理解程度,并为对话中出现的一系列相互关联的问题提供答案。
比较非微调和微调模型的性能
  • 非微调 BERT 模型评估

     

以下是使用未在同一数据集上进行微调和评估的 BERT 模型时的结果。
考虑到精确预测开始和结束指数的挑战,我们已经实现了一个功能,以适应我们评估中的微小偏差。我们给出的准确性没有任何误差,其次是考虑5个单词和10个单词之间的准确性。这些误差幅度也用于评估微调 BERT 模型的性能。
处理的数据点总数:468
Start Token 准确度(预训练 BERT):1.27%
End Token 准确度(预训练 BERT):0.00%
范围内的 Start Token 准确度(预训练的 BERT,5):4.66%
范围内的 End Token 准确度(预训练的 BERT,5):4.24%
范围内的 Start Token 准确度(预训练 BERT,10):7.63%
范围内的 End Token 准确度(预训练 BERT,10):7.63%
  • 微调BERT模型评估

     

在这里,我们展示了我们七个模型迭代的损失价值。随后,我们还详细介绍了微调模型的准确性,使用与微调前模型相同的误差范围。
Start Token 准确率:7.63%
End Token 准确率:5.51%
范围内的 Start Token 准确度(5):34.75%
范围内的 End Token 准确度(5):43.22%
范围内的 Start Token 准确度(10):46.61%
范围内的 End Token 准确度(10):51.27%
BERT 模型在 CoQA 数据集上的初始性能几乎可以忽略不计。然而,在仅对大约6000个数据点进行训练后,该模型的有效性在5个单词的错误范围内激增至40%左右,在10个单词的误差范围内飙升至接近50%。
这是一个显著的改进。为了进一步提高模型的有效性,我们可以对不同的学习率进行实验,延长迭代的数量并增加训练数据。事实上,一个6000点的数据集对于许多场景来说往往是不够的。
使用不合适的硬件训练人工智能模型,可能会因为计算量逐渐增大而变得异常困难。在联泰集群,我们提供 GPU 加速的高性能工作站、服务器和集群,用于研究和开发定制的人工智能。立即联系我们了解更多信息!
WWW.LTHPC.COM
电话:400-100-3811

相关贴子

敬请登记。

登记
本网站受 reCAPTCHA 保护,适用 Google隐私政策和服务条款。