Google陳智峰分享:Google大腦近期工作進展介紹

ADVERTISEMENT

雷鋒網按:本文為Google大腦資深工程師陳智峰博士在才雲科技舉辦的“Kubernetes Meetup 中國 2017”活動中的分享,首發於Caicloud(),雷鋒網獲授權轉載。

陳智峰博士現為Google大腦資深工程師,擁有 12 年Google工作經驗,自 2014 年以來,他參與設計並實現了被廣泛應用於重要Google產品的新一代Google大腦機器學習開源系統 TensorFlow,併成功將 TensorFlow 用於Google翻譯之中,巨幅提高了Google翻譯的準確率。Google大腦是專注於深度學習的人工智慧的研究開發團隊。

陳智峰此次的演講通過介紹過去一年中Google大腦在基礎研究、系統開發和產品應用各方面的進展,與參會者探討了人工智慧發展的前景和可能的方向。

以下是 Google 陳智峰帶來的《Google大腦近期工作進展介紹》演講內容:

大家好,很高興跟大家分享Google大腦在過去一年的進展以及我的一些工作心得。

2014 年,Jeff Dean 帶領開發 TensorFlow(以下簡寫成“TF”),當時希望 TF 能夠支援更多容器,運用到更多領域,供更多開發研究人員使用。

2015 年下半年,Google開源 TF,整個團隊覺得這個項目做得不錯,於是在上面新增了更多效能,比如自動 differentiation,control flow 等,另外還增加了很多 operation。

最初,我們只是增加乘法、加法等一些簡單的資料運算。去年,我們又新增了一些相對複雜的演演算法,很多矩行分解的支援,完善檔案,增加教材式的檔案。

過去一年,我們也做了很多支援更多平臺的工作。到目前為止,TF 在 Github 上已經有 500 多個貢獻者,絕大多數都是 Google 以外的人,現在有超過 1 萬多的 commits,據統計下載量超過一百萬,在學校也很受歡迎。如果你去 Github 上找,你會發現很多以 TF 為基礎的 repository。

ADVERTISEMENT

還有就是釋出的一些基礎架構軟體,以及現成的模型,這些基本上都放在 models 下面(如下圖所示),任何人都可以下載檔案,做一些影象處理工作,以及自然語言處理,文字語法分析。

TF 主要目的是把深度學習的好處帶給大家,讓大家都享受深度學習帶來的好處。TF 不光是在單機上跑起來,我們也增加了對 mobile device 的支援,大概下半年的時候,iOS 上也可以跑 TF。大概 4 月份的時候,我們會釋出分散式版本,所以不僅可以在單機上跑 TF,也可以在 AWS 上執行起來。我們還做了一些跟開源生態圈整合的事情,例如支援像 HDFS、Spark、Windows 以及其它的作業系統。

目前,TF 也可以通過不同的前端語言進行使用:Python,Java 等等。

TF 1.0 裡面增加了穩定性和實用性,還會增加一個叫 XLA 的部分,可以把程式碼直接編譯成機器碼。

但是,有人也會疑惑,做這些東西會對現實有什麼影響嗎?Alpha Go 再厲害,它也只是個遊戲。同時,我們團隊的成員也會疑惑 TF 到底會給現實世界帶來什麼影響?

那麼接下來我們就來說一下 TF 帶來的現實影響,同時也給大家介紹一下 TF 的學習架構。

說到 TF 的用途,最熱門就是影象識別方向。

2011 年,機器進行影象識別的錯誤率為 26%,人工識別的錯誤率為 5%。到 2016 年,圖片識別的錯誤率降低到了 3%。

再講一個 TF 運用在醫療方向的例子。

目前全球有 4 億患者患糖尿病造成的視網膜病變,診斷過程很長。在印度、非洲等一些醫療設施相對不那麼先進的地方,病症診斷專業度不夠。Google大腦有個團隊,增加視網膜圖片掃描工具,專門用於掃描照片。讓人高興的是,現在已經可以通過影象識別技術來對病人進行診斷,而且準確率比醫務人員能達到的還要高。

