jovi语音助手安装包_主动学习在语音助手语义理解模型生产中的探索

前言:

   训练一个性能达标的神经网络模型往往需要大量的训练样本,而更多的训练样本意味着更高的训练代价。主动学习(Active Learning,AL)作为机器学习的一个分支,主要就是针对标注数据成本高或者数据标签少的情况,使模型能以更少的标注样本获得更好的模型性能[1]。作为一种减少人工标注成本的手段,近年来受到了工业界的关注,越来越多的企业引入了主动学习,并将其作为模型生产的一环。

   本文首先介绍问题产生的背景及经典的解决方案,并根据当前解决方案存在的问题提出了相应的改进方法和进行了相应的实验。该方法最终被收录于:Coling2020 Main Conference

(https://www.aclweb.org/anthology/2020.coling-main.430/ )

可用的框架demo已发布于vivo人工智能一部图谱中心开发的KGraph平台中,有兴趣的同学可以进行体验和交流。

小编提醒:

  vivo人工智能一部图谱中心致力于探索和实践知识图谱在智能设备上的应用,已在vivo手机语音助手、全局搜索、智慧视觉等多项业务中取得了丰富成果。欢迎对知识图谱技术感兴趣的同学与我们进行深入合作和交流。

103a7715a41f6cb4207c4a1da6eb8c60.png

1、研究背景

1.1 语音助手

   近年来,智能语音助手不断发展,在手机等各种终端设备的使用也愈加频繁。语音助手的主要功能是聆听用户发出的口语指令(query),并将其转为手机等终端可以理解的指令。这个理解用户口语输入的任务被称为自然语言理解Nature Language Understanding (NLU)。

   NLU任务的主要目标是识别语句的意图(Intent, I)和槽位(Slot, S)。以“我要听李白”为例。意图代表用户query想解决哪方面的问题,比如“音乐”或者“古诗词”。槽位则代表的是语句中的有效成分,如语句中出现的实体(“李白”),动词(“听”)等。根据提取出的意图和槽位信息,就可以和人工设计的指令模板相互匹配,使语句能转化为终端设备可执行的指令。

b489e62cf9c316fafd22fddd59705ba4.png

             图1:Jovi语音助手的展示

经典解决思路是将整个NLU任务通过顺序(pipeline)的形式,分为意图识别(Intent Detection, ID)和槽位填充(Slot filling, SF)两个子任务[2][3][4]。通常将意图识别建模为分类任务,将槽位填充建模为序列标注任务,并各自设计模型和进行训练。

   近年来随着深度学习技术的发展,NLU任务的前沿方法从本来的顺序模型转变为了联合模型(joint model),使用一个模型同时获取意图和槽位。比较经典的模型包括jointBERT[5],SF-ID[6],Stack-Propagation[7],以及2020年EMNLP和ACL新提出的Slot-Refine[8], AGIF[9]等。这些方法的核心思路都是将两个任务的向量通过运算的形式相互关联,使得向量能同时包含两个任务的信息,从而提升模型的效果。

   图2展示了用顺序模型和联合模型解决NLU任务的流程。根据提取出的槽位和意图信息,去匹配该模板下预先设定的指令,最终完成用户的命令。

2193335ce8c4cd7f1a01717a15880f74.png

 图2:使用顺序模型(左)和联合模型(右)处理指令的流程

1.2 为何需要主动学习

   有监督学习领域下的各种算法十分依赖标注数据。在真实的模型生产场景中,获取标注数据在时间和金钱上都需要有相应的支出。标注样本的数量往往是开发人员凭借经验决定的,而标注团队则需要根据提出的数量规划标注团队的人工成本。需要标注 100 个样本和需要标注10000个样本所需要的人工成本是截然不同的。倘若开发人员指定的标注数量过大,就会造成标注成本的浪费;另一方面,数量太小又可能达不到性能,还得重新提出标注任务。因此,如何更好地利用数据,减少数据标注成本?针对模型训练,如何使用较少的训练样本来获得性能较好的分类器呢?

   针对这个问题,主动学习给出了相应的解决策略。接下来将简要介绍主动学习,以及如何通过主动学习解决上述问题。

2、主动学习简介

2.1 流程简介

   “主动”代表的是模型“自主”提出当前哪些样本最需要被标注。在主动学习的场景下,模型与数据标注员(或专家)进行交互,模型会根据特定的样本选择策略,“主动”提出当前最“需要”哪种样本进行学习。根据模型获得未标注样本的方式,可以将主动学习分为三种类型[1]:

   1、基于流(Stream-based)的主动学习: 未标注的样本按先后顺序逐个提交给模型,模型根据样本选择策略决定是否标注当前提交的样例,如果不标注,则将其丢弃。

   2、基于池(Pool-based)的主动学习: 维护一个未标注样本的集合,根据样本选择策略在该集合中选择当前要标注的样本。

   3、基于合成(Query synthesis):通过合成的方式生成新的样本。

下图给出了一个使用Pool-based主动学习方式进行模型训练的流程[1]:

85a08e411559baeafd36a28af51cc3c5.png

             图3:pool-based主动学习流程图

   1、构建样本池(unlabeled pool),从中选择种子数据进行标注。将种子数据加入训练样本集(labeled training set),并训练模型。

   2、模型根据相应的样本选择策略(Query Strategy)从样本池中选择当前模型最需要的一个(或一批)样本。

   3、标注人对模型选择的样本进行标注。

   4、将标注数据加入训练集(已标注数据)。

   5、模型利用训练集数据进行训练。

   6、重复步骤2-5直到模型性能达到预期。

   通过以上步骤,数据标注过程和模型训练的过程相互交叉,使得模型能不断获得当前训练最“需要”的样本。标注员在训练过程中可以实时了解模型的性能指标,当性能指标达到预期时即可停止流程,这样大大减少了样本的冗余。

   下图给出了我们的实验结果。在同样达到95%准确率的情况下,使用主动学习的方式比随机采样的方式节省了接近60%的样本数,训练效率有显著的提升。

7f9ffb677be572531ae02b4ef081e2d4.png

                  图4:实验结果展示

2.2 样本选择策略

   模型如何度量对某个样本的需求程度也是一个问题。最广泛使用的是基于概率的不确定性采样(Uncertainty Sampling)策略[1]。对于类似槽位填充的多分类问题下,常用的不确定性度量包括:

1)最小置信度(Least Confidence):

