SPACE 银行领域对话意图识别模型介绍
SPACE 模型是一个统一的半监督预训练对话模型底座,可用于解决下游各种类型的任务型对话任务。模型采用大量无标对话语料和少量对话标注知识进行预训练,统一的架构使得模型可同时用于对话理解和对话生成类任务。模型采用全小写英文语料进行训练和使用。
本项目的模型是 SPACE 基于一个对话意图识别数据集 BANKING77 微调后的下游模型,称作 space_dialog-intent-prediction ,可专门用来做银行领域的对话意图识别。
模型描述
SPACE 模型同时采用有英文标注对话语料和英文无标注对话语料进行预训练,旨在对话预训练过程中融入对话标注知识。 模型采用统一的单个Transformer架构作为模型底座,由四个连续的组件组成,以建模任务型对话中的对话流:
- 对话编码模块:用于编码对话历史并且捕捉公共的对话上下文表征
- 对话理解模块:用于提取当前轮用户问题或者系统回复的语义向量
- 对话策略模块:用于生成代表当前轮系统回复的高层次语义的策略向量
- 对话生成模块:用于生成当前轮合适的系统回复语句以返回给用户
模型采用半监督的方式同时在有标数据和无标数据上进行训练,针对每个模型组件设计不同的预训练目标,最终模型采用5个预训练目标:片段掩码语言建模,半监督理解语义建模,语义区域建模,策略语义建模和对话生成建模,最后以多任务学习的方式进行训练。 因此,模型可以在预训练过程中同时学习到对话理解,对话策略和对话生成的能力,可以同时用于下游各种类型的任务型对话任务。 针对对话理解类任务,只需要复用模型的对话编码模块和对话理解模块进行编码;针对对话策略和对话生成类任务,需要使用完整模型的所有模块进行编码和生成。
在对话意图识别下游任务微调的时候,我们利用 SPACE 对话理解模块提取的语义向量过一层 FNN 后通过 softmax 进行对话意图分类。
期望模型使用方式以及适用范围
你可以使用 spacedialog-intent-prediction 模型用于银行领域的对话意图识别,给定单轮的的用户语句,模型会针对用户的输入语句输出一个该领域的意图类别,如 "lostorstolencard"(银行卡丢失), "card_linking"(银行卡绑定) 等。
如何使用
你可以直接通过一个流水线使用模型用于意图识别任务:
代码范例
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.outputs import OutputKeys
model_id = 'damo/nlp_space_dialog-intent-prediction'
my_pipeline = pipeline(
task=Tasks.task_oriented_conversation,
model=model_id
)
result = my_pipeline("What do I need to do for the card activation?") # 输入单轮的 user query 即可
print(result[OutputKeys.OUTPUT]['label'])
其他对话样例
user query | intent class |
---|---|
What do I need to do for the card activation? | activatemycard |
If I make a mistake can I cancel the transaction? | cancel_transfer |
What can I do if my card still hasn't arrived after 2 weeks? | card_arrival |
My card is lost! Please help me! | lostorstolen_card |
Can you help me track my card? | card_arrival |
How do I add an existing card to the app? | card_linking |
模型局限性以及可能的偏差
由于下游任务是都是限定领域的对话,因此用户需要在该任务领域相关的场景里使用(即银行业务),不宜进行开放域测试。请参考范例更多了解相关场景。
训练数据介绍
所用来训练的 BANKING77 数据集是英文数据集,针对银行领域一共 13083 条标注数据,77 个对话意图。更多介绍见这里。
模型训练流程
预处理
输入文本将全部转化为小写的形式,然后采用一个预设词表大小为35022的WordPiece子词分词算法进行分词。输入模型的对话将被处理成以下形式:
<sos_u> user query 1 <eos_u>
训练
模型采用8张40G显存的A100进行预训练,总计优化了30个epoch。模型架构采用隐藏层状态维度为768的12层Transformer模块,输入的对话上下文和系统回复语句的最大长度分别限制为256和50。批处理大小设置为128,采用初始学习率设置为1e-5的AdamW优化器进行优化。随机失活概率设置为0.2。在下游任务的微调阶段,我们采用网格搜索在验证集上自动寻找最优的超参数。下游任务训练和预训练保持一样的超参数设置,在1张40G显存的A100进行 finetune。
数据评估及结果
模型进行意图识别下游任务,在BANKING77数据集上取得了最高指标:
Task:单轮意图识别 Intent Prediction
Dataset Name | Accuracy |
---|---|
BANKING77 | 94.94 |
NOTE: 一个基础单轮语义分类任务
相关论文以及引用信息
@article{he2022unified,
title={Unified Dialog Model Pre-training for Task-Oriented Dialog Understanding and Generation},
author={He, Wanwei and Dai, Yinpei and Yang, Min and Huang, Fei and Si, Luo and Sun, jian and Li, Yongbin},
journal={SIGIR},
year={2022}
}
评论