Google翻譯是如何把深度學習「塞進」手機的?

2020-12-11 CSDN技術社區

今天(2015年7月29日),我們發布了Google翻譯手機App,現在這款App可支持20多種語言的即時視覺翻譯(Visual Translation),也就是說,您可拿著手機攝像頭對著實物,實物中的文字就可被即時識別出,並被翻譯成目標語言。這項技術就是Google翻譯中最新增加的特性——字鏡頭(Word Lens),如圖1所示。 


圖 1  Google翻譯手機版(圖片來源:Google)

因此,倘若下一次您有機會蒞臨一個陌生國家的城市,例如布拉格(Prague,捷克共和國首都和最大城市),當您飢腸轆轆地邁進一家飯館時,再也不用擔心看不懂那「宛如天書般」外文菜單了,因為此刻我們這款App可以悄然地幫您化解點菜的尷尬。那麼,這款App是如何能夠快速識別這些新語言的?下面我就給大家說道說道這款App背後的事兒。

言簡意賅地說,我們的這款即時視覺翻譯App,用到了深度神經網絡(deep neural network,DNN)技術。

當年,我們字鏡頭(Word Lens)研究團隊加入Google這個大家庭時,我們非常興奮,因為這樣就有機會和Google深度學習領域的大牛們一起工作。在過去幾年裡,神經網絡猶如「磐涅重生」,重新喚起人們的極大關注,研究人員們亦不負眾望,在諸如圖像識別等領域取得不斐的成就。

就在五年前,如果您交給計算機一幅阿貓或阿狗的圖像,讓它識別,通常它會很作難——水平有限,貓狗難辨。但時過境遷,由於卷積神經網絡(convolutional neural network)技術的誕生,計算機不但可輕易分別出阿貓阿狗,它們甚至還可以分別出狗的不同品種,不管這狗是中國藏獒、德國牧羊犬,還是拉布拉多犬、西伯利亞雪橇犬,計算機都能分辨出個「子醜寅卯」來。


圖2 數碼迷幻藝術(圖片來源:Google DeepDream)

是的,現在計算機的威力,已經不限於「玩玩」數碼迷幻藝術(trippy art,參見例圖2)了。如果你下載了Google翻譯App的最新發布版,用之翻譯您看不懂的外文菜單,那背後為您服務就是深度神經網絡技術。

或許,您會不以為然,唔,這個…… 這個還好吧,Google已經把深度學習用得「爐火純青」了,再把這技術用在文字翻譯上,似乎在情理之中,意料之內。在人工智慧時代,這類演示好像已有不少了吧。

但是,您可能不知道的是,我們這款App最棒的地方在於,它可在不聯網的情況下也能正常工作,也就是說,所有深度學習的計算完全在手機上完成的。您是知道的,深度學習的計算量是不容小覷的。可這又是怎麼做到的呢?

一步一步來,循序漸進

(1)找到圖片中字符

當利用手機攝像頭把圖像讀取進來後,Google即時翻譯App要做的是,找到圖片中需要翻譯的字母。這款App首要要剔除諸如樹木或汽車等背景對象,凸顯出想要翻譯的文字。在識辨圖片中的文字過程中,這款App通過識別類似的、連續的色素塊,來完成任務。如果某些像素顏色相似、位置彼此靠近,那麼就可能是我們要找的字符,這些字符連接成一行,或許就是我們要找的一行文字(下圖左1子圖為原始圖片,左2子圖中紅色方框框出的,即為標識出來的字符)。


 圖3 圖片文字識別及翻譯流程

(2)識別圖片中字符

接下來,這款App就要識別出第(1)步定位的字符。這時就該讓「深度學習」出馬了。我們要用到卷積神經網絡,並在字母和非字母集合上訓練這個網絡,這樣做的目的在於,讓它學習到不同字母的長得是啥模樣(在圖3左3子圖中,瑞典語「Mörk」為識別出的字符)。

有意思的是,我們的訓練集,並非都是那些方方正正的「純潔的」字符集合,因為倘若不是這樣,訓練出來的識別器,就無法識別出在這個「並不純潔」的大千世界中的字符。要知道,在真實的世界裡,這些字符可能會因為反射、灰塵、汙跡及各種稀奇古怪的破損,導致攝像頭拍攝出來的字符「似是而非」。

因此,我們構建了一個字符生成器,來偽造生成各式各樣的陰影、扭曲字符。或許您要問,為什麼你們不用真實世界中的圖片字符,而是使用合成的數據集,來訓練深度神經網絡呢?

