Siri 语音识别的小心机:你在哪里,就能更准确地识别那附近的地址
雷锋网 AI 科技评论按:这篇文章来自苹果机器学习日记(Apple Machine Learning Journal)。与其他科技巨头人工智能实验室博客的论文解读、技术成果分享不同,苹果的机器学习日记虽然也是介绍他们对机器学习相关技术的心得体会,但侧重点在于技术产品的实现过程、技术资源用户体验之间的取舍,更像是「产品经理的 AI app 研发日记」。过往内容可以参见 如何设计能在Apple Watch上实时运行的中文手写识别系统 , 苹果揭秘「Hey Siri」的开发细节 , 为了让iPhone实时运行人脸检测算法,苹果原来做了这么多努力 。
在最新一期中,苹果介绍了如何让 Siri 根据用户所在地的不同,准确识别出用户提到的周围的地点。雷锋网 (公众号:雷锋网) AI 科技评论编译如下。
近年来,由于深度学习技术的广泛应用,自动语音识别(ASR)系统的准确率有了显著的提高。然而,人们目前主要是在通用语音的识别方面取得了性能的提升,但准确地识别有具体名字的实体(例如,小型本地商户)仍然是一个性能瓶颈。
本文描述了我们是如何应对这一挑战的,通过将用户地理位置信息融入语音识别系统提升 Siri 识别本地 POI 信息点(point of interest,兴趣点)名称的能力。能够将用户的位置信息考虑在内的自定义语言模型被称为基于地理位置的语言模型(Geo-LMs)。这些模型不仅可以利用声学模型和通用语言模型(例如标准的语音识别系统)提供的信息,还可以使用用户周围的环境中的POI信息点的信息,更好地估计用户想要的单词序列。
引言
一般来说,虚拟助理都能够正确地识别和理解像星巴克这样的知名企业和连锁商店的名字,但是很难辨认出用户查询的数以百万计的小型本地 POI (兴趣点)的名字。在自动语音识别系统中,人们公认的一个性能瓶颈是:准确有具体名字的的实体(例如,小型本地商户),而这正是频率分布的长尾(少量、多种类的需求)。
我们决定通过将用户地理位置信息融合到语音识别系统中来提高 Siri 识别本地 POI 的名称的能力。
自动语音识别系统同城由两个主要部分组成:
-
一个声学模型,用于捕捉语音的声学特征和语言学单位序列之间的关系,如语音和单词之间的关系
-
一个语言模型(LM),它决定了某个特定的单词序列出现在一种特定的语言中的先验概率
我们可以找出造成这种困难(准确识别具名实体)的两个因素:
-
系统通常不知道如何表示用户可能怎么样发出模糊的实体名称
实体名称可能只在语言模型的训练数据中出现一次,或者根本没有出现。想象你生活中各种各样的公司的名称,你就能理解为什么说这是一个巨大的挑战了。
第二个因素导致了构成本地企业名称的单词序列会被通用语言模型分配到一个非常低的先验概率,从而使得一个公司的名称不太可能被语音识别器正确地选到。(比如雷锋网楼下的「时令果町」,日常的中文使用中是不会出现这样的组合的)
我们在本文中提出的方法架设用户更偏向于用移动设备搜索附近的本地 POI,而不是使用 Mac,因此我们在这里使用移动设备的地理位置信息来提高 POI 的识别性能。这有助于我们更好地估计用户想要的单词序列。通过将用户的地理位置信息融合到Siri的自动语音识别系统中,我们已经能够显著地提高本地 POI 识别和理解的准确率。
Siri 如何使用基于地理位置的语言模型(Geo-LMs)?
我们定义了一组覆盖美国大部分地区的地理区域(Geo regions),并且为每个区域构建了一个基于地理位置的语言模型(Geo-LMs)。当用户提出查询请求时,他们会得到一个根据用户目前的位置信息定制的系统,这个系统带有一个基于地理位置的语言模型。如果用户在任何定义的地理区域之外,或者如果 Siri 无法访问定位服务,系统就会使用一个默认的全局 Geo-LM。接着,被选取的 Geo-LM 会与声学模型结合起来对自动语音识别系统进行解码。图1 显示了系统整体的工作流程。
图1.系统概览
地理区域
我们根据美国人口普查局的综合统计区域(CSAs) [1] 来定义地理区域。从通勤模式来看,CSA 包含了经济上和社会上相连的邻近大都市区域。169 个 CSA 覆盖了美国 80% 的人口。我们为每个 CSA 建立一个专用的 Geo-LM,其中包含一个全局 Geo-LM,覆盖所有 CSA 未定义的区域。
为了高效地搜索用户所处的 CSA,我们存储了一个来自美国人口普查局 [2] 提供的栅格化地图边界(或形状文件)的纬度和经度查找表。在运行时,查找地理位置的计算复杂度为O(1)。
算法
Siri 的自动语音识别系统使用了一种基于加权有限状态机(WFST)的解码器,该解码器由 Paulik 首次提出 [3] 。该解码器采用差分语言模型原理,这与 [4,5] 中描述的框架相类似。
我们实现了一种类语言模型,在这个模型中,我们用类内语法动态地替换类非终结符。图2 对这个概念进行了说明。我们使用了一个主语言模型,将其用于通用识别,并且为预定义的类别引入了终结符标签,例如地理区域。对于每一个类,Slot 语言模型都是由与类相关的实体名称构建的,并且用于表示类内语法。接着,使用主语言模型和 slot 语言模型构建基于地理位置的语言模型,其实现过程如下节所述。
图2 类语言模型的通用框架
构建基于地理位置的语言模型
直接构建基于地理位置的语言模型(Geo-LM)的方法是为每个地理区域构建一个语言模型,每一个模型都是通过插入通用语言模型和从带有地理信息的训练文本中训练出的特定地理位置的语言模型得到的。这样做的问题是,通用语言模型通常都很大,因为它覆盖了很多的领域。生成的基于地理位置的语言模型积累出的模型大小往往太大,无法在运行时直接装载到内存中。另一方面,POI名称可以构建紧凑的语言模型,它的大小可能是一个完整的通用语言模型的千分之一到十分之一;基于以上分析,我们提出了类语言模型框架。
在我们的类语言模型框架中,主语言模型如其它的类语言模型一样被训练,训练使用的文本来自于所有模型支持的领域。为了提升对非终结符标签的支持,最初我们依赖于使用通过基于特定地理位置的模版认为创建的训练文本,例如「指向\CS-POI」,其中「\CS-POI」为类标签。这样的人造文本能够帮助引导模型初始化对非终结符的识别。在部署好基于地理位置的语言模型后,我们的自动语音识别系统的输出将具有特殊的标记,例如:在通过类语言模型框架识别的地理实体周围会有「\CS-POI」标记。新的基于地理位置的语言模型的输出将使我们能够不断为主语言模型中的非终结符提供训练文本。
在基于地理位置的语言模型中,Slot 语言模型是用特定类的实体(POI)训练的。在我们提出的系统中,为每个地理区域都构建了一个slot语言模型。每个slot语言模型的训练文本由相应区域的本地POI的名称组成。
图3 展示了一个基于加权有限自动机的类语言模型的小例子,其中包含了一个代表三个带有先验概率的简单模板的主语言模型(某条记录相对于其它的选项出现的概率):
先验概率=0.5: 指向\CS-POI
先验概率=0.3: 地点正好为\CS-POI
先验概率=0.2:寻找最近的\CS-POI
该模型也囊孔了一个slot语言模型,它仅仅包含三个带有先验概率的POI:
先验概率=0.4: 哈佛大学
先验概率=0.4: TD 花园
先验概率=0.2:Vidodivino
图3. 基于加权有限自动机的类语言模型的简单示例
将 POI 作为一个统计 n-gram 语言模型进行训练让我们能够对 POI 名称的动态变化进行建模。例如,只要「哈佛大学」一词存在于训练文本中,「哈佛」和「哈佛大学」都可以在 slot 语言模型中被建模。我们根据在产生的流量中观察到的分布获取先验概率。
在运行中,我们必须基于如图3 所示的当前用户的位置,动态、有效地将主语言模型中的类非终结符替换为各自相应的 slot 语言模型,其中「\CS-POI」代表基于地理位置的语言模型中的非终结符。
为了确保解码词典能够涵盖所有POI的名字,当某个 POI 的名字在我们的解码词典中无法找到时,我们会使用一个内部的「字符到音素(G2P)」系统自动推导出发音。
这样的框架使我们能够对整个系统进行灵活的更新。当你想要更新 POI 或增添新的地理区域时,你只需要重构或添加更多的 slot 语言模型。由于 slot 语言模型的规模很小,其重构过程使很快、效率很高。尽管一个典型的通用语言模型的大小可以达到 200MB 或者更大,而一个 slot 语言模型的大小仅为 0.2MB 到 20MB,具体大小取决于包含的实体数量。Slot 语言模型的灵活性对于我们的应用程序的可持续性至关重要。这是 POI 名称的迅速变化造成的,这种变化可能是因为该地点的新公司开张或者旧公司关闭以及这里不断变化的人口。除此之外,由于 slot 语言模型比较小,我们提出的框架允许在服务器初始化时将所有的语言模型预加载到系统内存中。因此,开关 slot 语言模型的过程可以在内存中完成,这使得我们可以得到一个非常高效的实现。我们的测试结果说明,主语言模型和 slot 语言模型的动态组合智慧引起边际延迟的增加。
实验和结果
在本节中,我们展示了对提出的基于地理位置的语言模型的对比基准测试,与将通用模型用于美国 POI 识别的任务进行了对比。在所有的实验中,我们使用了一种混合的卷积神经网络CNN-HMM(隐马尔可夫卷积神经网络) [6] 。自动机是利用 5,000 个小时的英语语音数据通过过滤器组特征训练得到的。具体而言,我们的基于地理位置的语言模型是作为一个4元模型训练得来的。我们手动改写了测试数据,并对地理位置进行了标注,一边在测试期间可以使用正确的 slot 语言模型。接下来,我们将首先描述我们用来训练和测试 Geo-LM 的数据,然后展示实验结果。
数据
用来训练通用语言模型对比基线的训练文本(D1)包含从各种数据源收集到的、保密、实时使用的数据。
用来在我们提出的基于地理位置的语言模型(Geo-LM)中构建主语言模型的训练数据由D1和人为创建的用例模版组成,其中包含「构建基于地理位置的语言模型」这一节中提到的POI类标志。
为了构建 slot 语言模型,我们从每天更新的苹果地图搜索日志中提取出被搜索的POI名称。提取出的POI被根据其地点和人口分成 170 组,从而为 169 个 CSA 和一个对应于没有被 CSA 涵盖的请求的全局组构建 slot 语言模型。每个 POI 的先验概率是根据它们在搜索日志中的使用频率设置的。表 1 显示了通用语言模型和 Geo-LM 的两个组成部分的 n-gram 的大小比较。Slot 在 170 个地理区域中,平均比通用模型的规模小的多。
表1.通用语言模型和Geo-LM中n-gram的数量
在我们的实验中,我们使用了两类测试数据:
我们使用的是从 Siri 在美国的生产流量中随机选取出的真实世界中的用户数据,我们根据它创建了两个测试集:
-
T1:一个POI搜索测试集,由本地 POI 搜索域中的20,000条语音组成
-
T2:一个通用测试集,由没有包含在 POI 中的10,000条语音组成
一套内部记录的本地POI搜索测试集(T3)。我们挑选出了八个美国主要的大都会区,并根据 Yelp 上的评论选出了 1,000 个最热门的 POI。对于每一个 POI,我们将记录来自于三个不同说话者的三条语音,并且分别为这三条语音加上或删掉领语「direction to」。请注意,我们从列表中删除了 6,500 个大型 POI,因为它们大多数都可以在不使用 Geo-LM 的情况下被识别出来,并且其识别主要是根据热度进行的。
实验结果
我们首先在现实世界用户测试集 T1 和 T2 上进行了实验。表 3 总结的结果表明,Geo-LM 能够在不降低在 T2 上的准确率的情况下,在 T1 上降低 18.7% 的字错误率。
因为 T1 是从生产环境的流量中随机抽样得到的,它包含了相沃尔玛和家得宝这样的大型 POI,而通用语言模型已经能够识别出它们。为了在更加难以找到的本地 POI 上测试名称识别系统的性能,我们在 T3 上进行了测试,其中并不包括大型 POI。如表 4 所示,实验结果表明,通用语言模型在 T3 数据集上表现并不好,而我们提出的基于地理位置的语言模型在八个地理区域中普遍能够将字错误率降低40%以上。
我们还比较了两个系统的运行速度,并且观察到 Geo-LM 的平均延迟稍微增加了不到10毫秒。
表3在真实世界用户测试集(T1和T2)上通用语言模型和 Geo-LM 得到的字错误率对比
表4.在美国的八个主要的大都会区的最热门的 POI 测试集(T3)上通用语言模型和 Geo-LM 得到的字错误率对比
结语
在这项工作中,我们展示了一个十分有效的基于地理位置的语言模型(Geo-LM),它有几下几个优势:
-
训练过程很灵活
-
运行时高效的语言模型构造
-
在本地 POI 识别任务重,自动语音识别系统的准确率相较于通用语言模型有很大的提高
我们的实验表明,使用本地化的信息可以使当地 POI 搜索的字错误率降低18%以上。在不包含大型 POI 使,字错误率会降低 40% 以上。
由于对系统运行速度的影响很小,对于其它区域的覆盖还有很大的提升空间。然而,除了区域性的语言模型,还需要继续提供一个全球化的 Geo-LM,从而使自动语音识别系统能够处理远距离查询,并且能够应对用户在支持的区域之外的情况。
本文提出的方法和系统与具体使用的语言是无关的。因此,除了美国和英语区,Geo-LM 也支持直接对其它的地区进行扩展。
想要了解更多的细节,以及对我们在本文中提出的 Geo-LM 进行的广泛的性能评估,可以参阅我们在 ICASSP2018上发表的论文「Geographic Language Models for Automatic Speech Recognition」 [7] 。
参考文献
[1] U.S. Census Bureau, “Combined Statistical Areas of the United States and Puerto Rico,” 2015.
[2] U.S. Census Bureau, “Cartographic Boundary Shapefiles,” 2015.
[3] M. Paulik, “Improvements to the Pruning Behavior of DNN Acoustic Models,” Interspeech, 2015.
[4] H. Dolfing and I. Hetherington, “Incremental Language Models for Speech Recognition Using Finite-state Transducers,” Proceedings of ASRU, 2001, pp. 194–197.
[5] D. Povey, A. Ghoshal, G. Boulianne, L. Burget, O. Glembek, N. Goel, M. Hannemann, P. Motlicek, Y. Qian, P. Schwarz, et al., “The Kaldi Speech Recognition Toolkit,” Proceedings of ASRU, 2011, pp. 1–4.
[6] O. Abdel-Hamid, A. Mohamed, H. Jiang, L. Deng, G. Penn, and D. Yu, “Convolutional Neural Networks for Speech Recognition,” IEEE/ACM Transactions on Audio, Speech, and Language Processing, vol. 22, no. 10, pp. 1533-1545, 2014.
[7] X. Xiao, H. Chen, M. Zylak, D. Sosa, S. Desu, M. Krishnamoorthy, D. Liu, M. Paulik, and Y. Zhang, “Geographic Language Models for Automatic Speech Recognition,” in Proceedings of ICASSP, 2018.
via Apple Machine Learning Journal ,雷锋网 AI 科技评论编译
。