ADVERTISEMENT

再回過頭來說,TF 對現實世界的具體影響。

比如,斯坦福的另外一個研究,基本上是用同樣的方法來診斷面板癌。首先在醫院拍一張照片,然後通過影象識別,來診斷是否面板癌。

TF 對現實世界的影響還表現在自然語言識別領域。

微軟在 11 月的時候宣佈,在類似語音識別領域,機器做得比人好。10 月份的時候,Google 宣佈,他們能大幅提高機器翻譯效果。

這張圖就是神經機器翻譯的圖。現在輸入一個英文的句子,假設句子中有四個單詞,然後這個模型就可以對句子進行分析,句子中每個詞表示一個向量,每個向量都會經過一個很複雜的數學模組,最後就可以得出四個項目,這四個項目通過計算延到右邊這個大的模組裡面,然後模組再翻譯成中文,最後一個字一個字地輸出成中文。右邊圖中每一個小盒子都代表了一個很複雜的數值計算,每個小盒子都有幾百萬的運算要求,產生一個詞都需要上億的運算。

早在 2014 年,就有很多學校在做類似研究。研究小組從頭到尾寫一個模型,這個模型難以描述,訓練起來非常困難,且計算量大。就單單一個模型來說,程式碼其實很簡單,但可能需要一個月的時間來進行訓練,於是需要轉到 TF 模型。

TF 的一個好處就是支援分散式,它可以有很多參數、計算機伺服器,能夠充分利用資源。相比用 C++,用 TensorFlow 程式碼量會少很多。

單個語種的翻譯,預測是 2-3 周的時間,每種語言大約超過 1 億個模型的訓練。Google 內部要支援 100 多種語言,每種語言之間都要實現互相翻譯。所以如果要實現所有模型,非常耗時間。一般來講,Google 進行翻譯,原理就是把不同語言先翻譯成英語,再將這些語言翻譯成其它語言。所以真實翻譯效果會差很多,而且成本也高。

所以有人就想了一個項目,叫做 Multilingual models。

Multilingual models 的思路非常簡單,用上述的數學模型即可。但是當你訓練這個模型的時候,要給它看不同語言的翻譯,英文到日文的,英文到韓文的,同時也要給它看日文到英文的,韓文到英文的。而這個時候,你的模型是不會增大的,它只是閱讀了不同語言的語料。

訓練這個模型的時候,一開始,我們只是抱著試一試的心態。但是在生產應用中我們驚喜地發現,這個模型不光能翻譯日文到英文,還可以直接翻譯韓文到日文,以及日文到韓文!之前我們完全沒有想到會有這樣的翻譯效果。

在其它應用場景裡面,也會有一些類似的現象。

回到剛才,Google 在做翻譯的時候,會把不同語言翻譯成英文,再把英文翻譯成你想要的語言,這樣的話,對於所有自然語言來講,英文就是表達的中介語言。

上圖講述的就是,表述同一個意思的不同語言的句子,map 到一個二維空間上,然後發現很多語言都有共性遠遠大於它們之間存在的差異性。

比如說同樣一句話,不管是日語還是韓語,它表達的意思都在上圖 b 這個圈裡,這是一個比較有趣的現象。

通過“機器訓練”這個模型,聚集到一起,達到提高翻譯水平的效果。

然後 Google Brain 不光是做 TF,內部還要很大一部分人在做很前沿的研究。

其實不管是影象識別還是 sequence modeling,其實它的核心概念都可以追溯到十幾二十年前。

影象識別的核心可以追溯到 1999 年乃至更之前,機器翻譯則可以追溯到 1997 年的 LSTM 甚至更早,一直到 GPU 出現,令這些模型計算更快,模型的效果才顯現出來。

