强大技术做支撑 谷歌输入法背后的机器智能
很多人每天花费大量时间使用移动设备键盘:撰写电子邮件,发短信,参与社交媒体等。 然而,移动键盘仍然在处理速度方面处于劣势。 用户平均在移动设备上的打字速度比在物理键盘上慢35%。 为了改变这一点,最近谷歌团队为Gboard for Android提供了许多改进,致力于创建一个智能机制的 键盘,能够为用户以任何选择的语言提供建议和纠正错误,从而实现更快更高质量的输入。
事实上,移动键盘将触摸输入转换为文本的方式类似于语音识别系统将语音输入转换为文本的方式,雷锋网了解到,该团队将利用语音识别的经验来实现触摸输入。
团队首先创建了一个强大的空间模型,将原始触摸点的模糊序列映射到键盘上的按键,就像用声学模型将声音定位到语音单元的顺序一样。
第二,构建一个基于有限状态传感器(FST)的核心解码引擎,以确定给定输入触摸序列的最有可能的字符序列。 随着数学形式主义和语音应用的广泛成功, FST解码器将提供支持各种复杂键盘输入行为以及语言特性所需的灵活性。 在这篇文章中,将为您详细介绍这两个系统的发展。
神经空间模型
移动键盘输入的错误通常归结于“胖手指打字”(fat finger typing,或在滑动打字中定位到空间位置相似的词,如下图所示)以及认知和操作错误(表现为拼写错误,字符插入,删除或互换等)。 智能键盘需要能够解决这些错误,并且可以快速准确地预测正确的单词。 据雷锋网了解,该团队为Gboard构建了一个空间模型,用于在字符级别处理这些错误,将屏幕上的触摸点映射到实际按键。
两个位置相似的词:“吸血鬼vampire”和“价值value”的平均滑动路径
一直到最近,Gboard还在使用高斯模型量化敲击相邻按键的概率和基于规则的模型,来表示认知和动作错误。 这些模型简单直观,但并不能直接优化与更高的打字质量相关的指标。 根据语音搜索声学模型方面的经验,用连接时间分类(CTC)标准训练的单个高效长期短期记忆(LSTM)模型替代了高斯模型和基于规则的模型。
然而,训练这个模型比预期的要复杂得多。 虽然声学模型是从人类转录的音频数据进行训练的,但是并不能轻松地转录数百万的触摸点序列和滑动轨迹。 所以该团队利用用户交互信号,例如自动修正和建议选择作为负面和正面的半监督学习信号,因此形成了丰富的培训和测试集。
对应单词“可以could”(左)的原始数据点,以及每个采样方差(右)的归一化采样轨迹
使用来自语音识别文献的大量技术来迭代NSM模型,使其足够小且足够快以便在任何设备上运行。 TensorFlow基础设施用于训练数百种模型,优化键盘上显示的各种信号:完成,建议,滑动等。
经过一年多的 努力,完成的模型比初始版本快6倍,大小仅是最初的十分之一。同时,它还显示出在脱机数据集上的错误自动更正减少约15%的错误,而错误解码手势则减少了10%。
有限状态转换器
虽然NSM使用空间信息来帮助确定敲击或滑动的字符是什么,但还是有一些额外的限制——词汇和语法 ——这些是可以承受的。词典告诉我们语言中出现了什么词汇,而概率语法告诉我们什么话可能接在其他的话后面。为了对这些信息进行编码,使用有限状态换能器。 FST(Finite-State Transducers)一直是Google语音识别和综合系统的关键组成部分。它提供了一种原则性的方式来表示自然语言处理中使用的各种概率模型(词典,语法,规范化等)以及操纵,优化,组合和搜索模型所需的数学框架。
在Gboard中,一个键传感器紧凑地表示键盘这个词,如下图所示。 它编码从按键序列到字的映射,允许替代键序列和可选空格。
该转换器沿着从起始状态(粗体1)到最终状态(两圈状态0和1)的路径编码“I”,“I’ve”,“If”。 每个弧用一个输入按键(“:”之前)和一个对应的输出字符(“:”之后)标记,其中ε编码空符号。 “I’ve”中的撇号可以省略。 用户有时会跳过空格键。 为了说明这一点,转换器中的单词之间的过渡空格键是可选的。 ε和空格后弧允许存在多个单词。
概率n元传感器用于表示键盘的语言模型。 模型中的状态代表一个(直到)n-1个字的上下文,并且离开该状态的弧,将被标记为一个后续字符以及跟随该上下文的概率(由文本数据估计)。 这些与给出关键触摸序列的可能性(滑动中的离散触摸或连续手势)的空间模型被组合并且用波束搜索进行探索。
通用FST原则,如流式传输,动态模型支持等,为构建新的键盘解码器带来了很大的帮助,但还需要添加一些新的功能。 当人们说话的时候,并不需要解码器来完善你所说的话,或者猜测你会在后面说些什么来省下几个音节; 但是当你输入时,你会感受到词语完成和预测的帮助。 此外,该团队希望键盘可以提供无缝多语言支持,如下所示。
在Gboard上输入三种语言
让新的解码器投入实际应用是一项复杂的工作,但FST原则有很多好处。 例如,支持印地语等语言的音译只是解码器的简单扩展。
音译模型
在许多具有复杂脚本的语言中,已经开发了罗马化系统,以将字符映射成拉丁字母,通常根据其发音。 例如,拼音“xièxiè”对应汉字“谢谢”。 拼音键盘允许用户在QWERTY布局上方便地输入单词,并将它们自动“翻译”到目标脚本中。 同样,一个音译印地语键盘允许用户输入“daanth”(牙齿)“????”。 而拼音确定是一个罗马化系统,印地语音译则更模糊; 例如“daant”将是“????”的有效替代方案。
印地语的滑动字符转换
正如从字母序列到单词(词典)的传感器映射以及为单词序列提供概率的加权语言模型自动化,该团队为拉丁语按键序列和目标脚本符号序列构建了22种印度语的加权转换器映射。 一些语言属于多个书写系统(例如Bodo可以写在孟加拉文或梵文的脚本中),因此在音译和本机布局之间,在短短几个月内就建立了57种新的输入法。
FST解码器的本质性质将支持完成所有的工作,预测,滑动打字和许多UI功能,无需额外的工作,从而使 Gboard能够从一开始就向印度用户提供丰富的体验,一个更智能的键盘。
总而言之,最近的工作将解码延迟降低了50%,将用户手动更正的字数减少了10%以上,能够为印度的22种官方语言提供音译支持,并启用了许多新功能。
虽然谷歌团队希望这些最近的变化能够改善用户的打字体验,但他们也同时认识到,在移动设备上打字的问题绝对不能算是解决了。 Gboard仍然会提出似乎不直观或低效用的建议,并且手势的解码建议仍然可能为人类永远不会选择的词语。 然而,该团队的工作为强大的机器智能算法的转变开辟了新的空间,谷歌正在积极探索为全球用户提供更有用的工具和产品。