當前位置:
首頁 > 科技 > TensorFlow中國研發負責人李雙峰:TensorFlow從研究到實踐

TensorFlow中國研發負責人李雙峰:TensorFlow從研究到實踐

主講人:李雙峰 | TensorFlow中國研發負責人

整理:俞晶翔 張康

量子位 出品 | 公眾號 QbitAI

5月23日周三晚,北京大學「人工智慧前沿與產業趨勢」第十二講,本期TensorFlow中國研發負責人李雙峰,分享了深度學習的發展與應用、TensorFlow從研究到實踐的相關內容。

本期內容翔實、乾貨滿滿,量子位作為合作媒體,為大家帶來詳細課程筆記一份。

課程導師:雷鳴,天使投資人,百度創始七劍客之一,酷我音樂創始人,北京大學信科人工智慧創新中心主任,2000年獲得北京大學計算機碩士學位,2005年獲得斯坦福商學院MBA學位,同時也是「千人計劃」特聘專家。

主講嘉賓:李雙峰,TensorFlow中國研發負責人、Google 搜索架構技術總監。Google 中國最早期的工程師之一,目前在 Google 領導了涉及人工智慧、搜索架構和移動應用領域的多個項目。他負責 TensorFlow 中國研發團隊,並總體推動 TensorFlow 在中國的發展。

用深度學習解決最具挑戰性的問題

深度學習帶來機器學習的革命。我們看到「深度學習」這個詞在搜索中的熱度近年來快速提升。

在arXiv上的機器學習論文急劇增長,增長速度居然趕上了摩爾定律。

我們先看一個圖片分類的例子:給一張圖片,識別這張圖是一隻貓還是一條狗。它是多層的神經網路結構,裡面有很多的參數,經過很多的訓練之後,能識別出這張圖是一隻貓。

深度學習不僅僅能夠解決圖像識別的問題,它擁有非常強大的學習能力。把深度神經網路比喻成一個函數,這個函數非常強大,可以處理多種輸入和輸出,而深度學習演算法可以自動學習這個函數。

如果輸入一張照片,輸出一個圖像的標籤,比如說是「獅子」,這是一個圖片分類的問題。

如果輸入是一段音頻,輸出是一段文字,這就是語音識別的問題。

如果輸入是英文,輸出是法文,這就是機器翻譯的問題。

更進一步:輸入一張圖片,輸出文字的描述,這就是看圖說話的問題。

用相似的簡單方法,解決多個問題,這是產業界特別喜歡的東西,因為他們大大減少了工程方面的複雜度。

深度學習並不是全新的東西,但為什麼在過去的幾年當中帶來了極大的突破?

我們看到兩條線:一條是基於深度神經網路的解決方案,一條是基於其他機器學習方法。在八九十年代之前,神經網路就已經出現了,不過那個時候受限於計算能力,模型的規模比較小,所以它的表現不如一些經過優化過的其他機器學習方法,這樣就很難解決真實的大規模問題。

隨著計算能力的增加,可以看到深度學習解決問題的精度,已經超過了其他機器學習方法。

以圖片識別問題為例,在2011年的時候,它的錯誤率是26%,而人只有5%,所以這個時候離實用有非常大的距離。到2016年為止,它的錯誤率已經減少到了3%左右,深度學習在該領域呈現出非常驚人的能力,這就是為什麼深度學習在圖像識別領域吸引了產業界的大量關注。

我們看看深度學習如何幫助解決工程界的重大挑戰。

2008年美國工程院發布了21世紀的一系列重大挑戰,其中包括:便宜的太陽能,藥物工程優化,虛擬現實,和個性化學習等等。

我們也許還可以加上兩個:跨語言的自由交流,更通用的人工智慧系統。回到2008年,機器翻譯的提升遇到了瓶頸,而大家也覺得AI要戰勝圍棋高手,要需要很多年。

回頭來看,隨著深度學習的發展,很多領域都有一些重大突破,包括健康醫療、語言交流方面等方面。下面我們仔細看看深度學習如何推動解決這些重大挑戰。

提高城市基礎設施

