图片 1

Google翻译是如何把深度学习“塞进”手机的?

2016年3月7日,谷歌首席科学家,MapReduce、BigTable等系统的创造者,Jeff Dean受邀韩国大学,演讲主题《大规模深度学习》,这里部分来自highscalability的文字和笔者Youtube上的听录。刚好演讲在AlphaGo和李世石比赛之前,观众也问了他的预测,他只是说训练了5个月的机器跟顶尖高手的差距不好说;还有人问道他喜欢的编程语言(C++爱恨交织,喜欢Go的简洁,Sawzall才是真爱);在Google作为首席一天是怎么过的(要吃好早饭,到处闲逛闲聊,找到那些每个领域专家一起攻克难题)。

前几天谷歌更新了它们的翻译App,该版本有诸多提升的地方,其中最大的是提升了所谓“字镜头”实时视频翻译性能和通话实时翻译性能。怎么提升的呢?字镜头技术首创者、Google 研究院翻译项目组资深软件工程师Otavio Good近日在Google Research Blog详述了相关原理。以下是正文:今天,我们发布了Google翻译手机App,现在这款App可支持20多种语言的即时视觉翻译,也就是说,您可拿着手机摄像头对着实物,实物中的文字就可被即时识别出,并被翻译成目标语言。这项技术就是Google翻译中最新增加的特性——字镜头(Word Lens),如图1所示。 图 1 Google翻译手机版因此,倘若下一次您有机会莅临一个陌生国家的城市,例如布拉格,当您饥肠辘辘地迈进一家饭馆时,再也不用担心看不懂那“宛如天书般”外文菜单了,因为此刻我们这款App可以悄然地帮您化解点菜的尴尬。那么,这款App是如何能够快速识别这些新语言的?下面我就给大家说道说道这款App背后的事儿。言简意赅地说,我们的这款即时视觉翻译App,用到了深度神经网络技术。当年,我们字镜头(Word Lens)研究团队加入Google这个大家庭时,我们非常兴奋,因为这样就有机会和Google深度学习领域的大牛们一起工作。在过去几年里,神经网络犹如“磐涅重生”,重新唤起人们的极大关注,研究人员们亦不负众望,在诸如图像识别等领域取得不斐的成就。就在五年前,如果您交给计算机一幅阿猫或阿狗的图像,让它识别,通常它会很作难——水平有限,猫狗难辨。但时过境迁,由于卷积神经网络技术的诞生,计算机不但可轻易分别出阿猫阿狗,它们甚至还可以分别出狗的不同品种,不管这狗是中国藏獒、德国牧羊犬,还是拉布拉多犬、西伯利亚雪橇犬,计算机都能分辨出个“子丑寅卯”来。图2 数码迷幻艺术是的,现在计算机的威力,已经不限于“玩玩”数码迷幻艺术了。如果你下载了Google翻译App的最新发布版,用之翻译您看不懂的外文菜单,那背后为您服务就是深度神经网络技术。或许,您会不以为然,唔,这个…… 这个还好吧,Google已经把深度学习用得“炉火纯青”了,再把这技术用在文字翻译上,似乎在情理之中,意料之内。在人工智能时代,这类演示好像已有不少了吧。但是,您可能不知道的是,我们这款App最棒的地方在于,它可在不联网的情况下也能正常工作,也就是说,所有深度学习的计算完全在手机上完成的。您是知道的,深度学习的计算量是不容小觑的。可这又是怎么做到的呢?一步一步来,循序渐进找到图片中字符当利用手机摄像头把图像读取进来后,Google即时翻译App要做的是,找到图片中需要翻译的字母。这款App首要要剔除诸如树木或汽车等背景对象,凸显出想要翻译的文字。在识辨图片中的文字过程中,这款App通过识别类似的、连续的色素块,来完成任务。如果某些像素颜色相似、位置彼此靠近,那么就可能是我们要找的字符,这些字符连接成一行,或许就是我们要找的一行文字。图3 图片文字识别及翻译流程识别图片中字符接下来,这款App就要识别出第步定位的字符。这时就该让“深度学习”出马了。我们要用到卷积神经网络,并在字母和非字母集合上训练这个网络,这样做的目的在于,让它学习到不同字母的长得是啥模样。有意思的是,我们的训练集,并非都是那些方方正正的“纯洁的”字符集合,因为倘若不是这样,训练出来的识别器,就无法识别出在这个“并不纯洁”的大千世界中的字符。要知道,在真实的世界里,这些字符可能会因为反射、灰尘、污迹及各种稀奇古怪的破损,导致摄像头拍摄出来的字符“似是而非”。因此,我们构建了一个字符生成器,来伪造生成各式各样的阴影、扭曲字符。或许您要问,为什么你们不用真实世界中的图片字符,而是使用合成的数据集,来训练深度神经网络呢?嗯,其实原因很简单,我们很难找到足够多的、多种语言的、各种“光怪陆离”文字样本。当我们想要训练一个真正高效的,紧凑的神经网络时,更加困难的是,真实世界的字符样本非常难以精细控制。图4 本图显示的是我们用作训练的各种“脏”字母。这些“脏”字母包括有污垢的,有亮点的和有扭曲的等各类字符,但这些情况不能有太多,因为太多这样的非正常字符会让我们的神经网络“迷糊”。查询字典,翻译识别出的字符接下来,就是通过查字典,将这些识别出来的文字翻译为目标语言。在第步的字符识别过程中,可能存在失准的地方,比如说,将“super”识别成“5uper”,但这也关系不大,在字典查询过程中,匹配允许存在一定的模糊性,“5uper”还是有可能被纠正为“super”。重新渲染翻译的文字最后一步,我们会重新渲染翻译出来的文字,让翻译文字和图片中原文的字体和颜色一致。之所以我们可以做到这点,是因为我们已经从图像中找到并识别出我们要想的字符,并已确切地知道它们在原始图片中的位置。于是,在获取字符周围的颜色后,就可以从原始图像中“剔除”原始字符。然后,我们在保持原始前景色不变的基础上,在原始文字位置上,添加翻译出来的字符,这样就可以达到,加工出的图像和翻译出来的文字犹如 “浑然天成”。将深度学习 “塞进”手机中如果要将上述4步即时视觉翻译的流程,放置到我们的数据中心上去完成,这看起来并不是什么太难的事情。但是,想一想,很多我们的手机用户,特别是那些仅在下载我们App时才仅此一次的用到我们数据中心的用户,他们的手机网络,要么慢如蜗牛,要么时断时续,加之智能手机又耗电得要命,让他们的手机将拍摄到的图像,发送到远程的Google数据中心上,在计算完毕后,再将识别结果发回手机,在上述场景下,是非常的不便!那些低端手机的性能,可能要比一个稍微好点的笔记本电脑慢上50倍,而这个性能稍好的笔记本电脑,在计算性能上,和我们的数据中心相比,亦是差得何止十万八千里。而事实上,我们的数据中心,才是运行常规图像识别系统的平台。那么,在没有和任何云计算平台相连的背景下,如何利用这些四处移动的手机摄像头捕获图像,并完成即时的视觉翻译呢?答案很简单:自力更生,丰衣足食!我们开发了一个非常小型的神经网络,让它在计算能力有限的智能手机上,独立工作。在训练这个小型的神经网络时,我们做了若干个严格的限定,也就是说,我们设置了它所能处理的信息密度上限。因此,工作的挑战——如何生成最有效的训练数据,立马凸显出来了。在生成适用的训练数据上,我们可是费了老大劲的。例如,我们仅希望识别出小幅扭曲变型的字符。因为如果字符扭曲幅度过大,为了识别它,神经网络就会在过多不重要的事物上,使用过高的信息密度,这就大大增加深度神经网络的计算量。所以,我们花了很大功夫,做出了一套工具,这些工具极大地提升了迭代效率和可视化渲染效果。在数分钟内,我们可以改变我们的神经网络算法,让这个算法产生训练数据,并重新训练参数,最后给出可视化识别结果。从这里,我们可以找到,哪些字符识别失败,并及时查明原因。在这点上,我们故意将训练数据过度扭曲,这样一来,字符“$” 一开始可能被识别为“S”。但这没有关系,我们能够快速地确认这种“失误”何在,然后调整数据扭曲参数,来降低“失误率”。这就有点像,在现实生活中,我们要徒手画一副画,刚开始,我们画得可能很不像,但我们不断地修正,每次重画,都能进步一点点,最后您会看到,中途所有的不完善,都是为了画出一个完美的画面。为了达到翻译的即时性,我们也做了大量的优化工作,而且优化和反复调试的工作量很大。此外,为了改善计算性能,在某些数学运算上,也需要手工重度调优。我们充分利用SIMD,这是一种数据并行的模式,来挖掘智能多核手机的并行潜能。同时,我们还优化矩阵乘法,提高矩阵运算的局部性,使之在各级缓存中,提高Cache的命中率。最后,如您所见,我们终于让这个基于深度神经网络的翻译系统在手机上跑起来了,而翻译的效果比老版翻译系统高出一大截,而在运行速度上,一点也不逊色于老版翻译系统。有时候,新技术看起来非常抽象,找到诸如卷积神经网络这类新技术的用武之地,并不总是那么显而易见。打破语言障碍——做一款棒棒的、多语言的即时视觉翻译系统,我想,这应是一个伟大的应用案例。原文来自:Google Research Blog译者介绍:张玉宏,博士。2012年毕业于电子科技大学,现执教于河南工业大学。中国计算机协会会员,ACM/IEEE会员。主要研究方向为高性能计算、生物信息学,主编有《Java从入门到精通》一书。

