苹果官方最新文章:Siri 可以这样告知你附近小店的地址

Siri的强大功能相信不少人都见识过。可以打电话,订机票,也可以帮你找到几千米外的星巴克。不过,你要是问它自家楼下的小饭馆,它反而不一定知道。

自动语音识别(automatic speech recognition,ASR)的准确率在过去的几年中提升幅度惊人,这在很大程度上要归功于深度学习技术的广泛使用。然而,这种改善主要集中在一般化的语音识别领域。一般来说,虚拟助手可以轻松地正确识别和理解高知名度企业和连锁店的名称,比如星巴克。但却难以识别用户询问的数以百万计的当地小企业、小商店的名称。在自动语音识别领域,这已然成为一个性能瓶颈。

为了解决这一问题,苹果 Siri 语音识别小组将用户的位置信息融入语音识别系统中,以此增强 Siri 识别 POIs(Point of Interest,地理信息系统中的兴趣点,比如咖啡厅、商店等)的能力。

在 8 月 9 日的苹果官方机器学习博客上,苹果的研究人员分享了他们的研究成果,论文也发表在今年的 ICASSP(International Conference on Acoustics, Speech and SignalProcessing,国际声学、语音与信号处理会议)上。

根据博客上的文章,这种将用户位置纳入考量的语言模型称为基于地理位置的语言模型(geolocation-based languagemodels,Geo-LMs)。该模型让 Siri 不仅可以利用来自声学模型的信息,还有用户位置周围 POIs 的信息,从而可以更好地估测用户想表达的词语序列。

自动语音识别系统一般由以下两部分组成:

1. 声学模型:捕获语音的声学特征和语言单元序列之间的关系,比如语音或单词。

2. 语言模型:决定每个单词出现在特定语言序列中的先验概率。

由此,我们可以确定造成 POIs 识别困难的两个因素:

1. 系统无法得知用户会如何模糊地表述命名实体。对同一命名实体,可以有很多种表述,但系统无法预知这些表述。

2. 这些命名实体在语言模型的训练数据中可能只出现过一次,甚至一次也没出现过。

第二个因素使得通用语言模型为组成本地公司名称地单词序列分配了非常低的先验概率,这反过来又使得这些名称不太可能被语音识别器正确地选择出来。

新模型Geo-LM 基于这样的假设:在使用移动设备时,用户更可能搜索所处位置附近的POIs。因此,可以根据移动设备的位置信息提高语言识别中 POIs 识别的准确率。

Siri 是如何使用 Geo-LM 的?

研究者定义了一系列覆盖大部分美国的地理区域,并为每一个区域构建了一个 Geo-LM。当用户发出请求时,系统会根据用户位置的不同选择不同的 Geo-LM。如果用户不在任何一个预定义的地理区域之内,或者 Siri 不能获取用户的位置信息,那么系统会选择全局 Geo-LM。选择出的 Geo-LM 将会与声学模型结合完成语音识别任务。

图一:整体系统结构图

研究者通过美国人口普查局的综合统计区域(CSAs)定义地理区域。CSAs 由经济上或社会生活相联系的大都市区组成,通过通勤模式来衡量。169 个 CSA 区域覆盖了美国 80% 的人口。针对每一个 CSA 建立一个 Geo-LM,再用一个全局 Geo-LM 覆盖所有未被 CSA 定义的区域。为了高效搜索用户所在 CSA,系统存储了每个区域边界的经纬度,实际应用时查找的复杂度仅为 O(1)。

Geo-LM的建立

Siri的自动语音识别系统使用一个基于加权有限状态传感器的解码器。系统中包含一个 Master LM,用于一般化的识别和预定义类的非终结化标签,比如地理区域的类别。针对每一个类别,再建立一个 Slot LM。

图二:分类语言模型框架