交通是一個面臨重大挑戰的問題。Google的母公司Alphabet旗下有一個公司叫Waymo,專註於自動駕駛。他們已經做了大量的真實道路測試,以及模擬環境的測試。他們的車能夠識別路上各種移動的對象,以及交通燈。

我們發現自動駕駛離真實應用越來越近,有了無人駕駛之後,城市基礎設施會有一個巨大的突破。

跨語言的交流和信息流動

過去十年當中,Google在機器翻譯領域的工作在業界領先,但是之前都是基於短語統計的方式 ,質量提升遇到了瓶頸。

過去兩年,Google 推出了基於神經網路的機器翻譯技術(GNMT),大大提高了翻譯質量。在多個語言的質量評估上,平均質量提高50%到80%以上,這超過了過去十年的工作。在若干語言的翻譯上,機器翻譯已經接近人類水平。這是促進人類溝通和交流的一個重要突破。

更重要的是,Google不僅把該技術的論文發表,而且開放了基於TensorFlow的源代碼。開發者使用這些代碼非常簡單,一兩百行代碼就可以做一些類似於GNMT的基於神經網路的機器翻譯系統。

這讓一些小公司也有能力做出不錯的機器翻譯系統。比如歐洲某個公司,之前是傳統翻譯公司,但是擁有很多翻譯數據,基於這些開源系統,很快就能做出很不錯的結果。

基於神經網路的機器翻譯還有一些非常有意思的特性,比如說,當我們把英文翻譯成日文,然後再翻譯回英文的時候,傳統的方式可能在翻譯回英文這個階段會出現措辭與原文不太一樣,但基於神經網路的翻譯能保證部分還原性。

另外一個意義是在工程上。從工程的角度來說,希望用盡量簡單的方案,去解決複雜問題;而不是為每一種語言對的翻譯都設計不同的系統和模型。從這個角度來說,基於神經網路機器翻譯能夠帶來明顯優勢。

舉個例子,假設有很多訓練的數據,他們是一對一對的,從英文到韓文有對應,我們適當地做了一些編碼,也就是翻譯之前把語言標註了。那麼,同樣一個模型在解決不同語言之間的翻譯都會起作用,這樣語言之間可以通過統一的簡單方式來實現。

特別是對Google來說這很有價值,因為我們的目標是一百多種語言對之間相互翻譯,這是一個非常複雜的問題,對工程人員來說非常麻煩。用同一個基於神經網路的模型去翻譯不同的語言,使得在工程上工作量得到了大大簡化。

另外:假設我們學習到英文到韓文翻譯的同時,也學習英文到日文之間的翻譯,那麼基於神經網路的翻譯模型,就能夠自動學習到從日文到韓文之間的翻譯,這也證明神經網路翻譯具有更強的學習能力。

AI與醫療

醫療是Google AI研究投入的一個重要方向,因為我們認為醫療領域是AI應用一個非常重要的場景,也對造福人類具有深遠意義。

比如AI檢測眼科疾病:左邊是正常的視網膜照片,右邊是糖尿病可能導致的視網膜病變照片,它可能會導致糖尿病患者失明。如果我們能夠儘早發現這些病變,就可以使用較為廉價的藥物進行治療。

我們在一個權威的美國醫學雜誌上發表的研究表明:AI識別這些有病變的視網膜照片的精度,水平超過了眼科醫生的平均水平。

圖像識別是一類問題,包括剛才提到的視網膜照片監測問題,還有X光拍片的識別。

更難的問題是能不能基於已知的個人醫療信息,對整個信息做預測,比如預測未來需要住幾天院,需要吃什麼葯。這樣診斷的是比較難的問題。Google已經與斯坦福醫學院等好幾個學校的醫學機構合作,開展了相關工作,初步取得不錯的預測效果。

科學的發展

下一步看看科學的發展。

工具在人類歷史的發展中扮演重要角色,比如區分石器時代和青銅時代的重要依據是人類使用的工具。今天科學研究會做很多實驗,大家也製作了很多實驗儀器。

不過,有沒有一些工具,能夠幫助加速科學發現的進程呢?