整合意味着理解如果你不理解信息中的奥秘,那么你也很难去组织它。

摘要:前几天谷歌更新了它们的翻译App,其中最大的提升了是“字镜头”实时视频翻译和通话实时翻译。怎么做到的?字镜头技术首创者、Google 研究院翻译项目组资深软件工程师Otavio Good近日在博客上详述了相关原理。

Jeff Dean是Google系统架构组院士,在讲座:“大规模深度学习构建智能计算机系统”中提到这句和Google的使命:整合全球信息,使人人皆可访问并从中受益。早期他们通过收集,清理,存储,索引,汇报,检索数据完成“整合”的工作,当Google完成这个使命,就去迎接下一个挑战。

前几天谷歌更新了它们的翻译App,该版本有诸多提升的地方,其中最大的是提升了所谓“字镜头”实时视频翻译性能和通话实时翻译性能。怎么提升的呢?字镜头技术首创者、Google 研究院翻译项目组资深软件工程师Otavio Good近日在Google Research Blog详述了相关原理。

理解是什么含义?

以下是正文:

看到这张图,你马上知道是小宝宝抱着泰迪熊睡觉。而看到下张街景,马上意识到纪念品店里面有打折信息。其实直到最近,计算机才可以提取图片中的信息。

今天(2015年7月29日),我们发布了Google翻译手机App,现在这款App可支持20多种语言的即时视觉翻译(Visual Translation),也就是说,您可拿着手机摄像头对着实物,实物中的文字就可被即时识别出,并被翻译成目标语言。这项技术就是Google翻译中最新增加的特性——字镜头(Word Lens),如图1所示。

