全文共3738字,预计学习时长27分钟
图源:unsplash
Boolean智能问答似乎是个简单的任务,实际上却不然,它当前的基础还远未达到人类的表现水平。
本文将介绍如何使用 HuggingFace Transformers和PyTorch库来微调“是/否”问答模型,并创建最新先进成果。
免责声明:本文旨在为Boolean智能问答提供一个简短易用的使用途径。
为何Boolean智能问答令人惊奇
如今,抽取式问答正是火热,而“是/否”问答将失去问答的半壁江山却被忽略了。回答封闭式问题的巨大的价值,以下行业中用例就可见一斑:
· 搜索引擎:知识库查询、会话代理……
· 信息自动提取:表单填写、大型文档解析……
· 语音用户界面:智能助手、语音会话分析……
事实上,人们已经建立了出色的智能“是/否”问答。
数据集:BoolQ
BoolQ 是由谷歌公司人工智能语言研究员建立的阅读理解数据集。以下是数据集中的示例,每个示例包括一个问题、一个段落和一个为“是”或“否”的答案。
数据收集途径如下(本文给出了更加详细的解释):
· 问题来自Google搜索引擎的历史查询数据
· 在这些情况下,提供问题/文章对作为注释。
· 注释者在文章中找到回答问题的段落并标记答案
· 返回问题/段落/回答对
· 如果返回一篇维基百科文章,则将其保留
从该途径中最终收集了13,000对,并从Natural Questions(自然问答)训练集中收集了3000对。这些示例被分为9400个训练集,3200个开发集和未发布的3200个测试集。
如下所示,回答问题需要多种推理。
推理类型
BoolQ团队通过在MultiNLI(多语型自然语言推理)数据集上进行BERT-large的预训练获得了最佳结果。请注意,多数基线生成的准确性为62%,而注释者的准确性达到90%(在110个交叉注释的示例中)。
BoolQ结果
这些结果展示了Transformer模型对语言理解产生的强大作用,但它仍存在改进空间。
模型: RoBERTa
RoBERTa是强大的最优化BERT预训练方式,由FacebookAI的研究人员发布。简言之,RoBERTa是在原始BERT架构之上添加的多项改进的集合。关键区别如下:
· 使用动态屏蔽而非静态屏蔽以完成Masked(遮蔽)语言模型(MLM)
· 完全删除NextSentence Prediction训练目标
· 优化步骤在8000而不是256的小批量上执行
· 文本编码是由BPE(字节对编码)的实现处理的,它使用字节而非统一字符编码作为构建块
· 对更多数据(从16 GB到160 GB)进行预训练以进行更多步骤(从100K到500K)
向贝吉塔(Vegeta)询问RoBERTa的批量
RoBERTa在所有9个GLUE任务中以及SQuAD排行榜上的表现均优于BERT。考虑到RoBERTa和BERT共享相同的MLM预训练目标和体系建构,这令人印象十分深刻。
GLUE和SQuAD结果
据作者说:“与我们在这项工作中探索的更普通的细节(例如数据集大小和训练时间)相比,这提出了关于模型架构和预训练目标的相对重要性的问题”。
然而,ALBERT和ELECTRA是这一领域的最新成员,他们在GLUE和SQuAD排行榜中的门槛更高。
实际操作“是/否”问答
现在我们已经了解了数据集和模型,开始操作问答吧!
任务说明:
击败BoolQ团队获得的开发设置结果。RoBERTa将成为我们的选择武器。
安装
训练和开发设置可在此下载:https://github.com/google-research-datasets/boolean-questions
至于开发环境,笔者建议使用Google