Least Confidence的方式是要求模型选取当前所有可选样本中置信度最低的样本。

bdb23d42058f18f7919c9197672ceb22.png

   其中,x代表训练样本,y代表模型的输出结果。

   置信度低指的是模型无法以较高的概率判定该样本属于哪个类别,比如对于三分类问题,模型对每个类别输出的概率是(0.3,0.3,0.4),概率最高的类别的的概率是0.4,可以说模型对这个样本概率最大的类别都不是很“自信”,因此需要进行学习。倘若输出的概率是(0.01,0.01,0.98),可以说模型对这个样本结果十分自信,也就不需要学习了。

2)边缘采样(Margin Sampling):

    Least Confidence只考虑了可能性最大的类别,对于其余类别的考虑则较少。因此研究者们提出了Margin Sampling,使得模型需要同时考量两个最有可能的类别。

50e81e1bd74cddd9fe41a846ed381228.png

   其中,代表各类别中最大的概率,则表示第二大的概率。如果两个值的差距越小,说明模型在这两个类别中越“纠结”,因此就更需要学习。

3)熵(Entropy):

   熵是用来衡量目标不确定性的一种度量[24]。熵越大,目标的不确定性就越高,表明当前选择这个样本对模型带来的信息量最大。

95229706c09c496c64ed78a9b32cbd87.png

   下图给出了一个三分类问题下,以上三种度量方式的热力图。颜色越深表示在该度量方式下样本包含的信息越多。可以看出三种度量对样本的选择有不同的偏向,Margin比Least confidence有了更广的选择,而Entropy的选择范围则是三者中最大的。