如果想从图像去解释物理世界,计算机需要去选择跟那些感兴趣的点,阅读文字并去真正理解。

图片 2

像下面的文字“car parts for sale”,传统的Google通过关键字匹配来给出结果,但更好的匹配是第二个。这是一个需求深度理解的过程,而不能停留在字面,要去做一个优秀搜索和语言理解产品。

图 1  Google翻译手机版(图片来源:Google)

Google的深度神经网络历史

因此,倘若下一次您有机会莅临一个陌生国家的城市,例如布拉格(Prague,捷克共和国首都和最大城市),当您饥肠辘辘地迈进一家饭馆时,再也不用担心看不懂那“宛如天书般”外文菜单了,因为此刻我们这款App可以悄然地帮您化解点菜的尴尬。那么,这款App是如何能够快速识别这些新语言的?下面我就给大家说道说道这款App背后的事儿。

Google跟其他公司的不同是,2011年就开始Google大脑计划,当时想通过使用神经网络来提升技术水准,但并没有把研究做成像大学象牙塔那种,而是结合安卓,Gmail,图片去改进产品解决真正问题。这对其他公司也是很好的借鉴,把研究和员工工作结合起来。

言简意赅地说,我们的这款即时视觉翻译App,用到了深度神经网络(deep neural network,DNN)技术。