這是我們推出TensorFlow這樣的開源機器學習平台的重要原因,希望它能夠極大地促進深度學習發展,促進用深度學習技術解決科學上的一些重大發現。

TensorFlow的目標是成為人人可用的機器學習平台,能夠幫助機器學習的研究者、開發者,去表達自己的想法,去進行探索性研究,去建立自己的系統,去實現基於具體場景的AI應用和產品。有了通用的平台,才能更好的促進行業交流,推動行業創新。Google內部大規模使用TensorFlow來做研究和產品,而業界可以基於Google的實踐和經驗。

大概在2015年底我們開源了TensorFlow,在過去兩年當中它的發展速度非常快,基本上現在一兩個月就有新的版本發布。比如,我們增加了更多的平台能力、更多的工具,以及更簡單的API。

到今天為止,全球有超過1100萬的TensorFlow下載量,這也說明了全球開發者的熱情。

深度學習有不同的模型,如何更好地訓練模型參數,需要不少機器學習的經驗,這對於普通公司而言,仍然有不小的挑戰。AutoML是一個很重要的話題,它的基本想法是能夠更加自動化地做機器學習。Google有一個相關工作,叫做Learning to Learn,目前取得不錯的進展。

今天,我們現在做機器學習的解決方案,需要機器學習方面的專家,需要數據,也需要很多的計算。

解決方案 = 機器學習專家 + 數據 + 計算

機器學習專家需要很多時間來培養,我們開始思考,能不能讓更多的計算能力來解決人才的缺口問題?那麼:

解決方案 = 數據 + 100倍的計算

我們使用強化學習的方式來搜索神經網路結構:以一定概率產生一些模型,訓練若干小時,然後對生成的幾個模型在測試集上做評估,並利用模型的損失作為強化學習的信號,促進下一次迭代時選擇更好的模型。

這張圖是通過神經網路搜索找到的模型結構,模型結構看起來很複雜,讓人很難以理解,它並沒有人類設計的模型那麼有層次化,並不直觀。不過實際測試的效果卻非常好,差不多比目前人類所找到的模型都要好。

機器學習專家在過去的好多年中做了很多研究,手工設計了不同的精巧的模型,這些模型會平衡運算的複雜度以及模型精度。

如果我們追求比較高的精度,那麼運算量更大,比如ResNet;如果模型比較簡單,比如Google的MobileNet,精度會低一點,但運算量小,很適合用在移動設備上;中間也有一系列計算和精度適中的模型。在這些年的發展過程中,頂尖的機器學習專家一直在基於前人成果不停地做結構優化。

通過AutoML所得到的新模型,比人類的多年研究成果都要好。在同樣精度的情況下可以做到計算量更小一點,而在同樣的計算量下精度更好。Google通過AutoML學習到的模型也公布了,叫做NASNet。

這是一個鼓舞人心的開局,讓我們看到AutoML的巨大前景。

AutoML的工作也為計算帶來了更大的挑戰。不過計算還有很大的可提升空間,我們可以針對深度學習做一些定製化的優化。

比如傳統CPU上的運算講究精度,而進行深度學習時,我們可以丟棄一些精度要求,讓運算更快一些。

另一方面,我們發現神經網路運算主要是矩陣運算,這樣就可以設計一些特別的硬體來加速矩陣運算。

比如Google針對深度學習,特別設計了新的硬體TPU。第一代TPU只能做一些推理的工作,第二代就既能推理又能訓練,而今年5月份Google I/O推出的第三代TPU,計算速度比第二代又快了8倍,計算能力不斷地在提升。

我們也把TPU的能力通過Google雲平台開放出來,給產業界和學術界使用。特別是,我們開放了TensorFlow Research Cloud,有許多TPU,免費開放給頂級的研究學者使用,共同來推動開放的機器學習研究。大家可以通過g.co/tpusignup申請。

總結上面所講的,深度神經網路和機器學習已經帶來了非常大的突破。我們可以考慮如何用深度神經網路,幫助解決世界上的一些重大挑戰。

基於TensorFlow的應用

第二部分,我們來談談基於TensorFlow的應用。

