ABSTRACT
Duplex Conversation,是一个 多轮 、 多模态 的 口语对话 系统,它使基于电话的代理能够像人类一样与客户进行交互。
我们用电信中全双工的概念来演示类似人类的交互体验应该是什么,以及如何通过三个子任务: user state detection
、 backchannel selection
和 barge-in detection
来实现平滑的 turn-taking。
此外,我们提出了 带有多模态数据增强的半监督学习 ,以利用未标记数据来提高模型泛化。在三个子任务上的实验结果表明,与基线相比,该方法取得了一致的改进。
我们将Duplex Conversation部署到阿里巴巴智能客户服务中,并分享生产中的经验教训。在线A/B实验表明,该系统可以 显著减少50%的响应延迟 。
INTRODUCTION
如何使智能服务机器人像人一样与人互动是spoken dialogue systems(SDS)中一个关键而困难的挑战。随着人工智能的快速发展,SDS的应用近年来取得了重大进展。Alexa、Siri、Cortana、Google Assistant等智能助手,阿里巴巴智能服务机器人等基于电话的智能客服,已经进入人们的日常生活。
然而, 大多数现有的商业SDS只关注代理应该说什么来满足用户需求,而忽略了 何时与用户交互 的重要性 。
Agent 应该能够协调当前谁在说话以及下一个人何时可以开始说话,而不是在用户发言后等待固定长度的沉默,然后触发系统响应 [44]。
智能体很难像人类那样在 small gaps and overlaps 的情况下灵活 turn-taking 。
我们在电信中使用 单工 simplex
、 半双工 half-duplex
和 全双工 full-duplex
的概念来更好地说明什么是灵活的 turn-taking,如图1所示。
首先,最简单的交流形式是 simplex 。在这种情况下, 发送者和接收者是固定的,通信是单向的 ,如电视或广播。其次, half-duplex 允许改变发送方和接收方,通信是双向的,但不是同时的 。例如,寻呼机或大多数基于电话的智能客户服务就属于这一类。最后, full-duplex允许同时双向通信而不受限制 ,例如自然的人与人之间的交互。
在全双工中,最终目标是提高通信效率 。
对于 全双工的SDS,座席应该能够像人与人之间的沟通一样顺畅地与客户轮流沟通,减少双方同时说话或沉默的时间 [42]。
因此, agent应该能够在必要时同时进行说话、倾听和思考,如图1c所示 。
It also needs to determine whether it is the right time to insert the backchannel response, or whether the user wants to interrupt the agent or has not finished speaking 。
通过减少双方同时说话或沉默的时间 ,座席应该能够像人与人之间的交流一样顺利地与客户轮流交流.
在文献中,有几次尝试模拟全双工行为并将其应用于SDS代理。例如,Google Duplex 将“ Um-hum, Well… ”等 backchannel response 集成到餐厅预订代理的SDS代理中,显著提高了自然度。微软小冰提出了 节奏控制模块 ,为智能助手实现更好的 turn-taking。Jin等人展示了一种能够 识别用户中断和不连续表达的 outbound agent。Inoue等人建立了一个名为ERICA的机器人,具有 专注倾听的 backchannel responses 。
尽管如此,以上工作仍有改进的余地。首先,大多数系统仍处于试验阶段, 只具备部分全双工功能 。其次,大多数模型 在做决定时只考虑转录文本而忽略音频输入 。它 不能捕捉 诸如 韵律prosody、节奏rhythm、音高pitch和强度intensity 等声学特征,导致效果不佳。最后,在基于电话的具有 跨领域泛化能力 的智能客户服务中 没有大规模的应用 。
在本文中,我们提出了一个 双工对话系统 ,使SDS能够像人类一样灵活地进行turn-taking。我们的系统有 三个成熟的功能 ,包括 user state detection
, backchannel selection
, and barge-in detection for the full-duplex
。与之前只考虑转录文本的系统不同,我们提出了一个 多模态模型 ,以 音频 和 文本 作为输入来构建 turn-taking 能力[11]。 通过在决策过程中引入音频,我们可以更准确地检测用户是否完成了他们的 turn,或者检测背景噪音,如喋喋不休,以避免错误的中断 。此外,我们还提出了 多模态数据增强 来提高鲁棒性,并通过 半监督学习 使用大规模 未标记数据 来提高 领域泛化 。实验结果表明,与基线相比,我们的方法取得了一致的改进。
我们将我们的贡献总结如下。首先,我们提出了一个名为 Duplex Conversation的口语对话系统 ,它配备了 三个成熟的功能 ,可以实现类似人类的交互体验。其次,我们通过 语音 和 文本 的多模态模型来 建模 turn-taking 行为 ,并提出了 多模态数据增强 和 半监督学习 来提高泛化。实验表明,与基线相比,该方法具有显著的改进。最后,将本文提出的系统部署到阿里巴巴智能客服中,并总结部署过程中的经验教训。据我们所知,我们是第一个描述这种双工对话系统并在基于电话的智能客户服务中提供部署细节的公司。
DUPLEX CONVERSATION
在本节中,我们首先概述双工会话中包含的 三种功能 ,并通过示例帮助理解。然后,我们详细描述了三个子任务: user state detection
, backchannel selection
, and barge-in detection
。
Overview
我们在图2中展示了三对双工对话示例。 第一个技能是给机器人一个类似人类的 backchannel response 。例如,图2a是口语对话系统中的常规问答过程。我们可以 在官方响应之前快速插入 backchannel response ,例如“yeah, um-hum”,如图2b所示,从而 减少用户所经历的响应延迟 。
第二个技能是检测犹豫查询并引导用户完成查询 。在图2c中,由于 用户在说话过程中的自然延迟或停顿,用户的请求被机器人错误地分割和响应 。如图2d所示, 如果模型检测到用户最近的语音还没有讲完,机器人将使用 backchannel 响应来引导用户完成他们的话 。 将用户的话语进行拼接得到完整的请求后,发送给核心对话引擎,提高对话效果 .
第三个技能是识别用户的 barge-in 意图,同时拒绝噪音造成的虚假干扰 。如图2e所示, 大多数现有的用户中断都是基于简单的规则来判断的,例如ASR置信度、声强等 。然而,简单的基于规则的策略很容易导致错误的中断,并 将用户周围的噪音和喋喋不休识别为正常请求 。在图2f中,它演示了代理应该能够正确地拒绝噪声并处理用户 barge-in 请求.
为了实现上述三个功能,我们构建了三个模型和相应的任务,包括用户状态检测、backchannel 选择和 barge-in 检测。请注意, 用户状态检测和 barge-in 检测是多模态模型,其输入是音频和文本,而 backchannel 选择的输入是文本 。
User State Detection
用户状态检测可以看作是 end-of-turn detection 的扩展 ,包括 三种用户状态 : turn-switch
, turn-keep
, and turn-keep with hesitation
。我们构建了一个以音频和文本为输入的多模态模型,以获得更准确的分类,并为每个状态设计不同的策略,如表1所示。
传统的口语对话系统只在 turn 结束时进行推理。相比之下, 理想的双工对话可以在用户说话时持续执行推理 。然而, 连续推理会产生大量无用的预测,给系统性能带来巨大的负担 。因此,我们选择一个折衷的解决方案,并 在InterPausal Units (IPU)进行推理 。
通常,我们通过 VAD静音阈值turns 来确定用户turns。在这里,我们 将较小的VAD静音阈值定义为IPU阈值,并将用户话语切割为IPU 。
如果用户状态为 turn-switch
, 我们将请求 backchannel 选择模块进行适当的响应 。 当静音达到VAD阈值时,代理将其视为 end-of-turn ,并将用户查询发送给核心对话引擎 。
如果用户处于 turn-keep
状态,则 表示用户还没有说完话,座席不会结束用户的turn,除非静音时间达到超时时间 。 假设用户在超时前继续说话,系统将连接ASR记录并重新监测静音持续时间 。
假设用户状态为 turn-keep with hesitation
,则在 turn-keep
逻辑之上, 在IPU阈值处额外请求 backchannel 选择模块 。在这种情况下, 用户请求通常在语义上是不完整的,所以我们让代理插入适当的backchannel响应来引导用户完成他们的句子 。
此处应该是VAD阈值处请求 backchannel response。
包含user和agent的双录音频可以更好的建模。
Backchannel Selection
backchannel selection 模块被设计为适当地响应给定的查询和用户状态 。
由于合适的 backchannels 集是 有限的
,我们挖掘并计算了所有可能的 backchannel responses,并从众包客户服务对话中选择了 十个
最合适的回应 。
对于同一个查询,可能有多个可能的 backchannel responses 。我们通过合并 相同的用户查询 和 具有相同对话行为 的查询来构建 multi-label分类 的训练数据。
我们还通过 hierarchical clustering 对类似查询进行分组,并计算每个聚类的 backchannel responses 应分布 。 归一化后得到相应聚类的 backchannel responses 概率分布,并将其作为 multi-label分类中的soft label 。
只有10个标签。统计的方法获得每个文本的 multi-label 分类的概率分布,作为训练数据的label。每个样本是独立的10-way分类,非softmax分类。
由于模型输入仅依赖于转录文本,我们选择具有 binary cross-entropy 的简单文本卷积神经网络作为分类器,并 选择概率最高的一个作为响应 。 如果有多个响应的概率大于阈值,我们通过 weighted random selection 来选择一个响应,以获得更好的多样性 。
Barge-in Detection
允许用户在机器人说话时打断是双工对话的一个基本特征 。然而,简单的基于规则的策略往往会导致许多错误的中断,从而导致糟糕的体验。
我们利用基于规则的策略对历史流量中的用户 barge-in 行为进行了实证分析。 如果流式ASR具有中间结果且识别置信度高于阈值,则认为用户希望中断代理 。如图3所示,只有 11%是用户barge-in请求 ,其余89%都是错误的中断。因此, 如何减少误中断成为问题的核心 。
用户与机器人说话有重叠即为barge-in。大部分的 false barge-in 是噪音、TTS播报、非人机 和 Misplaced-turn。
我们将假 barge-in 分为 四类 :
- 用户无意打断,如 问候 或 backchannel;
- 噪音,如环境噪音和背景声音等;
- 回声,机器人听到自己的声音,被自己打断;
- Misplaced-turn,机器人在用户说最后一个单词之前做出回应,导致机器人被错位的话语打断。
要检测上述虚假 barge-in,仅依靠音频或转录文本是不够的。因此,我们建立了一个 端到端的多模态 barge-in 检测模型,以鲁棒 检测用户是否有中断机器人的意图 。
需要user和agent的双录音频。
在设计此功能时,我们咨询了客户服务专业人员是否应该允许机器人打断用户。由于 大多数人类客服不允许打断用户 ,所以我们没有设计机器人在用户说话时打断用户的功能。
请注意, 用户状态检测
和 backchannel选择
的推理时间是在用户说话时 ,而 barge-in检测是在代理播放音频流时 。 前者模型对IPUs进行推理,而barge-in检测在流式ASR中间结果发生变化时进行持续推理 。
从这里看,模型不一定用的是双录的数据。
MODELING
在本节中,我们描述了 用户状态检测 和 barge-in 检测 所使用的多模态模型。该方法如图4所示,分为四个步骤:特征提取、多模态数据增强、模态融合和半监督学习。
Feature Extraction
由于资源限制,所有模块都部署在cpu上。因此,我们选择轻量级模型作为特征编码器,以获得更低的CPU使用率和更快的运行时间。
Text Encoder
首先,模型输入包括用户文本、用户音频和之前的响应。我们使用具有 kernels 的一维卷积神经网络(CNN),然后使用最大池化来获得话语的表示:
式中。我们将提取的用户和机器人的表示拼接并馈送到全连接层中,以获得文本特征:
其中 为可学习参数,为隐藏层大小,为用户和机器人表示的拼接的大小
Audio Encoder
我们使用单层门控循环单元(GRU)网络提取音频特征。我们将GRU网络的最后一个输出向量作为音频特征,其中是与文本特征相同的隐藏层大小。
我们已经尝试使用单层transformer、LSTM或双向循环神经网络作为音频编码器。我们发现这些从头开始训练的模型之间没有显著差异。此外,1D-CNN在音频上的效果略差于上述模型。因此,我们最终选择了GRU作为我们的音频编码器。
Multimodal Data Augmentation
在本节中,我们将演示如何在训练期间执行多模态数据增强以改进模型泛化。
首先,我们 从原始顺序的数据中得到样本i,从随机打乱顺序的数据中得到样本𝑗,其中,,𝑛为训练批大小 。其次,我们 将样本i和j的音频和文本特征分别混合在一起。我们可以得到增强的音频特征 和文本特征 :
式中, 为从beta分布中采样的混合比例:
其中,为经验超参数。第三,我们还 将相应的标签和混合,得到增广后的软标签 :
接下来,我们将进行模态融合并计算相应的交叉熵进行分类。
Modality Fusion
本文介绍了用于模态融合的 bilinear gated fusion
模块。首先,我们让文本特征和音频特征通过一个门控线性单元相互作用,并且只保留信息文本特征和音频特征:
其中⊗是点积,而φ是sigmoid函数
其次,将文本特征和音频特征馈送到双线性层,得到多模态特征:
第三,将多模态特征 以 softmax 激活方式输入分类层,得到预测概率,并计算有监督交叉熵 :
这个不是 CE loss,是 K 个独立的BCE loss。应该是写错了。
其中𝐾为分类中的类数。
Semi-Supervised Learning
我们引入半监督学习方法,将大量未标记数据合并到多模态模型中。首先,我们 计算没有数据增强的预测结果 。其次,我们计算自监督标签的如下:
其中为经验概率阈值。 如果的值均为0,则该样本不参与损失函数的计算 。
softmax 的得分,选最大的概率与阈值比较即可。
最后,我们计算了带有数据增强的预测与之间的半监督学习交叉熵。这里我们定义辅助半监督交叉熵如下:
公式错误,只包含第一项。
对于推理,我们不进行数据增广,使用不含MDA的特征,,来获得预测概率,并计算分类结果所示:
EXPERIMENTS
Datasets
由于没有大规模的公共 multi-turn 和 multi-modal 基准数据集,我们构建了三个内部数据集进行实验。
我们从10万份众包中文对话录音中提取 audio-text对 进行标注,包括 人与人 之间和 人机 交互。
请注意, 转录本中的每个单词都有相应的时间戳用于对齐 。
所有数据都是在用户同意的情况下记录、获取和使用的。
用户状态检测 和 barge-in检测 的众包 标注准确率在90%左右 。
我们以80:10:10的比例将数据集分成训练集、开发集和测试集,并报告测试集上的指标。
- User State Detection
它是一个 multi-class 分类任务,包含三种类型的用户状态,包括 turn-switch
, turn-keep
和 turn-keep with hesitation
。
我们通过众包 标记了3万数据 ,并从内部音频剪辑中引入了额外的 9万未标记数据 。
每个片段包含 1到5秒 的 latest user audio
, current user transcript
, 和 bot’s previous response text
。
- Backchannel Selection
我们构建了一个multi-label分类任务,该任务包含从7万句语料库挖掘的 10种常见的 backchannel response ,如 Um-hum, Sure, Well···
。注意,在这个任务中我们只使用文本作为输入。
- Barge-in Detection
一个二分类任务,用于确定用户是否想要中断机器。
我们通过众包方式 标记了10k数据 ,并引入了来自MUSAN数据集[45]的额外 10k噪声片段 和来自内部音频片段的 100k未标记数据 。类似地,每个片段包含 1到5秒 的 latest user audio
, current user transcript
, 和 the bot’s previous response text
。
Evaluation Metrics
对于评价指标,我们采用了以往研究中广泛用于分类任务的指标。对于用户状态检测,我们使用accuracy 和 macro F1分数。对于backchannel选择,我们采用Hamming Loss进行multi-label分类。
我们还使用 手工标记的正确性 ,它可以被视为准确性,作为人类评估指标。
对于barge-in检测,我们采用了precision、recal 和 macro F1评分。
所有指标的范围从0到1,并以百分比(%)显示。分数越高表现越好,但Hamming Loss越低越好。
Results and Discussion
我们分别在表2、3和4中显示了 user state detection、barge-in 和 backchannel selection 的结果。从表中可以看出,本文提出的方法在三个任务上都取得了最好的结果。
Overall Results
对于用户状态检测,如表2所示,我们提出的模型准确率达到了91.05%,与音频-文本融合基线相比,绝对提高了4.58%。通过定性分析,我们发现 通过音频和文本的联合建模,该模型可以更有效地捕捉细微的声学特征,例如用户的音调是否逐渐降低,或者犹豫、喘气、口吃 。
我们在表3中显示了barge-in检测的结果。与基线方法相比,该方法的召回率提高了16.2%,F1分数提高了10.15%,而准确率保持在90%左右。实验结果表明,该 多模态模型能较好地识别虚假的barge-in请求,对各种噪声具有较强的鲁棒性 。
对于表4中的backchannel选择,所提出的 带有软标签的多标签方法 也达到了91.2%的正确率,与单标签基线相比,绝对提高了约6.9%。 通过在应答之前插入 backchannel 响应,可以显著减少代理的响应延迟 。表5是部署系统的在线环境中的延迟分析。结果表明, 响应延迟从1400ms减少到700ms,节省了50%的用户等待时间,用户体验更好 。
在接下来的讨论中,我们将重点关注多模态模型进行深入分析。
Importance of Different Modality
我们研究了不同模态对不同任务的影响。
在 用户状态检测 中, 音频和文本模式都是必不可少的 。仅靠音频或文本无法达到令人满意的效果,准确率甚至低于80%。
在 barge-in检测 中, 音频的重要性远远大于文本 ,文本模型的F1分数低于50%。
在口语对话系统中,仅通过转录文本,很难确定识别的语音是来自正常的客户查询还是背景噪声。
通过识别文本不能确定是人机还是非人机(噪音或人声)。
综上所述,实验表明,单纯依靠文本或语音模态无法获得令人满意的用户状态检测或barge-in检测结果。多模态模型可以很好地利用不同模态的信息,取得较好的效果.
Influence of Multimodal Data Augmentation (MDA)
我们进一步讨论了多模态数据增强带来的改进。在 用户状态检测 中,MDA的绝对准确率提高了1.85%。然而,MDA可以显著提高 barge-in检测 的f1评分,与多模态基线相比提高5.41分。
我们推测有两个可能的原因,为什么MDA在barge-in检测方面取得了更好的改进。首先, 在barge-in检测中,噪声和非噪声类别是互补的,MDA可以有效地提高数据的多样性,从而使结果更具鲁棒性 。其次,通过在barge-in检测中 引入额外的外部噪声数据,使这部分数据发挥重要作用,提高了模型的泛化能力 。
Influence of Semi-supervised Learning (SSL)
无论是用户状态检测还是barge-in检测,通过半监督学习引入 大量未标记数据 后,性能都有了很大提高。与多模态基线相比,SSL在用户状态检测和barge-in检测方面的得分分别提高了5.67分和7.6分。实验结果表明,在多模态模型中,半监督学习可以很好地利用大量未标记数据,具有很大的提高模型性能的潜力。
Deployment Lessons
所提出的方法已经在阿里巴巴智能客服中部署了半年多的时间,服务了数十个不同业务的企业客户。以下是我们在部署和应用程序期间获得的经验教训。
Latency leads to inconsistent online and offline data distribution
由于在线环境下流ASR识别的延迟,在转录文本和音频之间存在延迟,导致数据不对齐。在我们的部署实验中, 音频和文本之间通常有300到600毫秒的延迟,音频比文本快 。这种延迟会导致离线数据和在线流量的分布不一致,从而导致模型结果不佳。
我们采用两种经验方法来解决它。第一种方法是 尽可能减少ASR延迟 ,例如在同一台机器上部署中间件和模型。第二种方法是在构建离线训练数据时,预先 模拟在线文本和音频的错位 ,保证离线数据和在线流量的分布一致。
另一种方法是有意地将旧音频流与文本对齐。然而,我们发现使用最新的音频流进行推理——即使没有文本对齐,也会产生更好的模型性能,所以我们没有使用第三种方法。
System throughput
我们观察到,当激活双工会话功能时,ASR请求的数量将增加一倍。大部分压力来自于barge-in检测的流识别。最大系统吞吐量将减少到原来的一半。
Middleware support
如果在线环境仅采用传统的 MRCP(Media Resource Control Protocol,媒体资源控制协议),而没有定制中间件,则无法部署双工会话。我们依靠定制的交互式语音响应(IVR)中间件向我们的模型发送定制的音频流和转录文本.
RELATED WORK
Turn-taking[39]是全双工会话的核心概念 。在过去的几十年里,它在不同的领域得到了广泛的研究,包括语言学、语音学和社会学。我们提出的 用户状态检测可以看作是 turn-taking 行为的一种变体 。先前的研究[40,42]使用具有 六个状态的非确定性有限状态机来描述 口语对话系统(SDS)中 系统和用户之间的 turn-taking 行为 。阐述了SDS中所有可能的 turn-taking 状态,并明确了turn-taking 的目标是 尽量减少对话双方同时静音或发言的时间,从而提高沟通效率 。
Turn-taking 有三个基本概念:
首先是 turn-taking cues
[8,9], 包括语音、节奏、呼吸、凝视或手势 。Agents 可以使用这些 turn-taking 线索来决定是否从用户那里take turn,或者agent可以使用线索来release turn。
第二种是 end-of-turn detection
[5,15,26] 或 prediction
[10,25,41]。检测和预测的不同之处在于, 检测 决定了agent是 否应该在当前时刻take turn 。相反, 预测 决定了 在未来什么时候take turn 。注意,我们 建议的用户状态检测属于前一类 。
三是 overlap
,主要包括两种情况。当 用户和agent的语音重叠 时,如果user想要从agent那里take turn,那么我们将这种行为定义为 interruption
,或 barge-in
[23,35,43,62]。如果 用户无意take turn ,我们将这种行为称为 backchannel
或 listener responses
[14,54],例如“Um-hum,Yeah, Right”。
通过以上概念,我们可以对双工会话中的turn-taking行为有更深的理解。
传统的对话系统[17,33]通常由三部分组成: 自然语言理解(NLU)
[28,30,58,59]、 对话管理(DM)
[6,7,18]和 自然语言生成(NLG)
[50,63,65,66]模块。从经验上看,NLU在面向任务的对话系统中扮演着最重要的角色,包括意图检测[12,13,29,57]、槽填充[61]和语义解析[19?, 20]。
在口语对话系统中,spoken language understanding (SLU) 可以看作是 NLU 的一个子集。大多数研究[11,34]忽略了音频模态,只关注通过ASR获得的转录文本,并将其视为NLU任务。在这项工作中,我们 利用语音和转录文本来共同捕捉人机交互中双工对话中超越文字的复杂行为 。
多模态建模是近年来众多学者关注的研究热点[2,64]。多模态建模的关键包括 多模态融合 [53,56]、 一致性与差异性 [16,55]、 模态对齐 [47]。我们建议通过综述[2]来全面了解。半监督学习(semi-supervised learning, SSL)[1]也是近年来机器学习领域备受关注的一个领域。现代深度学习中的半监督学习方法是基于 一致性正则化 和 熵最小化 。大多数方法 利用数据增强[60]来创建一致性正则化的学习目标 ,如MixMatch[4]、UDA[51]、ReMixMatch[3]、FixMatch[46]等。我们的SSL方法最接近计算机视觉中的 FixMatch 。我们将FixMatch方法从图像扩展到多模态场景,使用不同的数据增强方法和损失函数。
CONCLUSION
在本文中,我们提出了Duplex Conversation,这是一种基于电话的多轮、多模态口语对话系统,使座席能够以类似人类的行为与客户进行交流。我们将演示全双工对话应该是什么样子,以及如何通过三个子任务构建全双工功能。此外,我们提出了一种多模态数据增强方法,该方法通过半监督学习利用大量未标记数据,有效地提高了模型的鲁棒性和领域泛化。在三个内部数据集上的实验结果表明,该方法的性能明显优于多模态基线。在线A/B实验表明,我们的双工会话可以显着减少50%的响应延迟。
在未来,双工对话有两个值得注意的发展方向。一种是 引入强化学习来在线更新参数 。另一个是电话agents之外的应用,例如具有多模态交互的数字人类agent,包括实时 audio-visual 响应,如凝视、面部表情和肢体语言,以实现平滑的 turn-taking 和类似人类的体验。
参考文献
-
Multimodal Machine Learning:A Survey and Taxonomy