當然,現在的技術不能解決所有的問題,有些思路還在被探索開發。

剛才講的Google翻譯模型,它們對於人的大腦來說是十分小的。Google 的翻譯大概是 2 億 5 千萬個參數。但是人大概有 100 倍乃至 1000 倍的神經元。所以 Google Brain 認為,如果你給它更大的模型,更多的資料,那麼效果肯定會更好。當然,一種 idea 如何整合為一個更大的模型其實還是受很多資訊的限制的。

我們可以有很多很多專家,比如說 2000 個專家,每個專家的特長領域都不同,如果我有問題的話,我要先去找哪個專家呢?我會一步一步來解決我的問題。然後具體呢,大家可以看一下,是一個highlight point。

比如我剛才講的Google翻譯的模型,現在釋出的版本大概是 2 億 5 千萬個參數。比如裡面有 2000 個 Export,這個模型翻譯的效果比我們現在釋出的模型要好很多。雖然現在你可以建一個 10 倍大(乃至 100 倍)的模型,當然也會有很多問題,這只是一個設想,就是說如果機器越多,模型越多,那麼效果就會越逼近人的智慧。

大家有興趣可以看下這些論文,不光是 Google Brain,很多實驗室也在往這個方向努力。

另外一個比較有趣的現象就是:learning to learn。如果你看過去幾年裡深度學習的“套路”,比如你要解決一個人工智慧問題,然後用深度學習的方法,必須要有三個要素:在這個領域有專長的專家;有大量的資料;以及很強的計算能力。對於很多公司來講,資料和計算能力可以購買。但是由於這個領域比較新,所以深度學習領域專家是比較少的。

那麼遇到的問題就是,能否找到專家的替代,或者說減少對這些專家的依賴?

Google 有兩個研究人員,他們寫了一篇論文,基本就是說,你構造一個機器學習模型,就像是大家平常寫一個程式一樣,類似於某個機器在玩遊戲的過程,終極目標就是:解決遇到的問題。

比如下一盤棋,那麼目標就是贏這盤棋。但是策略是什麼呢?這時候,你可以隨機生成很多很多這樣的程式,這些程式裡面,有的執行得好,有的執行得不好,你可以給不同的程式打分,對高分程式進行強化學習,指導搜尋過程,找到更好的模型。

這個說的就是,參數越多,表達能力就越強。

圖中最後四行是程式搜尋出來的模型,這個模型在這個測試中,錯誤率可以降低到 3.84%,去年最低的結果是 3.74%。

所以將來大家遇到問題,比如說你在下棋,你想贏,你就搜尋一個方案,這些方案要比你手動去設定模型要有效。整個機器學習領域非常快,幾年後這個方向或許就會有大的突破。

大家會覺得影象識別模型已經有了,為什麼還要去生成這樣的一個模型?你不光可以通過程式生成這樣一個影象識別模型。

比如你公司裡有很多資料庫,你可以 想象能不能產生一個meta program,這個 meta program 通過機器學習的方法產生 database 的 program。

深度學習非常依賴計算能力,深度學習模型涉及到很多數值運算。它有個比較大的特點:對述數值運算監控能力很高。核爆炸模擬的時候,要精確到 32 位甚至更高;但是在機器學習模型裡面,你會發現其實不需要精確到 32 位;16 位甚至 8 位就可以解決問題。

去年,Google內部在做 TPU 晶片,它就是 8 位或者 16 位的,而且價錢要比 CPU 或者 GPU 要便宜很多,低耗能,結構上也要簡單很多,速度也有提高。現在矽谷也在做這方面的事情,所以我覺得這兩年這方面將會有很大的突破。

最後給大家總結一下:大家可以感受到,這兩年人工智慧(特別是深度學習)的發展非常快,在各個應用領域都表現非凡,相信未來還有更多領域會用到它,期待它的表現。


» 雷鋒網

ADVERTISEMENT
ADVERTISEMENT