赞
踩
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号:datayx
目前,人机对话系统局限于语音和文本的交互方式,然而近些年随着语音助手、虚拟数字人、智能服务机器人的普及应用,兼备“视听说”的多模态对话系统,已在零售、客服、金融、媒体、教育、旅游等诸多领域变得越来越重要。本次 任务依托京东在电商零售领域真实场景、海量的数据积累和联合实验室的算力平台,连接对话系统领域顶尖人才,助力智能对话产学研联合发展,共同引领行业技术发展潮流。
决赛阶段思路及算法模型
我们根据决赛阶段的数据集特征对模型算法进行了重大调整,从之前 单纯的检索式多轮对话模型,变更成为包括检索式、生成式和任务式的综合型多轮对话模 型。变更之后的对话模型算法,更加具有鲁棒性,同时在测试集上的评测分数以及实际的 人工对话效果也随之有较大幅度的提升。以下是我们的决赛系统框架图:
从图中可以看到,我们的对话系统包括了三个模块 NLU、DM 和 NLG,下面我们详细 的介绍下这三个模块。
3.1 NLU 自然语言理解模块 在 NLU 模块中,我们对输入的 query 和 context 进行分析,识别用户的意图以及提取 有用的信息,为下面的对话处理做准备。比如说,如果用户询问物流,我们会识别出用户 的物流询问的意图;如果信息中包括了订单号、手机号、商品 id 等信息,信息槽点在这 里也会被提取出来。
3.2 DM 对话管理模块 在 DM 模块中,我们接收到了 NLU 模块提取的信息作为输入,并且根据信息内容安 排相应的处理方式。这里我们设计了三种对话 bot,QA-Bot,Task-Bot,Seq2seq-Bot。
1) QA-Bot
这里我们使用了信息检索(Information Retrieval)方法,对原始的百万对话语料进行 了细致的挖掘工作,提取了 50 万高质量单轮 question-answer 对话语料,以及 30 万 高质量多轮 context-response 对话语料。使用了 bm25 模型进行检索,然后使用 wmd 等语义度量方法进行 ranking。
2) Task-Bot
观察对话语料后,我们发现用户提出的问题中,有一些可以流程化处理的 task,适 合使用 task 对话进行处理。我们整理了发票、价保、提现等十多个高频 task,进行 了流程梳理,设计了 task 对话。能够对于用户的一些常见需求给出高质量的多轮回 复。在接收到 NLU 模块传入的意图之后,如果我们有相应的 task,会按照 task 进行 执行,如果 task 没有给出适当的回复,会执行其他的对话管理模块。因为时间有限, 也没有提前标注好的数据,所以我们直接使用正则匹配来划分对话意图,例如,如 果用户的提问中,包含了“开发票”等匹配项,可以归类为发票类意图,然后使用发 票类 task 来处理。
3) Seq2seq-Bot
生成模型能够很好的整合上下文 context 信息,给出不错的回复,所以我们使用了高 质量多轮对话语料,训练了分别针对单轮、多轮的生成模型。这里的 seq2seq 模型, 采用比较通用的 bilstm 作为 encoder,使用了 beam-searching、scheduled sampling 等 技术,改善了生成模型的输出结果。常见的 seq2seq 的优化 loss 函数是交叉熵函数, 但无法直接优化目标(生成回复和标准回复的 bleu 值),尝试在 loss 中引入互信息, 来改善 loss 优化,取得了一定的效果提升。此外,使用了 scheduled sampling 方法来 改善模型训练优化。
3.3 NLG 自然语言生成模块
在经过了上面两个模块处理之后,对话系统需要决定输出的回复。这里需要综合对话 bot 给出的候选回复,根据策略得出系统认为可信度最佳的回复。如果 Task-Bot 产生了回 复,我们认为这个回复是最可信的,直接返回给用户;否则会考虑 QA-Bot 和 Seq2seq-Bot,如果检索返回的回复分数很高,表明检索的回复可信度很高,可以返回给用户,否则使用 生成产生的回复。
项目 代码 获取方式:
关注微信公众号 datadyx 然后回复 对话 即可获取。
AI项目体验地址 https://loveai.tech
采用了哪些新颖和前沿的技术?
(主要说明创新点及新颖的 ideas) 模型能够起作用,离不开对数据的观察、挖掘,在京东对话比赛中,我们能够在初赛 和决赛均取得不错的名次,很大程度上是我们对数据的认知、挖掘工作比较到位,了解了 数据的特性、规律,再使用合适的机器学习、深度学习的模型,取得不错的效果。
4.1 数据分析与处理
在数据处理方面,我们认真分析数据的规律,探索良好的数据处理方式。1) 精确分词和数据归一化 语料中经过官方脱敏之后,留存了大量的特殊符号,这不仅对我们的分词造成了很大 的困扰,同时对算法模型的分析也带来了很大的困难。比如,表情符号脱敏之后变成#Es[数字 x]这样的符号,日期、订单号、地址等等脱敏之后变成[数字 x]这样的符号。可以使 用正则方法对于特殊词进行精确分词。对语料中的数字、日期、URL 等信息,进行归一化 操作,有利于降低语料的噪声,减少对检索、匹配和生成模型的干扰。2) 高质量训练语料 通过观察数据,我们发现原始语料中存在很多无意义、通用的回复,这一部分的语料 会对我们的检索模型以及生成模型的训练带来不利的影响。可以通过丢弃短回复、清理低 频回复等方法清洗语料。通过清洗之后的训练语料给模型的效果带来了很大的提升,回复 的满意度、完成效率等方面都有所改善。
4.2 模型选择与优化
在算法模型部分,相对于传统的机器学习算法和特征工程,我们大胆使用了包括 sequential matching network 多轮匹配模型,seq2seq 生成式模型在内的深度学习方法。同 时,在具体的对话系统方案实现中,我们寻找到了有效的方法将深度学习方法同传统的特 征工程的方法进行结合,这使得深度学习和特征工程的优点在最终的对话系统中都得到 了体现。以下将介绍上文中提到的深度学习方法在我们的对话系统中的运用。
1) sequential matching network 模型
Sequential Matching Network (SMN)是微软在 2017ACL 上提出的一个多轮对话框架,这 里被我们拿来用作初赛的深度匹配框架,并在初赛中取得了良好的表现。该模型针对长句 子的多轮对话有着非常良好的表现,尤其是在对话主题比较明确的对话语料中表现更好。根据论文中的实验,SMN 模型在 Ubuntu 英文语料上能够召回率�>?@1达到 70%,在汉语 语料 Douban 上的召回率�>?@1也能够达到 46%。通过测试,SMN 模型在经过高质量清洗 之后的京东客服对话语料上能够使得�>?@1达到 64%的召回率。同时融合 SMN 模型、WMD 模型、BM25 模型能够使得检索模型有着更加优良的表现。
2) seq2seq 生成模型
seq2seq 模型全称是 sequence to sequence 模型,最早是起源于神经机器翻译,因为 该模型的提出,使得神经机器翻译的性能从各个方面的指标都打败了统计机器翻译。人机 对话有着和机器翻译相似的地方,即都需要产生一句新的句子。所以将 seq2seq 模型迁移 到人机对话领域,作为生成式人机对话的基线神经网络是一个重大的突破。但是 seq2seq 模型在人机对话领域也暴露了很多的问题。例如生成结果容易产生通用性回复,比如“是的”、“好的”、”好呀”,在这里我们阅读了大量论文,采取了一些实用有效的改进方法:
a) Attention 和 dropout Attention
是谷歌翻译团队为了提高翻译性能而提出的。它在 seq2seq 模型原有的解 码方式上加以改进,在 decoder 解码阶段考虑所有的编码(encoder)端的单元对当 前 predict 产生影响,使得翻译的效果有了很大的改进。在我们的生成式模型当中, attention 机制的引入一定程度上改善了模型的效果。另外,我们使用 dropout 方法, 能够避免模型训练陷入过拟合,提升模型的鲁棒性。
b) Scheduled Sampling 方法
Seq2seq 的 train 和 predict 过程其实存在不统一的地方:train 时,每生成一个词时, 所利用到的“前一个词”都是准确的;predict 时,所有的词都是模型生成的,这就 带来了训练和测试的不统一。Scheduled Sampling 是指 RNN 训练时会随机使用模型 真实输出来作为下一个时刻的输入,而不像原先那样只会使用期望输出(label)。使 用该方法能够有效的提升模型预测结果的鲁棒性。
c) 损失函数的选择
传统的 seq2seq 模型的损失函数为交叉熵(cross entropy)函数, 在这里我们阅读文 献之后,对损失函数进行了修改,将其修改为互信息函数,互信息函数的引入,可 以增加多轮对话上下文信息中的语义关联性,对通用性回复问题进行抑制,从而提 升模型生成回复的质量。
d) 句向量检索的尝试
之前在其他任务上尝试过基于句向量的检索方式,用来解决传统基于字词匹配的检 索容易出现的语义相关、但无法召回的问题,也就是语义泛化能力弱。当时使用的 是 facebook 在 2017 年提出的 infersent 模型,句向量的检索效果还是很不错的。在 本任务中,使用了 seq2seq 的 encoder 将对话编码成向量,实现句向量检索,虽然效 果不太理想,但也为模型改进积累了经验。
总体来说,我们的设计的对话机器人,综合了检索式、任务式和生成式对话,在目前 的京东商城对话场景下,能够处理大部分用户问答场景。此外,我们对话系统的设计结构 较为合理,代码风格整体来说比较整洁,拥有不错的可扩展性。因此,在技术落地方面有 着不错的优势和价值。限于决赛的时间,我们在短短几天之类,能够设计出这样不错的对 话系统,也说明了团队在自然语言处理领域中,拥有不错的技术积累,具备快速实现的能力。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。