AI領域一個很重大的突破,就是AlphaGo戰勝人類頂尖圍棋選手,之前大家普遍認為這還需要多年。DeepMind的AlphaGo也是基於TensorFlow實現的,早期版本使用了大量的TPU,需要大量的計算。

初始版本的AlphaGo需要人類的經驗,比如以歷史上的圍棋棋譜作為輸入,但是最後的AlphaGo Zero並不需要人類經驗就能自我學習。

AlphaGo的工作也發表了論文,我們看到有國內公司基於公開論文,基於TensorFlow,很快就重現了高水平的圍棋系統。

這很好地說明了TensorFlow的意義,有了這樣的開放平台,全球的研究者和開發者都能很方便交流,快速提高機器學習的水平,並且能夠基於前人的優秀成果,快速開發出新的產品和系統。

自動駕駛是另一例子,利用TensorFlow可以自動識別移動中的人和物體,包括交通燈。

科學發展史當中,天文學有很多非常有挑戰的問題。如何在浩瀚的星空當中,發現有意思的信號,比如尋找一個像地球一樣的行星,圍繞像太陽一樣的恆星轉,這是一件非常有挑戰的事情。

天文學家利用基於TensorFlow的深度學習技術,在太空的大量信號中搜索到類似地球的行星,叫做Kepler-90i,這個是迄今為止發現的第八個。

農業方面,荷蘭的養殖場監測奶牛的行為和身體數據,使用TensorFlow來分析奶牛健康狀況,比如是否運動,是否生病等等。

巴西亞馬遜叢林的護林人員,使用TensorFlow來識別叢林中的聲音,來判斷是否有盜伐者。

在非洲,開發者使用 TensorFlow 製作出判斷植物是否生病的手機應用,只要對植物進行拍照,就能進行鑒定。

Google開源了基於TensorFlow的Magenta項目。一個功能是能夠自動生成音樂,你輸入一個音符,程序能夠建議下一個音符。

在藝術和文化領域,你可以拍一個照片,程序能找出和你相似的藝術照片。

谷歌翻譯可以在沒有聯網的情況下實時進行翻譯。有這樣一個上面印有「Milk」的包裝盒,你只要打開谷歌翻譯並用手機對準它,谷歌翻譯就能自動識別文字,自動翻譯出「牛奶」,並把翻譯的結果貼在原來這個照片上。這樣的例子對於出國旅遊者非常實用。

Google的大量產品使用了TensorFlow。比如在語音方面,包括語言的識別和合成,像DeepMind發布的語音合成演算法WaveNet,合成的效果非常好。對人機對話,Google I/O發布了AI打電話預定的Demo,叫做Google Duplex。

視覺方面,Google Photos能自動把所有照片做分析,識別裡面的人和物體,自動得到一些標籤,你可以直接搜索這些照片,不再需要手動加標籤。還有Google的Pixel系列手機,拍照模式中,自動把前景突出一些,背景模糊化處理。

這就是機器學習帶來的產品的突破。

在機器人領域,可以使用TensorFlow讓四腳機器人學習如何站立和平衡。

最後,還能使用TensorFlow來幫助Google數據中心做能耗優化。當機器學習控制的開關開啟後,能耗明顯降低,而一旦關閉,能耗快速上升。

TensorFlow基礎

第三部分,講一講TensorFlow的一些基礎知識。

TensorFlow背景

機器學習越來越複雜,構造的網路也越來越複雜,作為研究者,如何管理這種複雜度是一個很大的挑戰。比如Inception v3模型,有2500萬個參數。

模型越複雜,對計算要求就越高,需要大量的計算,往往不是一台計算機就能滿足,需要做很多分散式的計算,那分散式計算怎麼去管理,這是一個難題。

更進一步,傳統的機器學習運算都發生在伺服器端,而現在越來越多的計算在手機端或者是在設備端,怎麼去管理這些多元的設備和異構的系統,是一個挑戰。

我們希望TensorFlow能夠幫助管理這些複雜度,讓研究者專註做研究,讓做產品的專註做產品。

TensorFlow是一個開源的軟體平台,它的目標是促進人人可用的機器學習,推動機器學習的發展。

