Sandro Feuz、Pedro Gonnet作者杜伟 路编译

Gboard全新手写输入识别模型:速度更快,错误率更低

2015年,我们推出了Google手写输入(Google Handwriting Input),使用户能够在Android移动设备上手写文本,作为任何Android应用的附加输入法。首个发布版本支持82种语言,包括法语、盖尔语、汉语、马拉雅拉姆语等。为了提供更加无缝的用户体验,免除更换输入法的麻烦,我们去年在谷歌移动设备键盘Gboard for Android中增添了100多种语言的手写识别功能。

自此之后,机器学习的进步催生了一些新模型架构和训练方法,使我们能够修正初始方法(依赖于手工设计的启发式方法,将手写输入切割成单一字符),并且相较于旧版本,修正版本构建了能够处理整体输入的单个机器学习模型,极大降低输入错误率。年初,我们在Gboard中为所有基于拉丁字母的语言推出新模型,并发表了论文《Fast Multi-language LSTM-based Online Handwriting Recognition》,解释此版本发布背后的更多研究细节。本文中,我们将进一步概述这项工作。
image2.gif触点、贝赛尔曲线(Bézier Curve)和循环神经网络

任何在线手写识别器都要首先解决触点问题。绘制的输入以笔画序列展现,并且每一个笔画反过来又是附有时间戳的各点的序列。由于Gboard适用于各类设备和屏幕分辨率,我们首先标准化触点坐标。之后,为了准确描述数据形状,我们将点序列转换为三次方贝赛尔曲线序列,用作循环神经网络的输入,其通过训练能准确识别书写的字符(该步骤更多细节见下文)。尽管贝塞尔曲线在手写识别领域有很长时间的使用传统,但把这些曲线作为输入很新颖,能够为不同采样率和准确率的设备提供一致的手写输入表征。该方法与先前使用分段-解码(segment-and-decode)方法的模型大不相同,后者对如何将笔画分解为字符(分段)以及之后从分解中找出最可能的字符序列(解码)作出多个假设。

该方法的另一个好处是贝塞尔曲线序列较输入点的底层序列更为紧凑,使该模型在输入过程中更容易获得时间依赖性——每条曲线都由起始和最终点以及另两个控制点定位的多项式表示,以确定曲线形状。为了找出能够准确表示输入的三次方贝塞尔曲线序列,我们采用一种最小化标准输入坐标和曲线之间平方距离的迭代法。下图展示了曲线拟合过程示例。用户手写输入以黑色表示。它包含186个触点,清楚表示单词go。黄色、蓝色、粉色和绿色这四个三次方贝塞尔曲线表示字母g(每个曲线有两个控制点),与之对应,橘色、青绿色和白色分别表示插值字母o的三条贝塞尔曲线。
image1.png字符解码

曲线序列表示手写输入,但我们仍需要将输入曲线序列转化为实际的书写字符。基于此,我们采用一种多层循环神经网络处理曲线序列,输出一个解码矩阵,它具备每一条输入曲线上所有可能字母的概率分布(表示哪些手写字母属于曲线的一部分)。

我们试验了多种类型的RNN,并最终确定采用双向准循环神经网络(QRNN)。准循环神经网络交替使用卷积和循环层,为高效并行化提供理论可能,在保持权重数相对较小的同时还能提供良好的预测性能。权重数与需要下载的模型大小有直接关系,所以越小越好。

为了“解码”贝塞尔曲线,循环神经网络生成一个矩阵,其中每一列对应一条输入曲线,每一行对应字母表中的一个字母。表示特定曲线的列可看作是字母表中所有字母的概率分布。但是,一个字母可以包含多条曲线(例如,上述字母g和o各包含四条和三条曲线)。循环神经网络输出序列的长度(通常与贝赛尔曲线数相匹配)和表示输入的实际字符数之间存在不匹配,这可以通过添加一个特殊的空白字符来解决,表示特定曲线没有输出,和Connectionist Temporal Classification(CTC)算法一样。我们使用有限状态机解码器(Finite State Machine Decoder),将神经网络的输出结果与被编码为加权有限状态接收器(weighted finite-state acceptor)的基于字符的语言模型结合起来。语言中常见的字符序列(如德语中的“sch”)会得到奖励,相反罕见的字符序列会被惩罚。流程如下图所示:
image3.png触点序列(如前图所示,以曲线分段进行颜色编码)被转化为更短的贝塞尔系数序列(示例中为7),分别对应一条曲线。基于QRNN的识别器将曲线序列转化为等长的字符概率序列,显示在解码矩阵中,且各行分别对应字母“a”到“z”和空白符号,其中每个条目的亮度对应其相对概率。从左至右浏览解码矩阵,大部分是空白的,但字母“g”和“o”显示为亮点,因此输出的文本是“go”。

相较于旧版本,新的字符识别模型更加简单,但它将错误率降低20%-40%,且速度也更快。但是,所有这一切需要在设备上进行实际操作。

使其在设备上操作

为了获得最佳的用户体验,准确的识别模型还不够,速度也要快。为了将识别模型(在TensorFlow中训练)在Gboard中的延迟尽可能降至最低,我们将其转化为TensorFlow Lite模型。这包括量化模型训练期间的权重,用每个权重一个字节取代之前的四字节,使得模型更小,推断时间也更短。此外,与使用完整TensorFlow实现相比,TensorFlow Lite模型能够降低APK大小,原因在于它专为小二进制大小进行过优化,仅包括推断所需的部分。

后续

除改进基于拉丁字母的语言识别器外,我们将继续挑战极限。谷歌手写团队已在推出新模型方面做出努力,以适用Gboard上支持的所有手写语言。

原文链接:https://ai.googleblog.com/2019/03/rnn-based-handwriting-recognition-in.html

工程RNN手写识别谷歌
2
相关数据
曲线拟合技术

曲线拟合(fit theory),俗称拉曲线,是一种把现有数据透过数学方法来代入一条数式的表示方式。科学和工程问题可以通过诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密集的离散方程与已知数据相吻合,这过程就叫做拟合 (fitting)。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

有限状态机技术

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

插值技术

数学的数值分析领域中,内插或称插值(英语:interpolation)是一种通过已知的、离散的数据点,在范围内推求新数据点的过程或方法。求解科学和工程的问题时,通常有许多数据点借由采样、实验等方法获得,这些数据可能代表了有限个数值函数,其中自变量的值。而根据这些数据,我们往往希望得到一个连续的函数(也就是曲线);或者更密集的离散方程与已知数据互相吻合,这个过程叫做拟合。

语言识别技术

在自然语言处理中,语言识别或语言猜测是确定给定内容所使用的自然语言的问题。针对该问题的计算方法被视为文本分类的特例,并用各种统计方法解决。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~