文 / Sandro Feuz 和 Pedro Gonnet,手写团队高级软件工程师
2015 年,我们推出 Google 手写输入。该产品可作为任何 Android 应用的附加输入法,帮助用户在 Android 移动设备上手写文字。在首次发布的版本中,我们实现了对 82 种语言的支持,包括法语、盖尔语、汉语和马拉雅拉姆语等。为了提供更加流畅的用户体验和省去切换输入法的需求,去年我们为 Google 的移动设备键盘 Gboard for Android 添加了 针对 100 多种语言的手写识别支持。
此后,机器学习不断进步,催生出新的模型架构和训练方法,让我们得以修改最初的方法(即依靠手动设计的启发式方法将手写输入切割成单个字符),并构建单个机器学习模型。该模型不但能够应用于整体输入,而且与旧版相比,错误率显著下降。今年年初,我们为 Gboard 中所有基于拉丁字母的语言推出新模型,并发表论文《基于 LSTM 的多语言快速在线手写识别》("Fast Multi-language LSTM-based Online Handwriting Recognition"),更详细地介绍了为该版本进行的相关研究。在本文中,我们将简要概述这项研究。

接触点、贝塞尔曲线和递归神经网络
任何在线手写识别器都是从接触点入手。手写输入表现为一系列的笔画,而每个笔画又表现为一系列带时间戳的点。由于 Gboard 适用于各种设备和屏幕分辨率,因此我们首先要对接触点坐标进行归一化处理。然后,为了准确捕捉数据形状,我们将点序列转换为一系列三次方贝塞尔曲线,以作为递归神经网络 (RNN) 的输入值。RNN 经过训练,能够准确地识别手写字符(如需了解该步骤的更多详情,请参见下文)。虽然长久以来