神经网络老早就开始研究,上世纪60年代发明,在80年代和90年代早期也流行过,后来又不火了。两个原因:缺少计算能力去训练数据模型,这样也不能用来做更大规模的问题;2)缺少大量有效的数据集。而Google通过算法的力量,在加上他们强大的基础架构,海量数据集创造了AI的绝佳温床。

当年,我们字镜头(Word Lens)研究团队加入Google这个大家庭时,我们非常兴奋,因为这样就有机会和Google深度学习领域的大牛们一起工作。在过去几年里,神经网络犹如“磐涅重生”,重新唤起人们的极大关注,研究人员们亦不负众望,在诸如图像识别等领域取得不斐的成就。

深度学习一开始从少数的产品组开始,一段时间后反响很好,能解决之前不能做的,就更多的团队开始采纳。使用深度学习的产品有:安卓,Apps,药品发现,Gmail,图片理解,地图,自然语言,图片,机器人,语音翻译等。

就在五年前,如果您交给计算机一幅阿猫或阿狗的图像,让它识别,通常它会很作难——水平有限,猫狗难辨。但时过境迁,由于卷积神经网络(convolutional neural network)技术的诞生,计算机不但可轻易分别出阿猫阿狗,它们甚至还可以分别出狗的不同品种,不管这狗是中国藏獒、德国牧羊犬,还是拉布拉多犬、西伯利亚雪橇犬,计算机都能分辨出个“子丑寅卯”来。

深度学习能应用到很多领域原因是那些通用模块:语音,文字,搜索词,图片,视频,标签,实体,短语,音频特性。输入一类信息,决定你想要的输出,收集训练数据作为你想要计算的潜在函数,然后就放手不管了。

图片 3

模型很赞的原因是因为灌了很多原始形式的数据。你不需要教工程师很多特征点,模型的力量在于从观察一些例子就能自动识别数据中的有用信息。

图2 数码迷幻艺术(图片来源:Google DeepDream)

深度神经网络是什么?

是的,现在计算机的威力,已经不限于“玩玩”数码迷幻艺术(trippy art,参见例图2)了。如果你下载了Google翻译App的最新发布版,用之翻译您看不懂的外文菜单,那背后为您服务就是深度神经网络技术。

神经网络就是一些从数据提炼的复杂函数。从一个空间输入在转化为另一个空间的输出。

或许,您会不以为然,唔,这个…… 这个还好吧,Google已经把深度学习用得“炉火纯青”了,再把这技术用在文字翻译上,似乎在情理之中,意料之内。在人工智能时代,这类演示好像已有不少了吧。

这里的函数不是像平方,而是真正复杂的函数。当你给出一些原始像素,比如猫,而输出就是对象的类别。

但是,您可能不知道的是,我们这款App最棒的地方在于,它可在不联网的情况下也能正常工作,也就是说,所有深度学习的计算完全在手机上完成的。您是知道的,深度学习的计算量是不容小觑的。可这又是怎么做到的呢?

深度学习中的“深度”指的是神经网络中的层数。这个系统的良好性质是一组简单的可以训练的数学函数集合。深度神经网络适用于很多机器学习风格。

一步一步来,循序渐进

比如你给输入一张猫的图片,输出是人工标记的猫图片,这是监督学习。你把很多这样监督样本给系统,让它去学习近似的函数,如同从监督样本中观察出来的。

(1)找到图片中字符