一方面,TensorFlow希望快速地幫助大家去嘗試一些新的想法,進行前沿探索。另一方面,也希望非常靈活,既能滿足研究的需求,也能滿足產業界做大規模產品的需求。面對多元的需求,怎麼讓大家能夠用同一個框架來表達自己的想法,這是TensorFlow的重要設計目標。

研究可能會是小規模的,但在做產品的時候,可能涉及到成百上千的伺服器,怎麼去管理這些分散式計算,TensorFlow需要有很好的支持。

一開始設計人員就把這些因素都考慮進去,最重要的原因是,TensorFlow實際上是配合Google內部的產品需求設計的,經歷過Google大量產品和團隊的大規模考驗。在它開放之前還有一個內部版本叫做DisBelief,我們總結了DisBelief的經驗,做了新的版本,並且在大量的項目中經過真實的驗證,也根據產品的真實需求在做一些新的特性。

Google Brain有很多研究人員,他們不斷發表論文,同時他們的研究工作也會轉化成產品。大家都用TensorFlow這樣的語言去表達,就極大地促進了研究成果的轉換。

到目前為止,github上TensorFlow項目的提交已經超過3萬次,超過1400多個貢獻者,6900多個pull request。

TensorFlow架構

TensorFlow提供了一個完整的機器學習工具集。下面我們來整體看看TensorFlow的架構。

TensorFlow有一個分散式執行引擎,可以讓TensorFlow程序運行在不同硬體平台上,比如CPU、GPU、TPU,移動端的一些硬體如Android和iOS,以及各種異構的一些硬體。

執行引擎之上,有不同的前端語言的支持,最常用的是Python,也支持Java,C++等等。

前端之上,提供了一系列豐富的機器學習工具包。除了大家所知道的神經網路支持,還有決策樹,SVM,概率方法,隨機森林等等,很多是大家在各種機器學習競賽中常用的工具。

TensorFlow非常靈活,既有一些高層API,簡單易用,也有一些底層API,方便構造一些複雜的神經網路,比如,你可以基於一些基本的運算元去定義網路。

Keras是一個定義神經網路的高層API,在社區中很流行,TensorFlow對Keras有非常好的支持。

進一步,我們也封裝了Estimator系列API,你可以定製訓練和評估函數,這些Estimator可以高效地分散式執行,和TensorBoard以及TensorFlow Serving有很好的集成。

最上層,有一些預定好的Estimator,開箱即用。

TensorFlow提供了全面的工具鏈,比如TensorBoard可以讓你非常容易去展示Embedding,多層次呈現複雜的模型結構,以及展示機器學習過程中的性能數據。

它支持很多平台,比如CPU,GPU,TPU,iOS,Android,以及樹莓派等嵌入式硬體。

支持的語言包括Python,C++,Java,Go,R等語言。最近,我們也發布了Javascript和Swift的支持。

很多學校和機構都發布了TensorFlow課程,比如北京大學,中科大等學校就開設了TensorFlow相關課程,國外頂尖大學比如斯坦福、伯克利等,在線教育機構比如Udacity,Coursera、DeepLearning.ai上都有TensorFlow課程。我們也在支持教育部產學合作項目,支持高校開設機器學習課程,國內會有越來越多基於TensorFlow的原創課程。

TensorFlow APIs

下面講一下TensorFlow的API。

TensorFlow可以幫助用戶定義計算圖,圖代表了計算,圖的每個節點代表了某個計算或者狀態,而計算可以運行在任何設備上。數據隨著圖的邊流動。而圖可以用不同的程序語言比如Python來定義,並且這個計算圖可以被編譯和優化。通過這樣的設計,可以把圖的定義和實際計算過程分離開來。

TensorFlow可以讓你非常容易地表達線性回歸,可以使用LinearRegressor,這是封裝好的Estimator。深度神經網路同樣可以很方便的表達,比如使用DNNClassifier,你只需要說明每一個隱層的節點數。

TensorFlow可以自動執行梯度下降過程,實現反向傳播演算法。並且這些計算可以分布在多個設備上,這樣圖的執行是一個分散式的過程。