嗯,其實原因很簡單,我們很難找到足夠多的、多種語言的、各種「光怪陸離」文字樣本。當我們想要訓練一個真正高效的,緊湊的神經網絡時,更加困難的是,真實世界的字符樣本非常難以精細控制。


圖4 本圖顯示的是我們用作訓練的各種「髒」字母。這些「髒」字母包括有汙垢的,有亮點的和有扭曲的等各類字符,但這些情況不能有太多,因為太多這樣的非正常字符會讓我們的神經網絡「迷糊」。

(3)查詢字典,翻譯識別出的字符

接下來,就是通過查字典,將這些識別出來的文字翻譯為目標語言。在第(2)步的字符識別過程中,可能存在失準的地方,比如說,將「super」識別成「5uper」(也就是說,把字符S識別成5),但這也關係不大,在字典查詢過程中,匹配允許存在一定的模糊性,「5uper」還是有可能被糾正為「super」(在圖3左3子圖中,將瑞典語的「Mörk」翻譯成英語的「Dark」)。

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

最後一步,我們會重新渲染翻譯出來的文字,讓翻譯文字和圖片中原文的字體和顏色一致。之所以我們可以做到這點,是因為我們已經從圖像中找到並識別出我們要想的字符,並已確切地知道它們在原始圖片中的位置。於是,在獲取字符周圍的顏色後,就可以從原始圖像中「剔除」原始字符。然後,我們在保持原始前景色不變的基礎上,在原始文字位置上,添加翻譯出來的字符,這樣就可以達到,加工出的圖像和翻譯出來的文字猶如 「渾然天成」(對比一下:圖3左1子圖為原始圖,左4子圖為即時翻譯系統的加工圖,如果不了解內情,可能您都會認為,這是廠商發布的兩種語言版本的廣告呢)。

將深度學習 「塞進」手機中

如果要將上述4步即時視覺翻譯的流程,放置到我們的數據中心(data center)上去完成,這看起來並不是什麼太難的事情。

但是,想一想,很多我們的手機用戶,特別是那些僅在下載我們App時才僅此一次的用到我們數據中心的用戶,他們的手機網絡,要麼慢如蝸牛,要麼時斷時續,加之智慧型手機又耗電得要命,讓他們的手機將拍攝到的圖像,發送到遠程的Google數據中心上,在計算完畢後,再將識別結果發回手機,在上述場景下,是非常的不便!

那些低端手機的性能,可能要比一個稍微好點的筆記本電腦慢上50倍,而這個性能稍好的筆記本電腦,在計算性能上,和我們的數據中心相比,亦是差得何止十萬八千裡。而事實上,我們的數據中心,才是運行常規圖像識別系統的平臺。

那麼,在沒有和任何雲計算平臺相連的背景下,如何利用這些四處移動的手機攝像頭捕獲圖像,並完成即時的視覺翻譯呢?

答案很簡單:自力更生,豐衣足食!我們開發了一個非常小型的神經網絡,讓它在計算能力有限的智慧型手機上,獨立工作。在訓練這個小型的神經網絡時,我們做了若干個嚴格的限定,也就是說,我們設置了它所能處理的信息密度上限。因此,工作的挑戰——如何生成最有效的訓練數據,立馬凸顯出來了。

在生成適用的訓練數據上,我們可是費了老大勁的。例如,我們僅希望識別出小幅扭曲變型的字符。因為如果字符扭曲幅度過大,為了識別它,神經網絡就會在過多不重要的事物上,使用過高的信息密度,這就大大增加深度神經網絡的計算量。所以,我們花了很大功夫,做出了一套工具,這些工具極大地提升了迭代效率和可視化渲染效果。在數分鐘內,我們可以改變我們的神經網絡算法,讓這個算法產生訓練數據,並重新訓練參數,最後給出可視化識別結果。

從這裡,我們可以找到,哪些字符識別失敗,並及時查明原因。在這點上,我們故意將訓練數據過度扭曲,這樣一來,字符「$」 一開始可能被識別為「S」。但這沒有關係,我們能夠快速地確認這種「失誤」何在,然後調整數據扭曲參數,來降低「失誤率」。這就有點像,在現實生活中,我們要徒手畫一副畫,剛開始,我們畫得可能很不像,但我們不斷地修正,每次重畫,都能進步一點點,最後您會看到,中途所有的不完善,都是為了畫出一個完美的畫面。