还有一种是非监督学习,给出一个图片,你也不知道里面是啥,系统可以学习去寻找在很多图片中出现的模式。这样即使不认识图片,它也能识别所有的图片中都有一只猫。

当利用手机摄像头把图像读取进来后,Google即时翻译App要做的是,找到图片中需要翻译的字母。这款App首要要剔除诸如树木或汽车等背景对象,凸显出想要翻译的文字。在识辨图片中的文字过程中,这款App通过识别类似的、连续的色素块,来完成任务。如果某些像素颜色相似、位置彼此靠近,那么就可能是我们要找的字符,这些字符连接成一行,或许就是我们要找的一行文字(下图左1子图为原始图片,左2子图中红色方框框出的,即为标识出来的字符)。

增强学习也适用,这也是AlphaGo用到的技术。

图片 4

什么是深度学习?

图3 图片文字识别及翻译流程

深度网络模型是类似于大脑行为的原理。但不是具体模拟神经元如何工作。而是一种简单抽象的神经元版本。

(2)识别图片中字符

神经元有一组输入。真正神经元会有不同的强度的输入。在人工智能网中试图去学习到这些边上的权重,去加强不同输入的联系。真正神经元通过输入和强度的组合去决定要不要生成脉冲。

接下来,这款App就要识别出第(1)步定位的字符。这时就该让“深度学习”出马了。我们要用到卷积神经网络,并在字母和非字母集合上训练这个网络,这样做的目的在于,让它学习到不同字母的长得是啥模样(在图3左3子图中,瑞典语“Mörk”为识别出的字符)。

人工神经元不会产生脉冲,但会生成一个数值。神经元的函数就是通过非线性函数计算输入的加权乘以权重之和。

有意思的是,我们的训练集,并非都是那些方方正正的“纯洁的”字符集合,因为倘若不是这样,训练出来的识别器,就无法识别出在这个“并不纯洁”的大千世界中的字符。要知道,在真实的世界里,这些字符可能会因为反射、灰尘、污迹及各种稀奇古怪的破损,导致摄像头拍摄出来的字符“似是而非”。

典型的非线性函数就是整形线性单元,在90年代很多非线性函数是很平缓的sigmoid函数。但对于神经元来说产生的数值是不是更接近0对优化系统更有利。比如如果神经元有3个输入X1, X1, X3,权重分别是-0.21, 0.3, 0.7,计算就是

因此,我们构建了一个字符生成器,来伪造生成各式各样的阴影、扭曲字符。或许您要问,为什么你们不用真实世界中的图片字符,而是使用合成的数据集,来训练深度神经网络呢?

y = max(0, -.0.21*x1 + 0.3*x2 + 0.7*x3)。

嗯,其实原因很简单,我们很难找到足够多的、多种语言的、各种“光怪陆离”文字样本。当我们想要训练一个真正高效的,紧凑的神经网络时,更加困难的是,真实世界的字符样本非常难以精细控制。

为了决定图片到底是猫还是狗,这个图片要经过很多层。这些神经元根据输入来产生下一步。

图片 5

最低层的神经元会查看像素的小块。更高层的神经元会看下层神经元的输出再决定是否生产。

图4 本图显示的是我们用作训练的各种“脏”字母。这些“脏”字母包括有污垢的,有亮点的和有扭曲的等各类字符,但这些情况不能有太多,因为太多这样的非正常字符会让我们的神经网络“迷糊”。

这个模型也会错,比如说这里是猫,但事实上是狗。那么做错误决定的信号就会返回到系统中做调整,让剩余的模型在下一次查看图片时候,更可能输出狗。这就是神经网络的目标,通过模型小步调整边的权重让它更可能去得到正确答案。你可以通过所有样本去聚合,这样可以降低错误率。

(3)查询字典,翻译识别出的字符

学习算法其实比较简单,如下:

接下来,就是通过查字典,将这些识别出来的文字翻译为目标语言。在第(2)步的字符识别过程中,可能存在失准的地方,比如说,将“super”识别成“5uper”(也就是说,把字符S识别成5),但这也关系不大,在字典查询过程中,匹配允许存在一定的模糊性,“5uper”还是有可能被纠正为“super”(在图3左3子图中,将瑞典语的“Mörk”翻译成英语的“Dark”)。

