找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 71|回复: 0

Gboard 中基于 RNN 的手写识别

[复制链接]

545

主题

0

回帖

1677

积分

金牌会员

积分
1677
发表于 2024-11-22 13:47:54 | 显示全部楼层 |阅读模式
2015 年,我们推出了Google 手写输入法,它使用户能够在 Android 移动设备上手写文本,作为任何 Android 应用的附加输入法。在首次发布时,我们成功支持 82 种语言,从法语到盖尔语,从中文到马拉雅拉姆语。为了提供更无缝的用户体验并消除切换输入法的需要,去年我们在Android 版 Gboard(Google 的移动设备键盘)中增加了对 100 多种语言手写识别的支持。
从那时起,机器学习的进步促成了新的模型架构和训练方法,使我们能够修改最初的方法(依靠手工设计的启发式方法将手写输入分解为单个字符),而是构建一个对整个输入进行操作的单一机器学习模型,与旧版本相比,错误率大幅降低。我们在年初为 Gboard 中所有基于拉丁字母的语言推出了这些新模型,并发表了论文“基于 LSTM 的快速多语言在线手写识别”,更详细地解释了此版本背后的研究。在这篇文章中,我们对这项工作进行了高层概述。
触摸点、贝塞尔曲线和循环神经网络
任何在线手写识别器的起点都是触摸点。绘制的输入表示为一系列笔画,而每个笔画又是一个带有时间戳的点序列。由于 Gboard 用于各种设备和屏幕分辨率,因此我们的第一步是规范化触摸点坐标。然后,为了准确捕捉数据的形状,我们将点序列转换为一系列三次贝塞尔曲线,用作循环神经网络(RNN) 的输入,该网络经过训练可以准确识别正在书写的字符(有关该步骤的更多信息,请参见下文)。虽然贝塞尔曲线在手写识别中有着悠久的使用传统,但将其用作输入却是一种新颖的做法,并且使我们能够在具有不同采样率和准确度的设备上提供输入的一致表示。这种方法与我们之前的模型有很大不同,之前的模型使用所谓的分割和解码方法,该方法涉及创建几种如何将笔画分解为字符的假设(分割),然后从该分解中找到最可能的字符序列(解码)。
这种方法的另一个好处是,贝塞尔曲线序列比底层输入点序列更紧凑,这使模型更容易拾取沿输入的时间依赖性 - 每条曲线都由一个多项式表示,该多项式由起点和终点以及两个额外的控制点定义,确定曲线的形状。 我们使用一个迭代过程,该过程最小化标准化输入坐标和曲线之间的平方距离(x、y和时间),以便找到准确表示输入的三次贝塞尔曲线序列。 下图显示了曲线拟合过程的一个例子。 手写的用户输入以黑色显示。 它由 186 个触摸点组成,显然是单词go。我们用黄色、蓝色、粉色和绿色来表示字母g的四条三次贝塞尔曲线(每条曲线有两个控制点),相应地,橙色、青绿色和白色表示字母o 的三条插值曲线。
字符解码
曲线序列代表输入,但我们仍需要将输入曲线序列转换为实际书写的字符。为此,我们使用多层 RNN 来处理曲线序列并生成输出解码矩阵,该矩阵具有每个输入曲线的所有可能字母的概率分布,表示哪个字母是作为该曲线的一部分书写的。
我们尝试了多种类型的 RNN,最终决定使用双向版本的准循环神经网络(QRNN)。QRNN 在卷积层和循环层之间交替,使其具有高效并行化的理论潜力,并在保持权重数量相对较小的情况下提供良好的预测性能。权重的数量与需要下载的模型的大小直接相关,因此越小越好。
为了“解码”曲线,循环神经网络会生成一个矩阵,其中每列对应一条输入曲线,每行对应字母表中的字母。特定曲线的列可以看作是字母表中所有字母的概率分布。但是,每个字母可以由多条曲线组成(例如,上面的g和o分别由四条和三条曲线组成)。循环神经网络的输出序列长度(始终与贝塞尔曲线的数量匹配)与输入应该表示的实际字符数之间的不匹配可以通过添加特殊的空白符号来表示特定曲线没有输出来解决,就像在联结主义时间分类(CTC) 算法中一样。我们使用有限状态机解码器将神经网络的输出与编码为加权有限状态接受器的基于字符的语言模型相结合。语言中常见的字符序列(例如德语中的“sch”)会获得奖励并更有可能被输出,而不常见的序列则会受到惩罚。
尽管我们的新字符识别模型明显简单得多,但它们不仅比旧模型的错误率减少了 20%-40%,而且速度也快得多。但是,所有这些仍然需要在设备上执行!
在设备上使其发挥作用
为了提供最佳的用户体验,准确的识别模型是不够的——它们还需要快速。为了在 Gboard 中实现尽可能低的延迟,我们将识别模型(在TensorFlow中训练)转换为TensorFlow Lite模型。这涉及在模型训练期间量化所有权重,这样每个权重仅使用一个字节而不是四个字节,从而可以缩小模型尺寸并缩短推理时间。此外,与使用完整的 TensorFlow 实现相比,TensorFlow Lite 允许我们减小 APK 大小,因为它通过仅包含推理所需的部分针对小二进制大小进行了优化。
更多内容
我们将继续突破极限,超越拉丁文字识别器。手写团队已经在努力为 Gboard 中支持的所有手写语言推出新模型。
致谢
我们要感谢所有为改善 Gboard 手写体验做出贡献的人。特别是 Gboard 团队的 Jatin Matani、语音和语言算法团队的 David Rybach、Expander 团队的 Prabhu Kaliamoorthi、TensorFlow Lite 团队的 Pete Warden,以及手写团队的 Henry Rowley、Li-Lun Wang、Mircea Trăichioiu、Philippe Gervais 和 Thomas Deselaers。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|绿色天空实验室

GMT+8, 2024-12-27 10:53 , Processed in 0.081413 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表