TensorFlow中國研發負責人李雙峰演講實錄:TensorFlow從研究到實踐
5 月 23 日周三晚,TensorFlow 中國研發負責人、Google 搜索架構技術總監李雙峰受邀參與北京大學“人工智能前沿與產業趨勢”系列座談會,分享了深度學習的發展與應用、TensorFlow 從研究到實踐的相關內容。
感謝作為北京大學“人工智能前沿與產業趨勢”系列座談會合作媒體的量子位旗下公眾號“吃瓜社”俞晶翔、張康對活動的記錄,演講嘉賓李雙峰也參與本文的聯合撰寫和修改。
主講嘉賓:李雙峰,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 的應用。
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 的一些基礎知識。
機器學習越來越復雜,構造的網絡也越來越復雜,作為研究者,如何管理這種復雜度是一個很大的挑戰。比如 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 程序運行在不同硬件平臺上,比如 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,多層次呈現復雜的模型結構,以及展示機器學習過程中的性能數據。
它支持很多移動平臺,比如 iOS,Android,以及樹莓派等嵌入式平臺。
支持的語言包括 Python,C++,Java,Go,R 等語言。最近,我們也發布了 JavaScript 和 Swift 的支持。
很多學校和機構都發布了 TensorFlow 課程,比如北京大學,中科大等學校就開設了 TensorFlow 相關課程,國外頂尖大學比如斯坦福、伯克利等,在線教育機構比如 Udacity,Coursera、DeepLearning.ai 上都有 TensorFlow 課程。我們也在支持教育部產學合作項目,支持高校開設機器學習課程,國內會有越來越多基於 TensorFlow 的原創課程。
下面講一下 TensorFlow 的 API。
TensorFlow 可以幫助用戶定義計算圖,圖代表了計算,圖的每個節點代表了某個計算或者狀態,而計算可以運行在任何設備上。數據隨著圖的邊流動。而圖可以用不同的程序語言比如 Python 來定義,並且這個計算圖可以被編譯和優化。通過這樣的設計,可以把圖的定義和實際計算過程分離開來。
TensorFlow 可以讓你非常容易地表達線性回歸,可以使用 LinearRegressor,這是封裝好的 Estimator。深度神經網絡同樣可以很方便的表達,比如使用 DNNClassifier,你只需要說明每一個隱層的節點數。
TensorFlow 可以自動執行梯度下降過程,實現反向傳播算法。並且這些計算可以分布在多個設備上,這樣圖的執行是一個分布式的過程。
?是另一類 API,可以對應到神經網絡的層的概念,比如一個 CNN 網絡,你有多個 CONV 層和多個 MAX POOLING 層,每一層都有一個對應的函數,方便你把多層組織起來。這些封裝好的層包含了一些最佳工程實踐。
進一步,?是社區中非常流行的 API。比如你想構造一個能夠自動去理解視頻,並且回答問題的玩具程序。你可以問:這個女孩在做什麽?程序回答:打包。問:這個女孩穿什麽顏色的 T-shirt?程序回答:黑色。
你可能會構造一個網絡來實現:左邊是視頻處理邏輯,使用 InceptionV3 來識別照片,然後加上 TimeDistributed 層來處理視頻信息,之上是 LSTM 層;右邊是 Embedding 來處理輸入的問題,然後加上 LSTM,之後把兩個網絡合並起來,再加上兩層的 Dense。這就可以實現一個具有一定智能的程序,是不是很神奇?
使用?,你用幾十行程序就可以完成核心的代碼邏輯,比如 InceptionV3 的使用你只需要一行代碼。
進一步,除了前面講的靜態圖的方式,我們還有動態圖的支持,叫做即刻執行(Eager Execution)。它可以減少一些冗余的代碼,讓你的程序更加簡單,同時立即報錯。
當然,靜態圖有它的優勢,比如它允許我們提前做很多優化,不管是基於圖的優化還是編譯優化;可以部署到非 Python 的服務器或者手機上;還可以大規模的分布式執行。
而即刻執行的優點是讓你快速叠代,方便 debug。
好消息是,在 TensorFlow 當中,即刻執行和靜態圖執行可以非常容易的進行轉換,平衡了效率和易用性。
第四部分,我們來談談關於 TensorFlow 的高級知識。
TensorFlow Lite 是為移動或嵌入式設備特別設計的輕量級機器學習庫,它更小,也更快。我們提供了工具,很方便的把 TensorFlow 模型轉換成 TensorFlow Lite 格式的模型,然後在移動端,提供了 TensorFlow Lite 解釋器去執行這些模型。
在 Android 上,我們利用了 Android 的 NN API,利用硬件加速。TensorFlow Lite 也對 iOS 有很好的支持。
TensorFlow.js 是最新公布的基於 JavaScript 的 TensorFlow 支持庫,它可以利用瀏覽器特性比如 WebGL 來加速計算。這意味著更進一步讓 TensorFlow 程序可以運行在不同的環境當中,讓 AI 無處不在。
比如我們可以用 TensorFlow.js 來實現吃豆人遊戲,電腦攝像頭捕捉你的頭像,來控制吃豆人的移動。這一切都運行在瀏覽器當中。
TensorFlow 的分布式執行對於大規模的模型非常重要。TensorFlow 可以很方便地實現數據並行工。舉個例子:你可以寫一個 Cluster 的描述文件,分配哪些是計算資源“worker”,哪些是參數的服務器“ps”,這樣可以在我們定義圖的時候可以把這些計算分配在不同的設備上,進行分布式的執行。
更進一步,谷歌支持了開源的 Kubernetes 項目,來管理大規模計算資源,它被業界廣泛采納,特別是一些雲平臺。而為了更好地讓機器學習運行在大規模集群上,谷歌也帶頭推動了 KubeFlow 的項目,大家可以關註。
而在 Benchmarks 方面,谷歌也公開了測試的程序。我們可以看到 TensorFlow 系統的可擴展能力非常強,基本上機器的數量和能力是線性正相關的。
在最近一個月,公司也發布了一個 MLPerf,便於大家公開地比較機器學習的性能,這樣可以推進產業的發展。
為了更好的促進模型共享,我們發布了 TensorFlow Hub (TF Hub)。例如,一個人設計機器學習模型,他可以從 GitHub 中找到不同的模型,進行組合,從而形成更強大的能力。
我們可以看到,一個模塊包含了訓練好的權重和圖,這就是一個簡單的模型,我們可以將這個模型組裝,重用,或者再訓練。
目前我們已經公開了很多模型,包括圖像,語言相關等等,這些都需要大量的 GPU 訓練才能得到。開發者可以在這些基礎上,做一些遷移學習的工作,用很小的代價,就可以利用現有的模型幫助解決自己的問題。
另外一個是關於提高機器學習的技巧,叫?。舉個例子,在 CPU 上,訓練速度是很大的限制,但當我們加上 GPU後,訓練速度就得到了極大的提升,但是 CPU 輸入變成了一個瓶頸。數據需要做一些轉換使得可以加載,進行訓練。
大家知道,計算機體系結構研究中一個主要的問題是如何加速並行化,而提高 CPU 和 GPU 的運行效率,是提高機器學習系統很重要的問題。而提供了一系列工具,幫助開發者更好的並行地輸入和處理數據。
更進一步,和 TensorFlow 訓練相關的 Packages/Features 還有很多,例如 Estimators, Feature Engineering, XLA, TensorFlow Serving 等等,這些可以在很多行業上都可以得到方便的應用。
當構建一個真實的端到端的機器學習系統時,除了上面討論的核心機器學習算法之外,還有大量相關系統需要構建,比如數據的獲取,數據的分析,模型部署,機器學習資源管理等等問題。
谷歌內部有一個大規模的系統 TFX (TensorFlow Extended) ,它是基於 TensorFlow 的大規模部署的機器學習平臺,相關論文已經發表在 2017 年的 KDD。目前我們已經開源了一些重要的部件,更多的部件開源正在進展當中,做產業界的朋友可以關註下。
最後,談談 TensorFlow 在中國的發展。
基本上,我們看到中國領先的技術公司大都在使用 TensorFlow,來解決多種多樣的問題,比如:廣告推薦、點擊預測,OCR,語音識別,自然語言理解等等。包括很多家知名公司,像京東,小米,網易,搜狗,360,新浪,聯想等等;也包括很多的創業公司,比如知乎,出門問問,雲知聲,Kika,流利說等等。
還有一些研究機構,比如清華大學的朱軍老師,將貝葉斯網絡和深度學習結合起來,開源了基於 TensorFlow 的系統,叫“珠算”。
另一個例子也是來自清華大學,開源了一些基於 TensorFlow 的知識圖譜工具。
在中國,TensorFlow 社區活動非常豐富。比如,這是三月底在谷歌北京辦公室舉辦的 TensorFlow 開發者峰會北京分會場活動,淩晨 1 點,Jeff Dean 和 TensorFlow 中國開發者視頻互動的場景:
另外還有我們在重慶的活動,支持教育部產學合作協同育人項目,有上百位大學老師參加,奧斯卡經典電影我們希望培訓更多大學老師來教機器學習等。
更多官方中文文檔,可以訪問:
https://tensorflow.google.cn/
不久前,我們還開源了 Google 內部使用的兩天機器學習速成課程(MLCC),過去幾年大量 Google 工程師學習了該課程。大家可以訪問:
https://developers.google.cn/machine-learning/crash-course/
另外,推薦 TensorFlow 微信公眾號,大家可以在微信上搜索“TensorFlow”找到。
你也可以加入 TensorFlow 中文社區,和業界一起來學習和探討 TensorFlow 技術,訪問:
https://www.tensorflowers.cn
TensorFlow 社區的基本理念是:開放,透明,參與。
我們希望盡量開放,所以發布了 TensorFlow 的開發路線圖,使技術更加透明化,增加社區人員的參與感,共同推動技術的發展。Google 內部使用的 Tensorlow 也和外部也一樣,我們每周都在不斷同步。
在這個開放的社區裏,不管是初學者,研究者還是產業界開發者,每個人都可以分享自己的問題,發布自己的代碼、數據和教程,幫助其他社區成員,組織線下技術小組聚會等等。更一步,可以申請成為谷歌開發者專家(GDE)榮譽稱號。
TensorFlow 作為一個機器學習的平臺,那其在未來發展上,大概有哪些方向呢?
我們公開了 Tensorlow 開發路線圖,大家可以在下面網站找到:
https://tensorflow.google.cn/community/roadmap
另外,也可以加入相關興趣小組,給 Tensorlow 提出發展建議。
總結而言,我覺得有以下幾個方向:
Q: 基於 TensorFlow 這個平臺,極大的降低了深度學習的難度,那麽是不是稍微懂技術的人,經過一些學習和打磨,就可以借助這個平臺做深度學習或者AI相關開發,還是說背後還需要很多工作才能成為這方面的人才?
首先這是 TensorFlow 的設計目標,讓盡可能多的人能用上深度學習技術,托福算分嘗試新的研究想法,做產品,解決難題。
這樣一方面可以推動深度學習技術的發展,加快很多方面的 AI 應用。而這些 AI 應用,更需要擁有廣闊背景的眾多開發者來一起推動。
另一方面,從簡單地用到一些模型,到比較專業的深度優化,還是有不少距離。如果你只是達到平均水平,付出可以比較少,但要達到更高水平的突破,還需要很多的經驗。
大家需要有一點工匠的精神,對問題的理解程度,參數的調節,數據的清洗和處理等等,這些都是需要積累的。
我們希望可以降低 TensorFlow 使用的難度,也提供一系列的工具集來輔助用戶,希望可以讓初級用戶更多的探索應用場景,而高級用戶可以做更多的前沿科技研究。
Q: 深度學習融入Google的每一個部門,那麽每一個部門都會因為AI產生效應嗎?有沒有什麽意想不到的效果?
我個人的感受是,加入了深度學習,確實帶來了很大的突破。像機器翻譯,語音,自然對話,圖片翻譯,搜索排序,廣告預估等等,Google 的眾多產品都有深度學習的深刻影響。
Q: 機器學習,深度學習這些年發展的很快,從技術到應用,在未來幾年在哪些地方會有一些突破?
個人認為:無人駕駛領域,醫療診斷方面,還有,比如語言對話方面,讓人充滿期待。我個人更期待AI能推動人類重大問題上的發展,比如農業,環境,教育,跨語言的自由交流等等方面,希望可以借助 TensorFlow 獲取突破的契機。
Q: Google 中怎麽平衡研究和產品,到底是誰在推動誰往前走?大家是做自己喜歡的課題呢還是由需求來驅動做一些實用的研究?
研究是基於真實的問題,而產品化緊密協作,把研究成果落實到產品上去,並且獲得真實世界的大量反饋,這是一個快速叠代的過程。研究和產品是比較緊密的結合過程,可以由真實問題的驅動去尋找解決方案。某種意義上,Google 的工程師,混合了研究和產品的角色,既要研究問題,也要實現產品。
查看更多 TensorFlow 和人工智能相關的內容,請關註谷歌官方“TensorFlow”微信公眾號:
文章來源:https://blog.csdn.net/jILRvRTrc/article/details/80578131
TensorFlow中國研發負責人李雙峰演講實錄:TensorFlow從研究到實踐