為了達到翻譯的即時性,我們也做了大量的優化工作,而且優化和反覆調試的工作量很大。此外,為了改善計算性能,在某些數學運算上,也需要手工重度調優。我們充分利用SIMD(Single instruction, multiple data,單指令流多數據流),這是一種數據並行的模式,來挖掘智能多核手機的並行潛能。同時,我們還優化矩陣乘法,提高矩陣運算的局部性,使之在各級緩存(Cache)中,提高Cache的命中率。

最後,如您所見,我們終於讓這個基於深度神經網絡的翻譯系統在手機上跑起來了,而翻譯的效果比老版翻譯系統高出一大截,而在運行速度上,一點也不遜色於老版翻譯系統。

有時候,新技術看起來非常抽象,找到諸如卷積神經網絡這類新技術的用武之地,並不總是那麼顯而易見。打破語言障礙——做一款棒棒的、多語言的即時視覺翻譯系統,我想,這應是一個偉大的應用案例。

原文來自:Google Research Blog

譯者介紹:張玉宏,博士。2012年畢業於電子科技大學,現執教於河南工業大學。中國計算機協會(CCF)會員,ACM/IEEE會員。主要研究方向為高性能計算、生物信息學,主編有《Java從入門到精通》一書。

相關焦點

  • 深度學習應用大盤點
    第一種理解大大低估了深度學習構建應用的種類,而後者又高估了它的能力,因而忽略了那些不是一般人工智慧應用的更現實和務實的應用。最好最自然的理解應該是從人機互動角度來看待深度學習應用。深度學習系統似乎具備近似於生物大腦的能力,因此,它們可以非常高效地應用於增強人類或者動物已經可以執行的任務上。
  • 新的Google翻譯太牛了,還需要人工翻譯嗎?
    最近在翻譯錢恩平博士《風險均衡策略》一書,有人將其翻譯為風險平價,經過一段的翻譯工作,我絕對還是風險均衡更好,更貼近其本質。
  • Google 翻譯更新了
    Google 翻譯可讓手機變成一個強大的翻譯工具。
  • 深度學習 | 介紹深度學習如何配置帶GPU電腦環境
    最近開始學習深度學習(Deep Learning)技術,特別是google的Tensorflow深度學習包開源後,深度學習已經成為大數據領域的重大計算革命
  • Google在Udacity推出機器深度學習課程 免費分享機器學習研究成果
    Google 於昨天宣布將在 MOOC 供應商Udacity上推出機器深度學習課程。
  • 谷歌首席科學家:Google的深度學習強在哪?
    深度學習一開始從少數的產品組開始,一段時間後反響很好,能解決之前不能做的,就更多的團隊開始採納。使用深度學習的產品有:安卓,Apps,藥品發現,Gmail,圖片理解,地圖,自然語言,圖片,機器人,語音翻譯等。
  • 沒有GPU的同學想學習深度學習,可以試試Google Colab Notebooks!
    背景很多同學想學習深度學習,但是無奈自己的機器老舊,要麼顯卡老舊,要麼不是Nvidia的顯卡,有的甚至沒有顯卡。沒有GPU加速,深度學習還怎麼玩?乖乖,怎麼能夠抵擋我成為一名學霸呢。學霸 vs 學渣辦法總比困難多,來薅一下資本主義羊毛吧,那就是google的Colab notebooks。jupyter notebook想必大家不陌生,如果你不知道的話,還搞啥深度學習!!!而這個Colab notebooks就原生支持它。這個很久就知道了,一直也沒時間去整理,現在整理一下。
  • 深度揭秘Google翻譯:人工智慧的覺醒
    它每月用戶就超出5億名,平均每天都要翻譯1400億個單詞。Google翻譯除了手機應用之外也是和Gmail、Chrome和其他Google集成服務包中的性能之一,從來沒出過岔子。知道最近難民危機問題發生,Pichai才出面解釋了Google翻譯在地理政治方面的重要性——在難民問題發生的那段時間裡,Google翻譯的阿拉伯語與德語互譯的使用率驟然上升了5倍。
  • 學習工具|Google翻譯App更新了!中國用戶這次可以使用了
    從今天起,上海中高考準備推出一個版塊,這個版塊叫做學習工具,小編是一個APP重度使用者,會遇到很多設計優秀的APP
  • 谷歌翻譯要大逆轉 深度融合學習功能
    (原標題:谷歌翻譯要大逆轉 深度融合學習功能) 【
  • 深度學習應用於機器翻譯的魔力
    但我們都知道,高中生一直在使用谷歌翻譯...嗯... 協助他們的西班牙語作業15年。這不是舊聞嗎?事實證明,在過去兩年中,深度學習完全改寫了我們的機器翻譯方法。對語言翻譯幾乎一無所知的深度學習研究人員正在將相對簡單的機器學習解決方案放在一起,這些解決方案擊敗了世界上最好的專家構建的語言翻譯系統。
  • Google 新機器翻譯技術大幅減少錯誤率
    現在,Google宣布了利用最新技術大幅改進翻譯質量的深度學習模型 Google Neural Machine Translation system (GNMT)(預印本)。新的技術減少了翻譯錯誤率最高達87%。GNMT以仿造人腦神經網絡的方式處理數據,相比PBMT,它的英中翻譯質量改進了58%,英語到西班牙翻譯質量提高了87%。
  • 如何搭建你自己的「深度學習」機器?
    目前,我們已經可以很快的處理超大計算量的問題——這多虧了GPU,GPU最初就是用於快速生成高解析度計算機圖像,由於它的計算效率使得其非常適合用於深度學習算法。原先需要用好幾周才能分析出來的結果,現在幾天時間就能完成。雖然現在的計算機都有GPU,但是並不是所有的GPU都適合用來進行深度學習。
  • 深度學習下一步如何發展?
    因此當前深度學習的一個前沿就是如何從無標註的數據裡面進行學習。現在已經有相關的研究工作,包括最近比較火的生成式對抗網絡,以及我們自己提出的對偶學習。生成式對抗網絡最初提出的時候,主要是對於圖像的生成,現在很多人把他應用到各個不同的問題上,包括自然語言理解,比如說最近我們有一個工作,就是把這種思想應用到機器翻譯裡面,能夠很大幅度的提高機器翻譯的準確度。針對如何從無標註的數據進行學習,我們組裡面提出了一個新思路,叫做對偶學習。對偶學習的思路和前面生成式對抗學習會非常不一樣。
  • Google翻譯app更新了!這是最好用的翻譯軟體,沒有之一
    Google 翻譯可讓手機變成一個強大的翻譯工具。無論是學習、商務溝通或異國旅行,即使不懂外語,僅需一部裝有 Google 翻譯的智慧型手機,用戶便可跨越語言障礙,輕鬆翻閱菜單、辨識路標、甚至與本地居民暢快交談。3月29日,Google 翻譯在 Android 和 iOS上更新至 5.8 版本。
  • 如何用 Python 腳本批量下載 Google 圖像?
    問題《如何用Python和深度神經網絡識別圖像?》一文中,我給你展示了如何用深度學習,教電腦區分機器人瓦力和哆啦a夢。很快就有用戶在後臺留言,問:老師,我想自己訓練一個圖片分類器,到哪裡去批量下載帶標註的訓練圖像呢?說說我寫教程的時候,是如何找圖片的吧。最大的圖片庫,當然就是 Google 了。
  • 深度體驗Google翻譯APP 「文曲星時代」結束
    本期的實驗室欄目,中國網科技編輯將帶大家深度體驗一番這款「智能」翻譯應用的強大。  功能測評:即時相機翻譯+實時對話=你的私人翻譯助理  ●離線翻譯功能 (Offline Translate)  據谷歌介紹,離線翻譯功能可讓用戶提前下載好語言翻譯包,在無網絡接入情況下完成場景翻譯任務。
  • Google翻譯App更新:拍照就可翻譯!
    今天,Google翻譯App更新了!8年來,用戶可通過translate.google.cn訪問網頁版的Google翻譯,現在用戶還可下載Android和iOS版本應用。
  • 如何評價Google神經機器翻譯(GNMT)系統?
    其中,Google Translate的核心技術 「統計機器翻譯」其基本思想是通過對大量平行語料進行統計分析、構建統計翻譯模型、進而使用此模型進行翻譯。簡單來說,Google Translate 在生成譯文時,會在大量人工翻譯的文檔中查找各種模型,進行合理的猜測,從而得到恰當的翻譯。
  • 深度:回顧Google神經網絡機器翻譯上線歷程
    筆者借這篇文章,幫大家梳理一下機器翻譯的發展歷程,以及Google這次新系統的一些亮點。NMT| 機器翻譯的發展史機器翻譯,即把某一種源語言(比如英文)翻譯到最恰當的目標語言(比如中文)。還在幾年前,機器翻譯界的主流方法都是Phrased-Based Machine Translation (PBMT),Google翻譯使用的也是基於這個框架的算法。