tf.layers是另一類API,可以對應到神經網路的層的概念,比如一個CNN網路,你有多個CONV層和多個MAX POOLING層,每一層都有一個對應的tf.layers.*函數,方便你把多層組織起來。這些封裝好的層包含了一些最佳工程實踐。

tf.keras

進一步,tf.keras是社區中非常流行的API。比如你想構造一個能夠自動去理解視頻,並且回答問題的玩具程序。你可以問:這個女孩在做什麼?程序回答:打包。問:這個女孩穿什麼顏色的T-shirt?程序回答:黑色。

你可能會構造一個網路來實現:左邊是視頻處理邏輯,使用InceptionV3來識別照片,然後加上TimeDistributed層來處理視頻信息,之上是LSTM層;右邊是Embedding來處理輸入的問題,然後加上LSTM,之後把兩個網路合併起來,再加上兩層的Dense。這就可以實現一個具有一定智能的程序,是不是很神奇?

使用tf.keras,你用幾十行程序就可以完成核心的代碼邏輯,比如InceptionV3的使用你只需要一行代碼。

Eager Execution (動態圖支持)

進一步,除了前面講的靜態圖的方式,我們還有動態圖的支持,叫做即刻執行(Eager Execution)。它可以減少一些冗餘的代碼,讓你的程序更加簡單,同時立即報錯。

當然,靜態圖有它的優勢,比如它允許我們提前做很多優化,不管是基於圖的優化還是編譯優化;可以部署到非Python的伺服器或者手機上;還可以大規模的分散式執行。

而即刻執行的優點是讓你快速迭代,方便debug。

好消息是,在TensorFlow當中,即刻執行和靜態圖執行可以非常容易的進行轉換,平衡了效率和易用性。

TensorFlow的高級知識

第四部分,我們來談談關於TensorFlow的高級知識。

TensorFlow Lite

TensorFlow Lite是為移動或嵌入式設備特別設計的輕量級機器學習庫,它更小,也更快。我們提供了工具,很方便的把TensorFlow模型轉換成TensorFlow Lite格式的模型,然後在移動端,提供了TensorFlow Lite解釋器去執行這些模型。

在Android上,我們利用了Android的NN API,利用硬體加速。Lite也對iOS有很好的支持。

TensorFlow.js

TensorFlow.js是最新公布的基於javascript的TensorFlow支持庫,它可以利用瀏覽器特性比如WebGL來加速。這意味著更進一步讓TensorFlow程序可以運行在不同的環境當中,讓AI無處不在。

比如我們可以用TensorFlow.js來實現吃豆人遊戲,電腦攝像頭捕捉你的頭像,來控制吃豆人的移動。這一切都運行在瀏覽器當中。

分散式TensorFlow

TensorFlow的分散式執行對於大規模的模型非常重要。TensorFlow 可以很方便地實現數據並行工。舉個例子:你可以寫一個Cluster的描述文件,分配哪些是計算資源「worker」,哪些是參數的伺服器「ps」,這樣可以在我們定義圖的時候可以把這些計算分配在不同的設備上,進行分散式的執行。

更進一步,谷歌支持了開源的Kubernetes項目,來管理大規模計算資源,它被業界廣泛採納,特別是一些雲平台。而為了更好地讓機器學習運行在大規模集群上,谷歌也帶頭推動了KubeFlow的項目,大家可以關注。

而在Benchmarks方面,谷歌也公開了測試的程序。我們可以看到TensorFlow系統的可擴展能力非常強,基本上機器的數量和能力是線性正相關的。

在最近一個月,公司也發布了一個MLPerf,便於大家公開地比較機器學習的性能,這樣可以推進產業的發展。

TF Hub

為了更好的促進模型共享,我們發布了TensorFlow Hub (TF Hub)。例如,一個人設計機器學習模型,他可以從Github中找到不同的模型,進行組合,從而形成更強大的能力。

我們可以看到,一個模塊包含了訓練好的權重和圖,這就是一個簡單的模型,我們可以將這個模型組裝,重用,或者再訓練。