7dfe32982b2899663f274587db711a63.png

             图5:三种不确定性度量的热力图

   其他经典的策略如QBC(query-by-commitee),Density-weighted等方法详情请参阅[1]。

2.3 Active Learning For NLU

   之前已有一些将Active Learning成功应用于NLP任务的研究,如将AL应用于序列标注问题或意图分类问题,都获得了不错的效果[10][11][12]。

   NLU任务与前述研究稍有不同,它是由两个子任务复合而成的多任务学习情境。对于多任务主动学习(Multitask active learning, MTAL ),研究者们主要考虑了任务之间的级联关系或优先级顺序,同样取得了相应的效果[14][15][16]。但对于NLU这类子任务重要度相同的情况,现有的研究往往只关注于两个子任务中的一个[17],或采用的是顺序的方式(先意图再槽位)进行建模[18],而很少考虑过能否使挑选的样本对两个任务同时有效。

   因此,如何能够选择同时对两个任务都有益的样本?我们沿着这个思路提出了相应的解决方案。

3、解决思路

3.1 联合概率

   以神经网络的建模方式在近年获得了相当不错的成果,但也存在相应的缺陷:模型可能在两个子任务上的性能指标都较高,但最终输出的槽位信息和意图信息却无法匹配。

   还是以“我要听李白”为例,可能模型正确识别了“听”和“李白”为槽位,但将意图识别为了“古诗词”。这种意图和槽位间的“矛盾”就会导致最终匹配模板时出现相应的问题。为了解决这种问题,NLU任务的指标也更趋向使用句子级别的Overall Accuracy[7][19]进行测评,即意图和槽位必须全对才可视为正确。这一指标更加严格,也更符合NLU任务本身的初衷。这种前后矛盾的问题同样也出现于在命名实体识别任务(Named Entity Recognition,NER)。

   为了解决这个问题,除了通过加强神经网络的特征提取能力来减少错误外,研究者们也使用了概率图模型(Probabilistic Graphic Model, PGM) 来减少这种错误。概率图是通过结合概率论与图论的方式,表示模型相关变量间的联合概率分布的一种理论。它的优势就是能以概率和结构化的形式描述变量间的相关关系,更加直观和易于理解。

   条件随机场(Conditional Random Field, CRF)作为概率图模型中的经典算法,被应用于NER任务,用于表示槽位变量之间的联系,从而解决模型的输出结果中不符合词性标注逻辑的问题。针对NLU任务的形式,Jeong在CRF的基础上提出了改进版本的TriCRF,该模型引入了意图变量,使得模型可以通过势函数的形式直接获得意图和槽位的联合概率[20]。因此我们的模型采用了双向LSTM+TriCRF的方式进行建模,使得模型能为不确定性采样提供必须的联合概率。

8ea46abf23de3af3b73311b4c088bd45.png

 图6:我们提出的用于主动学习的NLU任务模型

    通过这种联合建模的形式,我们可以直接计算 使得意图和槽位同时被计算,且考虑了彼此间的联系。

3.2 联合概率形式下的Uncertainty Sampling

   明确了建模的形式,接下来是如何将上述的不确定性采样策略应用为同时考虑意图和槽位两个任务的形式。

3.2.1 Least Confidence

   在多意图的情境下,我们需要寻找的是联合概率下的最大概率路径。由于图6的建模方式直接提供了因此直接使用Viterbi算法即可求解联合概率情况下的最大概率路径。转换后的形式如下:

0f9d3c0e6714f8411fb5821aabe6d107.png

3.2.2 Margin

   Margin的考虑情况则比之前相比复杂了一些。在多意图的情况下,如何找到概率最大的两条路径?这个问题可以参考赛马问题的解法:既需要考虑每条赛道(意图)内的排名,也要考虑赛道(意图)之间的排名关系。

e02adbf95d721fff8046787c6d8353ca.png

具体的计算细节可见论文链接:https://www.aclweb.org/anthology/2020.coling-main.430/