选择随机训练样本“”,比如上面猫图和想要的输出标签,‘猫’

(4)重新渲染翻译的文字

运行神经网络,在输入上去查看它产生的。

最后一步,我们会重新渲染翻译出来的文字,让翻译文字和图片中原文的字体和颜色一致。之所以我们可以做到这点,是因为我们已经从图像中找到并识别出我们要想的字符,并已确切地知道它们在原始图片中的位置。于是,在获取字符周围的颜色后,就可以从原始图像中“剔除”原始字符。然后,我们在保持原始前景色不变的基础上,在原始文字位置上,添加翻译出来的字符,这样就可以达到,加工出的图像和翻译出来的文字犹如 “浑然天成”(对比一下:图3左1子图为原始图,左4子图为即时翻译系统的加工图,如果不了解内情,可能您都会认为,这是厂商发布的两种语言版本的广告呢)。

调整边的权重让最后输出更接近于“标签”上的。

将深度学习 “塞进”手机中

如何调整边的权重去保障输出更接近于标签呢?

如果要将上述4步即时视觉翻译的流程,放置到我们的数据中心(data center)上去完成,这看起来并不是什么太难的事情。

反向传播:积分的链式规则在决定高层神经网络中使用,如果选择是猫而不是狗呢?得想办法去调整高层的权重去让它更可以决定是“狗”。

但是,想一想,很多我们的手机用户,特别是那些仅在下载我们App时才仅此一次的用到我们数据中心的用户,他们的手机网络,要么慢如蜗牛,要么时断时续,加之智能手机又耗电得要命,让他们的手机将拍摄到的图像,发送到远程的Google数据中心上,在计算完毕后,再将识别结果发回手机,在上述场景下,是非常的不便!

根据箭头方向和权重去让它更可能说是狗。不要步子迈得太大因为这种表面很复杂,微调一小步让它下次更可能给出狗的结果。通过很多迭代以及查看例子,结果更可能会是狗。通过这个链式法则去理解底层参数改变是如何影响到输出的。说白了就是网络变化回路反馈到输入,使得整个模型更适应去选择“狗”。

那些低端手机的性能,可能要比一个稍微好点的笔记本电脑慢上50倍,而这个性能稍好的笔记本电脑,在计算性能上,和我们的数据中心相比,亦是差得何止十万八千里。而事实上,我们的数据中心,才是运行常规图像识别系统的平台。

真正神经网络通过亿级的参数在亿级的维度做调整,去理解输出网络。Google目前有能力如何快速搭建和训练这些海量数据上的模型,去解决实际问题,在快速去不同广泛的平台去部署生产模型。

那么,在没有和任何云计算平台相连的背景下,如何利用这些四处移动的手机摄像头捕获图像,并完成即时的视觉翻译呢?

神经网络的奇妙特性

答案很简单:自力更生,丰衣足食!我们开发了一个非常小型的神经网络,让它在计算能力有限的智能手机上,独立工作。在训练这个小型的神经网络时,我们做了若干个严格的限定,也就是说,我们设置了它所能处理的信息密度上限。因此,工作的挑战——如何生成最有效的训练数据,立马凸显出来了。

这就是说神经网络可以用在很多不同问题上。

在生成适用的训练数据上,我们可是费了老大劲的。例如,我们仅希望识别出小幅扭曲变型的字符。因为如果字符扭曲幅度过大,为了识别它,神经网络就会在过多不重要的事物上,使用过高的信息密度,这就大大增加深度神经网络的计算量。所以,我们花了很大功夫,做出了一套工具,这些工具极大地提升了迭代效率和可视化渲染效果。在数分钟内,我们可以改变我们的神经网络算法,让这个算法产生训练数据,并重新训练参数,最后给出可视化识别结果。

文本:万亿级别的英文和其他语言资料。从一个语言翻译到另一个,从短语到整句。