建立 Geo-LM 的一个最直接的方法就是,将通用语言模型和根据该地区地理命名实体训练的语言模型融合在一起,得到一个新的语言模型。这种方法的缺点在于,通用语言模型包含着各个领域的概念,一般是非常庞大的。这样一来,融合得到的模型也将非常庞大。另一方面,利用地理命名实体训练的语言模型则可能非常小。因此,分类语言模型框架将是更好的选择。

在这个分类语言模型中,Master LM 就是一个通用语言模型,由来自各个领域的文本进行训练。每个 Solt LM 则为特定的地域单独构建,其训练数据中包含这一地区的 POIs。

图三:Geo LM 框架

以 n-grams 的形式训练语言模型使其能够把握 POIs 名称中的变化。例如,只要训练数据中出现 Harvard University,则 Harvard University 和Harvard 都可以被识别为哈佛大学。

这个框架也保证了整个系统可以灵活地被更新。想要更新POIs 或者是添加新的地理区域,只需要重新训练或者添加新的 Slot LMs 就可以了。Slot LMs 的重训练也非常迅速,因为这些模型非常小。一个通用语言模型一般为 200MB 甚至更大,而一个 Slot LM 只有 0.2MB 到20MB。模型的更新在实际应用中至关重要,毕竟周围不断有商店开业和倒闭。此外,Slot LM 的小体积也使得它们可以被全部预装到系统中,其转换也可以在内存中完成。

研究者以美国的POIs 识别为例,将Geo-LM 与通用语言模型的效果进行对比。

通用语言模型和 Geo-LM 中的 Master LM 的训练均使用现实应用场景中各个来源的脱敏数据。Slot LM 的建立则利用了每天更新的苹果地图的搜索日志中的 POIs。这些提取出的 POIs 根据位置和流量被分为 170 个组,用于建立 169 个 CSAs 的 Slot LMs 和覆盖其他区域的全局语言模型。每个 POIs 的先验概率根据其在搜索日志中出现的频率设定。

在测试阶段,研究者使用了两种数据。

第一部分数据是美国境内 Siri 流量中随机选择的真实用户数据,并据此建立了两个数据集:

T1:POI 搜索测试集,由大约 20000 条当地 POIs 搜索域中的话语组成。

T2:通用测试集,由不包括 POIs 的约 10000 条话语组成。

此外,研究者还建立了第三个数据集 T3,它由美国八个主要的都市区在 Yelp 评论上最受欢迎的 1000 个 POIs 组成。对每一个 POIs,记录三个不同人说的三句话。值得注意的是,在选择 POIs 时,事先从列表中排除了 6500 个知名的连锁企业。因为这些企业的名称即使不借助 Geo-LM 也能被识别出来。

图四:通用语言模型和Geo-LM 在真实用户数据集 T1 和 T2 上的测试结果

研究者首先在T1 和 T2 数据集上进行了测试,结果如图四所示。结果显示,Geo-LM 将 T1 上的单词错误率(word error rate)降到了 18.7%,而在 T2 上没有导致精度下降。

图五:通用语言模型和Geo-LM 在真实用户数据集 T3 上的测试结果

而 T1 中包含许多大型连锁超市,比如沃尔玛。它们仅仅通过通用语言模型就可以正确识别。因此,研究者进一步在去除这些知名连锁企业的 T3 数据集上进行试验,结果如图五。通用语言模型在这部分数据上表现较差,而 Geo-LM 在各个地区都将单词错误率降低了 40% 以上。

最后,研究者对两种模型所需时间进行了对比。Geo-LM 所用时间更长,但差别也在 10 毫秒以内。

由此可见,Geo-LM 可以大幅提高了各地区 POIs 识别的准确率。且其结构灵活,易于更新,体积较小,非常适合在移动端广泛应用。此外,该模型独立于语言,下一步,研究者将训练不同语言的 Geo-LM。

不过,Geo-LM 的应用对系统的速度仍有一定影响,区域覆盖也善待扩展完善。或许建立一个覆盖各个地区的全局 Geo-LM 才是一个更好的选择,只有这样才能在保证精度的同时,支持用户的远程查询。