3.2.3 Entropy

   虽然熵是十分热门的不确定性指标,但在面对序列标注场景下,计算序列的熵是一件麻烦事。假设一条序列的时间步为n,每个时间步上可能的槽位为t。获取一个序列所有可能的路径并且计算熵,使用穷举方式的计算复杂度很高。若使用这种方法计算,在实际使用的时候则显得本末倒置:因为计算时间太久而导致整个Active Learning的流程被拉长,反而使得流程的整体时间变长了。因此学者们也提出了相应的替代方案,如token熵或N-best熵(N-best Entropy, NSE)[10]来近似计算熵的值,起到加速计算的效果。

   但这两种方式只是一种近似计算的方式,不够准确,可能会影响最后选择的结果。因此,我们在文章中也提出了一种用动态规划来计算熵的方法,这使得计算序列熵的时间复杂度降低,并且同时考虑了意图变量,最终得到了联合概率形式下的熵。

a745e9e18ced22d39ff35c598e413b3c.png

 图7展示了计算Entropy的示意图,具体计算细节可见论文链接

(https://www.aclweb.org/anthology/2020.coling-main.430/)。

d6148d7b86b989bb81bd78537e1cf3f6.png

  图7:通过动态规划的方式求解Entropy的流程

3.3实验结果

   我们在五个公开数据集上进行了实验,数据集分别是ATIS[22],SNIPS[23]及Facebook发布的三个数据集[21]。实验结果如图10和图11所示。我们同样还是考察了模型到达使用全量数据训练得到的准确率(Overall Accuracy)时所需要的最小样本数。图10给出了训练流程的折线图,图11给出的是所需样本数的柱状图。可以看出各个主动学习方法相比于随机采样都有十分明显的提升。

7dc56b57cb4ba7bbd2b7c69d4e6ecdf5.png

               图8:实验结果的折线图展示

51446fa8ec96a9d1f7fbe8f695b19a39.png

                  图9:实验结果数据

   除了这个实验,我们还在这五个数据集上进行了两个消融实验,用来证明(1)考虑联合建模的方式比只考虑单个任务的效果更好 (2)即使替换了神经网络架构(base model),如使用流行的BERT,我们也可以达到预期效果。具体的实验设计及结果可见论文链接:https://www.aclweb.org/anthology/2020.coling-main.430/

4、总结

   本篇文章的出发点,是探究在模型生产的过程中如何更高效地利用数据,加速模型的生产流程。主动学习为我们提供了一个很好的框架,即通过人和模型的交互,选择模型认为“最需要”的样本,使得模型能以更少的标记样本数获得更好的训练效果。针对具体的NLU任务,我们也提出了一种使挑选的样本同时对两个子任务都有益的方法,并通过实验证明了它的效果。从工业角度考虑,还需要进一步考虑选择样本的速度,以及如何加大样本选择策略的样本选择数量,以提高标注流程的效率。

参考文献:

[1]  Settles, Burr. Active learning literature survey. University of Wisconsin-Madison Department of Computer Sciences, 2009. [2]  Patrick Haffner, Gokhan Tur, and Jerry H Wright. 2003. Optimizing svms for complex call classification. In 2003 IEEE International Conference on Acoustics, Speech, and Signal Processing, 2003. Proceedings.(ICASSP’03)., volume 1, pages I–I. IEEE. [3]  Christian Raymond and Giuseppe Riccardi. 2007. Generative and discriminative algorithms for spoken language understanding. In Eighth Annual Conference of the International Speech Communication Association. [4]  Kaisheng Yao, Baolin Peng, Yu Zhang, Dong Yu, Geoffrey Zweig, and Yangyang Shi. 2014. Spoken language understanding using long short-term memory neural networks. In 2014 IEEE Spoken Language Technology Workshop (SLT), pages 189–194. IEEE. [5]  Qian Chen, Zhu Zhuo, and Wen Wang. 2019a. Bert for joint intent classification and slot filling. arXiv preprint arXiv:1902.10909. [6]  Haihong E, Peiqing Niu, Zhongfu Chen, and Meina Song. 2019. A novel bi-directional interrelated model for joint intent detection and slot filling. In Proceedings of the 57th Conference of the Association for Computational Linguistics, ACL 2019. [7]  Libo Qin, Wanxiang Che, Yangming Li, Haoyang Wen, and Ting Liu. 2019. A stack-propagation framework with token-level intent detection for spoken language understanding. Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). [8]  Wu, Di, et al. "Slotrefine: A fast non-autoregressive model for joint intent detection and slot filling." arXiv preprint arXiv:2010.02693 (2020). [9]  Qin, Libo, et al. "Towards Fine-Grained Transfer: An Adaptive Graph-Interactive Framework for Joint Multiple Intent Detection and Slot Filling." Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: Findings. 2020. [10]  Burr Settles and Mark Craven. 2008. An analysis of active learning strategies for sequence labeling tasks. In Proceedings of the 2008 Conference on Empirical Methods in Natural Language Processing, pages 1070–1079. [11]  Shen, Yanyao, et al. "Deep active learning for named entity recognition." arXiv preprint arXiv:1707.05928 (2017). [12]  Zhang, Leihan, and Le Zhang. "An Ensemble Deep Active Learning Method for Intent Classification." Proceedings of the 2019 3rd International Conference on Computer Science and Artificial Intelligence. 2019. [13]  D. Cohn, L. Atlas, R. Ladner, M. El-Sharkawi, R. Marks II, M. Aggoune, and D. Park. Training connectionist networks with queries and selective sampling. In Advances in Neural Information Processing Systems (NIPS). Morgan Kaufmann, 1990. [14]  Roi Reichart, Katrin Tomanek, Udo Hahn, and Ari Rappoport. 2008. Multi-task active learning for linguistic annotations. In Proceedings of ACL-08: HLT. [15]  Yi Zhang. 2010. Multi-task active learning with output constraints. In Proceedings of the Twenty-Fourth AAAI Conference on Artificial Intelligence, AAAI 2010, Atlanta, Georgia, USA, July 11-15, 2010. AAAI Press. [16]  Meng Fang and Dacheng Tao. 2015. Active multi-task learning via bandits. In Proceedings of the 2015 SIAM International Conference on Data Mining. [17]  Xi C. Chen, Adithya Sagar, Justine T. Kao, Tony Y. Li, Christopher Klein, Stephen Pulman, Ashish Garg, and Jason D. Williams. 2019b. Active learning for domain classification in a commercial spoken personal assistant. In Interspeech 2019, 20th Annual Conference of the International Speech Communication Association, Graz, Austria, 15-19 September 2019. [18]  Stanislav Peshterliev, John Kearney, Abhyuday Jagannatha, Imre Kiss, and Spyros Matsoukas. 2019. Active learning for new domains in natural language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Industry Papers), pages 90–96. [19]  Chih-Wen Goo, Guang Gao, Yun-Kai Hsu, Chih-Li Huo, Tsung-Chieh Chen, Keng-Wei Hsu, and YunNung Chen. 2018. Slot-gated modeling for joint slot filling and intent prediction. In Proc. of NAACL. [20]  Minwoo Jeong and Gary Geunbae Lee. 2008. Triangular-chain conditional random fields. IEEE Transactions on Audio, Speech, and Language Processing, 16(7):1287–1302. [21]  https://fb.me/multilingual task oriented data [22]https://www.kaggle.com/siddhadev/ms-cntk-atis [23]https://github.com/snipsco/nlu-benchmark/tree/master/2017-06-custom-intent-engines [24]  Claude E Shannon. 1948. A mathematical theory of communication. Bell system technical journal, 27(3):379– 423. 30a895fb7fe9dfa60f2e031ca1606ec2.gif f1b330744471521082f522a7164d6e0a.png

vivo人工智能技术

30a895fb7fe9dfa60f2e031ca1606ec2.gif

扫码|关注我们

c0882af1b96a972ba3885d75cc6264dd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值