目前我們已經公開了很多模型,包括圖像,語言相關等等,這些都需要大量的GPU訓練才能得到。開發者可以在這些基礎上,做一些遷移學習的工作,用很小的代價,就可以利用現有的模型幫助解決自己的問題。

tf.data

另外一個是關於提高機器學習的技巧,叫tf.data。舉個例子,在CPU上,訓練速度是很大的限制,但當我們加上GPU後,訓練速度就得到了極大的提升,但是CPU輸入變成了一個瓶頸。數據需要做一些轉換使得可以載入,進行訓練。

大家知道,計算機體系結構研究中一個主要的問題是如何加速並行化,而提高CPU和GPU的運行效率,是提高機器學習系統很重要的問題。而tf.data提供了一系列工具,幫助開發者更好的並行地輸入和處理數據。

更進一步,和TensorFlow 訓練相關的Packages/Features還有很多,例如Estimators, Feature Engineering, XLA, TensorFlow Serving等等,這些可以在很多行業上都可以得到方便的應用。

TFX

當構建一個真實的端到端的機器學習系統時,除了上面討論的核心機器學習演算法之外,還有大量相關係統需要構建,比如數據的獲取,數據的分析,模型部署,機器學習資源管理等等問題。

谷歌內部有一個大規模的系統TFX (TensorFlow Extended),它是基於TensorFlow的大規模部署的機器學習平台,相關論文已經發表在2017年的KDD。目前我們已經開源了一些重要的部件,更多的部件開源正在進展當中,做產業界的朋友可以關注下。

第五部分:TensorFlow在中國的發展

最後,談談TensorFlow在中國的發展。

基本上,我們看到中國領先的技術公司大都在使用TensorFlow,來解決多種多樣的問題,比如:廣告推薦、點擊預測,OCR,語音識別,自然語言理解等等。包括很多家知名公司,像京東,小米,網易,搜狗,360,新浪,聯想等等;也包括很多的創業公司,比如知乎,出門問問,雲知聲,Kika,流利說等等。

京東使用TensorFlow來進行包裝的OCR,應用到了圖像,語音和廣告等多個領域,並建立了高效的內部機器學習平台。

小米使用TensorFlow,並藉助Kubernetes來管理集群,建立分散式學習系統,來幫助小米內部和生態鏈業務。

網易使用了TensorFlow Lite來做文檔掃描應用,並用TensorFlow來做機器翻譯。

360使用了TensorFlow來進行短視頻的分析,也建立了相關內部機器學習平台。

還有一些研究機構,比如清華大學的朱軍老師,將貝葉斯網路和深度學習結合起來,開源了基於TensorFlow的系統,叫「珠算」。

另一個例子也是來自清華大學,開源了一些基於TensorFlow的知識圖譜工具。

在中國,TensorFlow社區活動非常豐富。比如,這是Jeff Dean和TensorFlow中國開發者視頻互動的場景。另一個是我們在重慶的一個活動,支持教育部產學合作協同育人項目,有上百位大學老師參加,我們希望培訓更多大學老師來教機器學習。

更多官方中文文檔,可以訪問:https://tensorflow.google.cn/

不久前,我們還開源了Google內部使用的兩天機器學習速成課程(MLCC),過去幾年大量Google工程師學習了該課程。大家可以訪問:https://developers.google.cn/machine-learning/crash-course/

你也可以加入TensorFlow中文社區,訪問tensorflowers.cn,和業界一起來學習和探討TensorFlow技術。

TensorFlow社區的基本理念是:開放,透明,參與。

我們希望盡量開放,所以發布了TensorFlow的開發路線圖,使技術更加透明化,增加社區人員的參與感,共同推動技術的發展。Google內部使用的Tensorlow也和外部也一樣,我們每周都在不斷同步。

在這個開放的社區里,不管是初學者,研究者還是產業界開發者,每個人都可以分享自己的問題,發布自己的代碼、數據和教程,幫助其他社區成員,組織線下技術小組聚會等等。更一步,可以申請成為谷歌開發者專家(GDE)榮譽稱號。

Q&A

