前不久,OPPO 旗下的人工智能助手“小布助手”月度沉闷用户数冲破一亿,成为国内首个月活用户数破亿的手机语音助手。
通过 2 年多的成长,小布助手在能力上实现大幅降级,也融入了咱们身边便捷的服务性能。小布团队亦克服了诸多技术难点,为用户带来了更智能的服务。为此,小布团队撰写了一系列文章,具体介绍小布助手背地的技术撑持,本文是揭秘小布背地技术的第三篇。
第一篇:对话零碎简介与 OPPO 小布助手的工程实际
第二篇:小布助手算法零碎的摸索、实际与思考
1. 对话零碎的根本架构
智能对话交互已逐渐成为新一代的人机交互趋势,而 OPPO 研发的小布助手也已笼罩手机、手表、电视、耳机等多类终端设备,是一款集成工作型技能、常识问答、聊天、对话举荐、被动对话等综合能力的智能助手。
小布助手性能可分为五类:
- 零碎利用类:确定的命令需要,如零碎设置、工夫技能、利用技能等
- 信息查问类:主观常识的查问 / 搜寻需要,如“今天天气怎么样”等
- 泛娱乐类:满足用户娱乐需要,包含听歌、看电影等
- 生存服务:满足用户日常生活需要,包含导航、打车、订餐等
- 聊天类:主观类的闲聊需要,包含人设问答、闲聊问答、话题多轮等
小布助手架构是交融了工作型、常识问答型、聊天对话型的综合对话零碎。
对于工作型对话零碎,由用户输出语音,首先通过 ASR 模块辨认为文本,下发到 NLU 服务进行自然语言语义模块,生成语义表征后果,如畛域 Domain+ 用意 Intent+ 槽位 Slot,而后下发给 DM 对话治理模块,而后对话状态跟踪更新上下文的对话状态,通常为词槽表征的对话状态。
对话策略模块基于以后对话状态抉择最佳的回应 action,上游不同 BOT 的 action 可能波及到检索、举荐、零碎问、用意廓清以及 API 调用;对话 action 的后果通过 NLG 模块生成适合的自然语言,最初通过 TTS 语音合成输入回复语音。
聊天对话零碎次要包含以下几层。
Offline 闲聊知识库索引层:次要负责基于离线训练好的语义编码模型失去所有问题 Query 的语义向量,而后基于高维向量索引工具生成语义索引,同时基于分词生成文本索引,最初服务于线上服务;
Online 在线服务层:次要是 Query 话题辨认情感辨认等解决后,下发给应答引擎包含模板应答、检索式应答、生成式应答,以及被动对话引擎,而后交融排序模块基于应答模块输入的候选回复进行深度语义排序最终输入最佳回复,回复更新到对话上下文辅助 Query 了解;
另外最上面的 Offline 离线的用户趣味开掘层,次要基于用户 query 开掘用户趣味主题,最初服务于被动对话引擎,用来发动新话题吸引用户长程交互。
2. 工作型语义了解
语义了解中存在两个关键问题:
- 语义表征 Input: Query+Context, Output: ?
- 语义了解算法 Algorithm(Input->output)
语义表征办法次要包含典型 Query/ 典型指令、Term 空间、结构化用意和槽位、语义依存构造树四种。目前对话零碎根本采纳这种 Semantic Frame 用意 + 槽位的语义后果表征办法,用意槽位表征也存在 slot 之间的关系无奈更为精密刻画的问题,所以对于多跳图谱问答等简单语义依赖的场景,须要通过语义依存构造树的表征办法作为补充加强,同时语义了解工作复杂度随着语义表征精密水平会越简单。
理论在一个好的工业界 AI 零碎中,依据不同阶段和不同畛域的需要差别,综合使用四个档次的 NLU 技术来实现,小布助手目前以用意槽位体系的语义了解为主,在信息查问百科、聊天等畛域使用 Query 改写以及语义检索技术,来实现凋谢域多样且无边界的 query 的用意了解,在垂域问答采纳查问推理树来表征语义后果。
对于用意辨认算法架构,次要分为语义检索架构和分类模型架构。
语义检索的长处是偏差小在用意样本少时成果好,同时用意不必固定,可通过用意知识库任意扩大,所以扩展性强。毛病是方差大,且后果容易受噪声样本的影响,只能进行用意辨认,词槽抽取无奈多任务并行。实用场景是:百科问答 / 聊天类用意非固化且句式灵活多样的场景。
分类模型架构的长处是方差小,泛化能力强,与槽位填充可多任务并行处理。毛病则是偏差大,训练数据集少则成果不好,用意类别必须固定。实用场景是:用意类别固定的场景,如零碎操控等指令类技能。
罕用的用意辨认算法次要是各种分类模型 CNN/LSTM/Transformer。这里重点阐明一下特色加强的用意辨认或引入内部常识的用意辨认,包含引入实体地位特色、实体类型特色、词性特色等。
实体地位特色间接减少 NER 实体特色升高模型学习难度,但可能存在先验特色噪声需具体技能具体分析,实体类型特色次要是引入如工夫、地点等实体类型特色加强模型学习效果,准召晋升均有 0.5- 1 个点左右晋升。
槽位提取实质上是序列标注工作,模型实际次要包含 LSTM+CRF/Lattice LSTM+CRF,CNN+CRF/IDCNN+CRF,Lattice LSTM 基于字特色 + 词特色加强特色晋升模型准召,F1 晋升约 0.7%-2% 不等看具体技能,IDCNN 通过引入 Dilation Convolution 收缩卷积以较少层取得更大感触野,雷同 F1 晋升 inference 性能。
槽位可分为可枚举词槽,和不可枚举词槽,即任意文本槽位。
可枚举词槽:如日期工夫、数字、金额等说法固定,或无限资源池的词槽,如音乐影视。槽位提取形式通常基于词典 AC 自动机、规定 DFA 进行疾速匹配抽取。
不可枚举槽位:如日程闹钟事件、联系人微信好友名、短信内容等非固化模式的槽位类型。槽位提取形式次要是序列标注算法模型。
任意文本提槽,比方短信微信技能里的给 XX 发送 XX 信息内容,咱们基于词槽内容采纳任意文本填充的形式来自动化数据加强,基于训练出的提槽序列标注模型提槽后,通过可配置模块进行验证,相比未进行数据加强的模型召回率有 3% 以上的晋升。
基于独立的用意辨认和槽位提取模型,来进行语义了解会存在语义了解歧义问题,基于多任务联结建模能够无效缓解歧义问题,其劣势次要在于 Intent 能大大缩小 Slots 的歧义空间,因为 Slots 是 Query 用意的重要特色,较独立模型 F1 可晋升 1%-1.5%,较拆散模型训练效率高。
大规模预训练语言模型在因为模型容量微小学习到丰盛的常识散布,对于语料绝对匮乏或进步轻量级模型成果的业务场景十分无效,基于 BERT 的 Joint Task Learning 在 Fine tuning 阶段将输入层革新为分类 + 序列标注的构造,因为用意了解和槽位解析是相辅相成的工作,能够晋升模型成果。
线上环境对在线 Inference 性能要求很高,通常要求 <10ms,像 BERT 这样的大模型,就很难满足要求,如何使轻量级模型达到简单模型的性能,能够通过常识蒸馏来是实现。
原来咱们须要让 student model 的 softmax 散布与实在标签匹配,当初新增一个指标让 student model 与 teacher model 在给定输出下的 softmax 散布匹配。后者比前者具备劣势,因为经过训练后的原模型,其 softmax 散布蕴含有肯定的常识,实在标签只能通知咱们,某个 Query 是音乐用意,不是其余用意;而模型预测的 softmax 散布可能通知咱们,指标 Query 最可能是音乐用意,不大可能是电台用意,绝不可能是关上 APP 的用意;另外在预训练语言模型,常识蒸馏更多是想通过表征损失向轻量级模型注入更多的先验常识,在表征损失加上监督标签损失的根底上实现模型性能的晋升。
3. 凋谢域生成式聊天算法实际
小布助手聊天整体架构基于平安、扩展性、高效迭代、服务高可用及算法模型高性能准则进行设计,同时自建闲聊占比 85%。
生成式聊天架构采纳级联模型架构晋升端到端成果,关键点如下:
- 回绝策略层—进步服务性能并保障生成式回复的安全性
- 经营格调生成模型—基于自建闲聊知识库进行训练,尽量过拟合知识库并通过阈值策略实现后果优先
- 短回复寒暄生成式模型—兜底所有经营格调模型未能无效应答的局部
- 过滤策略层—敏感过滤、品牌过滤、强观点过滤及万能回复过滤保障回复平安与回复品质
咱们借鉴业内生成式间接交融属性信息,基于多属性管制的生成式模型利用属性管制回复生成,减少属性信息如句式、情感信息、观点、零碎人设等,达到管制生成文本格调的目标,心愿生成的回复更为可控,避免出现负面情感或疑问句式的回复。
单轮生成式闲聊模型分为经营格调和通用回复格调两种。经营格调生成式模型是基于经营同学编写的闲聊知识库来训练的,通用回复格调模型是基于开源微博单轮对话数据集来训练的,具体成果还是能够看到存在局部万能回复的问题,以及敏感 QUERY 和强观点型配对容易产生敏感问题。
多轮生成式聊天业界支流计划如下,多轮聊天的人工评测规范次要是 Google Meena 率选提出 SSA 人工评测规范,SSA (Sensibleness and Specificity Average):Sensibleness –> 合理性(敏感性), Specificity –> 针对性(特异度),同时也发现优化指标:Perplexity 与 SSA 高相干,优化 Perplexity 即可晋升 SSA。
多轮生成式聊天算法模型计划,目前曾经实际的有两种,一种是基于 12 层中文 GPT2 模型在多轮对话数据集上 Finetune,另外一种是基于华为 NEZHA 语言模型 + 下三角 Attention Mask 变成单向语言模型,再在多轮对话数据集上 Finetune。
多轮生成式挑战次要是,受限于上下文记忆能力会呈现回复自圆其说、不足常识信息量、生成回复的可控性等问题。
情感辨认算法模型:咱们在百度千言情感剖析赛道评测 TOP3,次要利用场景包含表情符,情绪安抚、生成式闲聊、其余待开掘的情感化场景;目前情绪类别反对喜爱、厌恶、开心、悲伤、怄气、恐怖、诧异、无情绪、其余情绪 9 种情绪类别。
4. 深度语义问答 FQA 技术实际
语义匹配问答架构次要分为回绝策略层、Query 预处理、智能改写包含代词指代消解、同义词改写以及后续布局的语义递进或转折场景下的完整性改写、语义检索、语义排序、语义消歧等可配置模块,可配置的策略模块用于疾速解决线上高优 BADCASE 问题,同时小布助手在百度语义匹配赛道冲击过第一名。
语义召回模型——采纳 SiameseNetwork 框架,应用分类工作建模思路进行训练,且训练样本数据范式采纳 listwise 范式,模型指标是最大化正样本之间的相关性,同时克制负样本之间的相关性。
语义匹配模型实际方面,对于负样本采样策略优先应用标注的负样本,标注负样本有余状况下,通过卡字面相关性阈值策略进行负采样,以保障负样本有肯定相关性,尽量构建 semi-hard 数据集用来减速模型收敛,同时晋升模型语义表征精度;损失函数方面咱们次要尝试 hinge loss、Triplet Loss、AMSoftMax 等。
AM-softmax 在余弦类似度上增加一个 margin,能够进步类间可分及类别的可分别性,应用 cnn 网络,联合 AM-softmax 的 loss 函数,可能获得最好的语义表征能力,通用评测集下的准确率晋升 1%,同时召回晋升显著。
高纬数据索引算法次要有树索引和图索引两种,通过基于等同召回率的召回性能试验比照,咱们抉择 NGT 图索引算法来进行向量索引,绝对于树索引算法,具备更好的索引成果及索引性能。
语义排序算法模型次要落地实际了交互表征模型 Attention-based CNN、ESIM 模型(Ehanced BiLSTM for NLI) 以及 Transformer 模型等,在召回阶段咱们失去的候选 query 汇合,而后基于用户以后 query 与候选 query 进行交互式表征建模能进步语义表征精度从而进步语义匹配准确率;另外 ESIM 模型长处在于精密设计的序列式推断构造,思考部分推断和全局推断的交融,准召成果绝对也会高一些。
5. 算法服务工程
算法服务架构次要基于畛域分治、NLU 服务多过程并发高性能的准则进行设计。关键点:
- 业务微服务化,业务域按垂域拆分,升高耦合性、晋升算法服务性能,进步麻利迭代效率;
- 模型 tfservering 服务化,TF Serving 集群治理 TF 模型易部署,人造反对模型热更新机制,简单模型可利用 GPU 进行 inference,同时通过本地模型服务实现服务降级策略。
NLU 算法服务外部分层架构,多层次回绝 / 召回,域外粗召回到域外高召回再到域内高精确,通过可配置模块高效解决 Case 类问题,防止引入毁坏模型均衡的问题,模型散布收敛到线上数据分布后保持稳定。
服务外部分层架构疾速拒绝域外申请,极大晋升算法服务性能,保障小布助手端到端晦涩度的性能体验。
6. 总结与瞻望
关闭域工作型对话技术要害挑战有多个,比方,语义了解模型的鲁棒性,特地是高频技能线上 query 散布变动快,如何保障线上模型泛化性是要害;对话能力更天然晦涩的对话治理技术;上下文用意了解(以后曾经具备人称 / 实体代词、局部零指代的指代消解能力,但泛化能力无限);交融设施渠道、LBS 地位信息及客户端状态等场景特色 + 用户根本属性 + 用户趣味画像的综合用意了解。
凋谢域对话技术方面,检索式聊天技术能解决高频头部 query 问题,但解决不了长尾问题以及凋谢域多轮对话问题。交融常识问答、闲聊、对话举荐为一体的端到端多轮生成式,是将来 ChatBot 的关键技术方向。
这里也存在不少技术挑战,包含无所不包的常识问答、情绪感知的共情能力、交融零碎画像与用户画像的回复生成、逻辑 / 观点 / 人设一致性、回合制被动问答向主动式对话演进、全双工的继续对话能力。