TensorFlow作為一個機器學習的平台,那其在未來發展上,大概有哪些方向呢?

我們公開了Tensorlow開發路線圖,大家可以在下面網站找到:https://tensorflow.google.cn/community/roadmap。

另外,也可以加入相關興趣小組,給Tensorlow提出發展建議。

總結而言,我覺得有以下幾個方向:

1、 快。我們持續不斷地進行優化,更好的分散式執行,針對各種新的硬體進行優化,以及在移動端更快的執行,等等。

2、 簡單、可用性。追求效率,容易上手。一方面我們讓高層API更好用,讓Keras API和Eager Execution更好用。另一方面,我們提供更多的工具集,以及參考模型,便於開箱即用。

3、 移動性。移動方面我們發布了TensorFlow Lite,它所能支持的模型和性能在不斷提升當中。我們也發布了TensorFlow.js,進一步促進了無處不在的AI。

4、 完整性。我們發布了TensorFlow Hub,希望促進模型共享和重用。另一方面,Google內部大規模產品環境中所使用的TFX系統也在開源當中。我們希望進一步減少開發者構建端到端的完整的機器學習系統所遇到的挑戰。

5、推動機器學習的發展,共享,加速研究。我們很期待通過TensorFlow社區,大家一起協作,去解決世界上最難的問題,比如醫療等造福人類的重大問題。

基於TensorFlow這個平台,極大的降低了深度學習的難度,那麼是不是稍微懂技術的人,經過一些學習和打磨,就可以藉助這個平台做深度學習或者AI相關開發,還是說背後還需要很多工作才能成為這方面的人才?

首先這是TensorFlow的設計目標,讓儘可能多的人能用上深度學習技術,嘗試新的研究想法,做產品,解決難題。

這樣一方面可以推動深度學習技術的發展,加快很多方面的AI應用。而這些AI應用,更需要擁有廣闊背景的眾多開發者來一起推動。

另一方面,從簡單地用到一些模型,到比較專業的深度優化,還是有不少距離。如果你只是達到平均水平,付出可以比較少,但要達到更高水平的突破,還需要很多的經驗。

大家需要有一點工匠的精神,對問題的理解程度,參數的調節,數據的清洗和處理等等,這些都是需要積累的。

我們希望可以降低TensorFlow使用的難度,也提供一系列的工具集來輔助用戶,希望可以讓初級用戶更多的探索應用場景,而高級用戶可以做更多的前沿科技研究。

深度學習融入Google的每一個部門,那麼每一個部門都會因為AI產生效應嗎?有沒有什麼意想不到的效果?

我個人的感受是,加入了深度學習,確實帶來了很大的突破。像機器翻譯,語音,自然對話,圖片翻譯,搜索排序,廣告預估等等,Google的眾多產品都有深度學習的深刻影響。

機器學習,深度學習這些年發展的很快,從技術到應用,在未來幾年在哪些地方會有一些突破?

個人認為:無人駕駛領域,醫療診斷方面,還有,比如語言對話方面,讓人充滿期待。我個人更期待AI能推動人類重大問題上的發展,比如農業,環境,教育,跨語言的自由交流等等方面,希望可以藉助TensorFlow獲取突破的契機。

Google中怎麼平衡研究和產品,到底是誰在推動誰往前走?大家是做自己喜歡的課題呢還是由需求來驅動做一些實用的研究?

研究是基於真實的問題,而產品化緊密協作,把研究成果落實到產品上去,並且獲得真實世界的大量反饋,這是一個快速迭代的過程。研究和產品是比較緊密的結合過程,可以由真實問題的驅動去尋找解決方案。某種意義上,Google的工程師,混合了研究和產品的角色,既要研究問題,也要實現產品。

下期預告

下周三是創新工場技術副總裁、AI工程院副院長王詠剛老師授課。

感興趣的小夥伴可以添加量子位小助手7:qbitbot7,備註「北大」,通過後可進入課程活動群,獲取每期課程信息,與其他小夥伴互動交流。

祝大家聽課愉快~

學習資料


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

AI發來賀電,您的2333號奶牛已進入戀愛時節

TAG:量子位 |