資深 Googler 深度解讀 TensorFlow

最近關注人工智能的話題的人很是多,以前在谷歌開發者社區辦過幾回活動,谷歌開發者社區的知乎專欄上也發過幾篇關於TensorFlow及人工智能的文章。有許多開發者表現出了極高的熱情,同時也收到了一些關於TensorFlow的問題。node


今天有幸邀請到了谷歌開發技術推广部 大中華區主管 欒躍 (Bill Luan)來給各位讀者作一個關於TensorFlow的深度解讀。程序員


但願你們能夠有所收穫:)算法

Summer Xia: Hi Bill,首先感謝您在百忙之中抽空回答本專欄你們最近很感興趣的一些TensorFlow及人工智能的問題。 先請您介紹一下本身?編程

Bill Luan:各位谷歌開發者社區專欄的讀者們,你們好!我是欒躍, Bill Luan,谷歌開發技術推广部中國市場的負責人。咱們部門Developer Relations和個人中國團隊負責各項谷歌開發技術和平臺在中國市場的推廣和開發者生態系統的項目,包括幫助創建和贊助中國各地的谷歌開發者社區GDG的運行,幫助大量開發者和高校學生們學習谷歌Android移動開發、並把應用發佈到面向全球的Google Play 平臺上去的中國Study Jam 項目,以及經過博客、微信、微博等各類社交平臺爲中國開發者和企業提供和分享咱們大量的技術資源,好比咱們的「谷歌開發者」微信賬號,目前已經有超過十幾萬的訂閱者。咱們還作其它幫助中國企業利用谷歌技術和平臺在全球市場上進行創新的技術支持和合做,在國內組織舉辦像GDD這樣的技術分享大會等。數組


Summer Xia:TensorFlow 在現階段還不是被不少人所熟悉,爲了幫助更多的人理解TensorFlow,您能簡單聊聊TensorFlow是一種怎樣的技術嗎?瀏覽器

Bill Luan:TensorFlow是谷歌公司爲了幫助全球開發者們更加方便和高效地開發機器學習 (machine learning)和人工智能 (AI) 應用而開發並開源的一整套開發平臺和框架。安全

嚴格說來它的技術核心是一套使用數據流圖 (data flow graphics)進行數據計算的軟件庫(software library) 和應用接口(API),並以此做爲基礎加上其它功能的庫和開發工具成爲一套進行機器學習、特別是深度學習(deep learning)的應用程序開發框架 (framework)。服務器

這麼說可能學術語言或專有名詞太多、對非程序員的讀者來講不太容易理解,我想若是用簡單易懂的一句話來講的話就是:TensorFlow是幫助開發任何有人工智能功能的應用和系統的強大開發工具。微信

在進一步介紹TensorFlow的技術核心以前,我先來解釋一下上面說到的幾個技術詞彙。網絡

首先,Machine Learning,中文翻譯稱爲機器學習。這個和人工智能有關係的緣由是,經過某些特定的數學模式咱們能利用輸入的數據對計算機作特別的訓練(train) 而讓計算機具有自我學習的能力,咱們把它叫作機器學習。經過這個受訓和學習的過程計算機可以在已有的信息輸入基礎上進行各類判斷甚至預測。這種能力的實際效果就是計算機具有了不須要人工干預的辨別能力和決策能力。這也是咱們一般所說的人工智能的意思、也就是機器能作到相似人類會作出的智慧型判斷。

我隨便舉個這樣的應用例子來講明這些概念,這是一個開發者們利用TensorFlow已經作到和完成的實際應用。

一個小機器人本身在房間的路上走,它看到房間裏放的各類東西能自動識別它們出來。它看到一個椅子後它會輸出或說出「椅子」、看到邊上放着一把吉他它會說」吉他」、等等。你能夠很容易理解到,這樣的辨認和判斷功能讓這個機器人幾乎已經具有了相似人類的識別能力了。固然這還只是一個很是簡單的開發應用案例,可是相似這樣的智能化識別能力是很是強大的,應用的範圍也是很是廣的,這樣的智能設備能幫助人類解決無數的具體問題。後面我還會說到更多的機器學習的應用例子。

再次,我來解釋一TensorFlow技術的背景。要開發上面說的這樣的應用,須要創建特定的模式去分析和解決機器學習的計算問題,對現實問題能創建數學運算模型,不然開發將是無比困難的事情。所幸的是計算機專業領域在過去的幾十年的人工智能技術的探討中,逐步發展了出了一些數學模型能幫助人類有效地理解機器學習所面對的問題、讓開發者們能去開發解決這類問題的程序。這些模型是基於所謂的神經網絡(neural network)的數學模型,對抽象化的數學運算用一個所謂的數據流圖(data flow graphics)來創建運算的架構。

神經網絡的概念就像一個計算機程序,它有輸入和輸出的信息、還有一個進行計算的內部系統,就像計算程序的內核,它表明了所計算的信息或智能。全部的輸出和輸入的數據關係,用數學的矩陣(matrix)來表明,它也是一個多維的數學矢量。這個數學矩陣在編程中就用所謂的數組 (array) 來體現。這個多維的數學矢量也就是進行運算的數據或信息,它又被稱爲張量(tensor)。一個神經網絡的模式就是一組Tensor加上對Tensor的運算,或者叫作operations、簡稱ops。ops能夠是加法運算、向量點乘、矩陣乘等等各類運算。這整個神經網絡的tensor和ops,就組成了一個運算流程圖 (graph)。在計算機科學裏有專門的運算圖像來表示這個神經網絡的運算模型的。因此TensorFlow的名稱反映了這個數學模型的特徵,它的意思就是計算不少tensor的流程。

TensorFlow的運算模式就是用這樣的運算流程圖來表述的。每一個運算圖像由結點(node)和邊(edge)所組成。端點是進行運算的步驟(也就是ops),它能夠有輸入和輸出。端點之間的用多維矢量所表明的數據和信息就是tensor,它們沿着圖像的邊流動。這些結點和邊緣就組成了表明TensorFlow的運算流程圖。全部這些和上面所說的神經網絡所用的數據流圖模型是同樣的。

用TensorFlow來編程序包含了兩個步驟:第一是搭建一個表明了運算模式的這個運算圖,咱們把它叫作搭建步驟(construction phase),第二是將數據經過這個運算圖的流程進行計算,咱們把它叫作運算執行步驟 (execution phase)。這個運算在TensorFlow技術框架裏是經過啓動一個session來作的。因此簡單說來,使用TensorFlow的過程就是先搭建運算圖,而後啓動一個session對它輸入數據進行實際的運算。

前面說到TensorFlow是一個軟件庫,那軟件庫(software library)和應用接口(API)指的是什麼呢?它們指的是若是使用TensorFlow進行開發,開發者只要調用特定的軟件函數就好了,後面的運算功能谷歌都已經爲你作好了,它們在特定的軟件包、也就是咱們所說的軟件庫裏面。這些功能經過特定的應用接口,向開發者們提供使用這些功能的統一方式。 這些接口就是API。經過這些接口開發者們就能調用各類特別的運算功能了。這些概念和其它全部的軟件開發平臺沒有什麼區別,軟件開發者們對這些概念也都是很熟悉的。我這裏的解釋主要是給非開發者們讀者們提供的。最後就是使用TensorFlow進行開發,開發者們固然還要按照特定的規範進行、編程有特別的要求、須要使用一些特定的工具等等,全部這些爲開發者們提供了一個開發的參照模式,咱們把這樣的模式稱爲軟件開發的框架framework。任何軟件平臺有了這樣的框架,將幫助開發過程大大提升效率。TensorFlow 就是爲開發機器學習的應用提供了一套完整的框架。


Summer Xia: 能簡單說下TensorFlow的歷史以及它的優點是什麼呢?

Bill Luan:TensorFlow的發展歷史來自於谷歌內部的一個」深度學習」 (Deep Learning) 的項目,是谷歌進行人工智能開發的一個研發項目。在研發過程當中團隊開發了一個幫助進行機器深刻學習的技術框架叫作DistBelief,這個名稱有點和英語名詞disbelieve諧音,它所以帶有一點「簡直難以想象」的幽默感來形容這個技術和它的潛力。深度學習團隊在2012年的美國神經信息處理系統學會刊物上做了發表,介紹了它的支持大規模分佈式部署的能力。它最初的主要功能是幫助計算機系統在語音識別和搜索智能上提供開發的幫助。

後來深度學習團隊發現不少開發者們都對這個技術感興趣,加上在谷歌內部不少產品都開始逐漸使用它和整合它的功能,就發現DistBelief缺少不少靈活性,加上還有一系列的功能須要進一步增長和優化,因而Deep Learning團隊就決定在Dist Belief的基礎之上從新開發和創建一個更加完善的框架和功能庫,因此他們就從新開發了TensorFlow,不只保留了不少Dist Belief中不少很強的分佈式部署的功能,更主要的是加入了一系列新的關鍵的功能。在運行速度的性能方面它也有不少重要優化。它不只能使用普通機芯CPU進行運算,包括在移動設備上的運行,還能充分利用GPU進行高速數據運算的優點。另一個性能的優化是加入了分佈式部署 (distributed system)的支持,這爲開發和部署使用不少計算機同時進行機器深度學習的運算創造了條件。谷歌還開發了專門支持它的極其高速的運算機芯硬件平臺TPU (Tensor Processing Unit),讓它的大規模部署的速度能充分利用專門硬件的優點。這些發展使TensorFlow的發佈把機器學習的潛力從科研擴大到了產品開發的範圍、並使得大規模的企業應用部署成爲可能。這些發展大大提升了人工智能應用開發的靈活性和發展的潛力。TensorFlow的第一個版本1.0於2016年的8月份正式發佈,其速度和穩定性相對最初的版本有了質的提升。

爲了讓更多的開發者們可以充分利用這個技術,谷歌把TensorFlow向業界進行了開源發佈,把整個產品的代碼都在全球開源平臺GitHub上進行了公開。它的開源讓全球開發者們以及各地社區都能一塊兒來加入它的繼續發展。自從開源以後全球開發者和企業又貢獻了更多的功能和提出了不少優化的建議。

因此TensorFlow的一個關鍵優點是它是開源的技術。這個意味着它的發展將不停地獲得來自全球開發者的智慧的貢獻,它的將來將隨着更多開發者們的貢獻而變得愈來愈強大。開源技術的另一個優點是開發者們和企業都能無償使用它,大大下降了這個技術的使用門檻,反過來這個會使更多的企業和科研機構使用,它會使更多開發者和科研人員對它貢獻新的功能組件和提出發展建議、使得它變得愈來愈強大。這是其它相似的封閉技術所沒法相比的優點。

除此以外,TensorFlow的發佈還加入了不少幫助開發者們進行開發的功能包括支持Android和iOS 移動平臺、支持Windows 7 和10以及server平臺還有slim的輕型運行版本、以及對多種編程語言的支持 - 從Python, 到C++Java, Go等。 在開發工具方面它提供了進行可視化的工具TensorBoard大大提升對機器學習的各類模式的數據進行觀察和分析的能力。全部這些技術上的優點都是其它機器學習或人工智能軟件庫所沒有的。這些都是TensorFlow的極大的優點和吸引開發者的地方。

順便說,雖然TensorFlow讓開發機器學習的應用更加方便和高效,它並不表明不須要任何相關的知識就能夠作到。學習TensorFlow須要有必定的數學知識,特別是若是有多維矩陣、統計學、神經網絡等相關的知識做爲基礎,對編寫機器學習的應用程序是將會有極大的幫助。因此從這個角度上來講,擁有數學基礎的開發者們或者編程工程師們仍舊具備極大的價值。


Summer Xia: 謝謝Bill的這些普及性知識的介紹! 接下來您能談一些TensorFlow 的具體開發技術內容嗎?讓咱們的程序員讀者們有更多的瞭解。

Bill Luan:前面介紹了Tensor其實就是一個多維的數學矢量 ,或者叫多維數組,Flow是指的對它進行運算的數據流,它們用一個運算流程圖(或簡稱流程圖)來表示。流程圖有node結點表明了各類ops運算、也能夠是變量。TensorFlow的運算流程圖就定義了整個進行運算的函數。

下面這個示例就是一個典型的流程圖 (原圖來自Google Brain團隊的工程師周玥楓在中國舉辦的2016年穀歌技術大會GDD上的講課):


爲何要使用流程圖呢?由於編寫程序的Python語言是一種解釋語言(interpreted language),而神經網絡的計算一般都是成千上萬次甚至更高的數量,若是運行時每一個程序步驟都要解釋一次,那這個計算就須要很長的時間,變得幾乎無法使用。先搭建了一個運算流程的流程圖來設定全部運算的數據和屬性,而後把這些信息交給進行計算的session來執行,TensorFlow會把運算的代碼編譯成很是高效、運算速度極快的彙編碼,這樣複雜的運算能夠很快完成。咱們把這種延遲的運算模式稱爲延期執行(deferred execution)模式。

這裏所說的流程圖,不是指必定要畫一個圖,雖然開發者能夠用畫圖的方法來體現和描述設計運算的模型、把運行流程可視化幫助分析和設計,這裏說的流程圖,是指用程序的代碼來設定要進行計算的函數、變量等。

前面我也介紹了,用TensorFlow 進行開發的流程是先設計搭建流程圖,而後啓動一個session對它輸入數據進行實際運算的執行。若是你是要加a 和b兩個數字,用Python編程語言來寫這個代碼的話,那麼你須要設計的流程圖和程序的結構就是以下:


這裏的 c = tf.add (a, b)的代碼就是流程圖的一部分。tf是TensorFlow的功能類,tf.Session () 就是啓動運算的session,執行計算的函數就是 session.run ()。 這樣對照了流程圖來看,這些代碼就很容易理解了。

在使用TensorFlow的庫類以前,程序必需要先導入TensorFlow的運算功能,因此最前面的代碼應該是 import。這樣Python的程序才能使用TensorFlow的庫類和函數。因此,若是咱們的運算程序是要把兩個常數加了以後打印出來,那麼使用TensorFlow來運行的代碼就是以下:


程序的輸出就是以下:


使用TensorFlow開發工具所提供的可視化工具TensorBoard, 能夠看到這個程序的流程圖是以下,兩個常數節點3和4被加起來:


上面這些給讀者們提供了一個很是簡單的介紹,讓你們有個很基本的概念。雖然這個例子並非一個什麼實用的簡單程序,可是我想用它爲咱們讀者們說明使用TensorFlow進行運算的關鍵的四個步驟:第一步是搭建一個流程圖,第二步是得到輸入的數據,第三步是啓動運算的session得到輸出, 第四步是對輸出進行某種處理,好比這裏咱們就是把結果印出來。

因爲篇幅的限制,這裏沒法把使用TensorFlow編程的細節所有展開。但願進一步學習的讀者們,能夠去我後面會提供的TensorFlow的網站等進行深刻的學習。這裏沒有篇幅做進一步介紹的,還有一些更加劇要的理念。想要開發機器學習和人工智能應用的讀者們,還須要進一步學習和了解這些知識,我這裏就簡單提一下:機器的深刻學習(deep learning)是人工智能開發的一個重要領域,它基於神經網絡的數學模型。其中最關鍵的理念是創建一個運算模型以後,經過輸入大量的測試數據來訓練這個模式,最終達到可以測試模式的正確性而作到預測的功能。有不少數學模式幫助咱們去創建這樣的模型,好比線性迴歸(Linear Regression)模型,經過大量測試數據來自動找到一組數據中最能由線性函數y = Wx + b所表明的參數值。TensorFlow提供了各類相關的函數來作這樣的運算,好比用來接收輸入的placeholder的標量,定義並訓練模型須要的損失函數,還有特別的進行下降損失的優化函數 (optimizer),等等。這些概念以及如何使用TensorFlow來搭建相關的運算流程圖和進行運算,都是進行機器深度學習的應用開發所須要掌握的,也是最關鍵的進行人工智能創新的基礎。


Summer Xia:那麼現階段這一技術能幫助咱們作什麼具體的事情呢?

Bill Luan:TensorFlow技術從最先的語音識別應用開始的,因此固然在語音識別應用方面仍舊是一個很大的應用範疇,有不少應用能夠作,讓計算機學習各類語音識別,能夠幫助人類解決不少自動化的問題。

神經機器翻譯(Neural Machine translation)一直是TensorFlow進行應用開發的一個重要科研方向。根據今年2月全球TensorFlow開發技術高峯會議(TensorFlow Summit) 所發佈的新聞來看,人類的幾種主要語言、特別是英語等歐美的語言的機器翻譯的準確度已經達到了新的高峯。用TensorFlow開發的機器翻譯錯誤率被降低了55%以上,準確度能夠說幾乎接近人類的人工翻譯水平了。比較有意思的是,中文的機器翻譯水平相比較還稍微差一些,比其它語言的錯誤率要高一些。這一方面反映出讓機器學習中文語法的難度,可是從另一方面來講這也是中國開發者的一個機會,能夠在中文機器翻譯上開發出能力更強大的人工智能應用來。能夠想象在不久的未來中國人出國旅遊要問各類問題能夠拿出手機直接用中文提問,手機立刻進行準確的外語翻譯給外國人聽,或者外國人到中國旅遊能夠直接向國內的各類智能設備說外語,設備能自動回答並提供中文語音翻譯,等等。其實今天已經有相似的應用了只是準確度還差不少。

和語音翻譯相關的另一個應用範圍是語音到文字的自動轉換(speech to text),也就是說你對一個智能化的機器設備說話,設備能自動顯示你說的語言的文字。這個在歐美語言上的應用開發已經作得很好了。好比谷歌公司本身的不少重要產品都已經帶有語音輸入。在國際上廣爲使用的谷歌搜索用戶能夠直接用說話來搜索。谷歌地圖的導航用戶就能夠直接說帶我去哪裏,谷歌地圖會直接顯示駕車路線。這些功能的後面都有使用TensorFlow所帶來的智能化和自動化。

圖像識別和分類(Image classification)是另一個機器學習的大應用範圍,有不少智能化的應用能夠開發。從最簡單的訓練機器識別各類圖像。到機器根據所識別的圖像進行跟進的處理。好比前面所提到的機器人說話或者爲所識別的圖像顯示相關的文字(image captioning) 等這方面的應用創新機會,能夠說是幾乎無窮無盡,對企業來講也有巨大的商機。美國醫學界的應用開發者利用TensorFlow訓練計算機自動認識檢查眼睛所拍攝的照片,而後根據眼球出現糖尿病病態的照片的規律,讓計算機能自動判斷病人的眼睛是否有須要就醫的糖尿病症狀。這種機器人工智能化的檢查準確度已經達到了和有經驗的醫生的診斷相差無幾的地步。

美國斯坦福大學的學生和科研人員利用TensorFlow訓練計算機動過自動識別各類皮膚診斷的照片讓計算機具備識別皮膚病變的能力。澳大利亞的海洋生物保護專家利用各類魚的圖像訓練計算機自動辨認須要保護的魚類、進一步瞭解和觀察它們的行蹤、幫助保護這類魚。 諸如此類的訓練機器經過圖像識別的訓練達到智能化判斷的能力的應用有極其多的應用開發的機會。

還有就是各類信息的搜索、以及文檔的歸類等應用也能利用TensorFlow來訓練計算機進行智能化的歸類判斷。

這裏我把一些目前已經使用機器學習的技術開發了各類智能型產品和應用的領域列出一些給你們作創新領域方向的參考:

  • 自適應網站- 自適應網站是一種爲了更好知足用戶的需求,根據用戶使用行爲創建自我調節的模型,將最合適的信息呈現給用戶。
  • 生物信息學 - 用於瞭解生物數據的方法和軟件工具的跨學科領域。
  • 計算解剖學 - 計算解剖學是醫學成像中的一門學科,主要研究大致解剖學規模的解剖形態。
  • 計算機視覺,包括對象識別
  • 檢測信用卡欺詐和互聯網欺詐
  • 醫療診斷
  • 天然語言理解和處理
  • 在線廣告和市場行銷
  • 情緒分析(或意見數據挖掘)
  • 言語和手寫識別
  • 金融市場分析
  • 語法模式識別
  • 工程結構健康監測和工程結構損傷檢測
  • 用戶行爲分析
  • 翻譯


Summer Xia:中國是全球最大的 TensorFlow 開發人員社區之一,就您瞭解現階段開發人員取得了哪些成就?

Bill Luan:谷歌在去年的Google IO大會上把TensorFlow的技術開始向開發者們作分享。去年12月份在京滬兩地舉辦的谷歌開發者大會(GDD)咱們也邀請了谷歌的Deep Learning 和TensorFlow團隊的工程師和技術推廣專家來中國向你們做演講。今年2月的全球TensorFlow開發技術高峯會議舉辦時咱們還贊助了全國不少谷歌開發者社區(GDG)組織舉辦了觀看全球TensorFlow Summit大會轉播的活動。會議以後咱們在爲開發者進行技術分享的各類社交媒體上作了很多TensorFlow的技術資源分享。

全部這些吸引了大批中國開發者對這個技術的關注。我不知道是否能夠稱中國是全球最大的 TensorFlow 開發人員市場之一,由於我沒有目前最新的全球各個市場的數據比較。可是我能夠判斷國內對學習和使用這個技術進行智能化開發的人數是巨大的。今年4月份咱們在微信的谷歌開發者公衆號上進行過一次使用TensorFlow進行技術開發的調查,結果全國各地有五十多位開發者呈交了他們的應用,告訴咱們他們已經或接近完成利用TensorFlow進行的應用的開發。從去年末咱們在國內的正式公開分享這個技術以後才短短的不到半年時間內,竟然已經有這麼多人已經動手在開發了,讓咱們欣喜地看到這個技術獲得了大批中國開發者們的關注和喜好。他們開發的應用範圍很是普遍,不只有像圖像識別、圖像分類、語音識別等經常使用的應用範圍,還有不少頗有創意的企業應用的創新,好比把智能化和商業廣告結合起來的應用。這些雖然仍是極其早期的開發嘗試,可是讓咱們看到了中國開發者們的創新能力和TensorFlow在中國市場使用的潛力、以及TensorFlow給大批開發者和企業所帶來的創新機會。


Summer Xia: 您瞭解到國內的哪些企業在利用TensorFlow來釋放商業價值?

Bill Luan:目前國內不少大型企業都在學習利用TensorFlow爲他們本身的商業系統注入人工智能的一些功能。由於這個技術的推廣相對來講仍是早期,不少具體的商業價值的信息目前還不是很清楚。我所知道的是京東是使用TensorFlow比較早的合做夥伴之一。因此能夠看得出來TensorFlow的商業價值在電商方面已經獲得了證明。另外我也知道阿里巴巴也在使用TensorFlow開發他們的系統因此這也是一個電商的案例。我以爲在可見的將來,TensorFlow在幫助國內企業經過機器自動辨認提升自動化和系統效率方面,可能會是一個得到商業價值完成得比較早的領域。還有就是,在學術界有大批高效師生對使用TensorFlow進行科研和人工智能教學是很是有興趣的。


Summer Xia: TensorFlow這一技術現階段被一些非AI領域的人關注起來主要是源於前段時間的Alphago、谷歌的I/O大會您做爲業界的專家看待這些事情必定會有不一樣的感覺那麼您以爲爲何TensorFlow在前段時間忽然「熱」起來了?

Bill Luan:的確是,我不認爲AlphaGo或者Google IO是形成TensorFlow受到關注的最主要的緣由,雖然這些活動和會議對擴大機器學習和AI領域的影響力有着巨大的宣傳和推進做用。TensorFlow之因此受到業界大量的關注,主要仍是這個技術和框架自己和其它相似技術相比所具備的獨特的優點,以及它在解決具體科研和商業需求上所提供的商業和創新機會。

首先,做爲計算機科學的一個分支,機器學習的算法已經有不少種模式被創建了,包括像決策樹(Decision Trees)、貝葉斯分類(Bayes Classification)、最小二乘迴歸(Ordinary Least SquaresRegression)、邏輯迴歸(Logistic Regression) 等十多種方式,用在所謂的監督學習、無監督學習、和強化學習這幾種模式中。根據這些模式的使用有大量的運算和軟件開發工具被開發出來,至少有三四十種各類軟件吧,其中光是開源代碼的就用二十多種。另外針對多維數組和矩陣的數學模式還有像NumPy這樣的用Python編程語言進行運算的方式。做爲深度學習的技術相關的軟件也有不少,好比使用Lua編程語言的Torch、C++寫的Caffe、使用Python的Theano、Mxnet等等。

可是全部這些都沒有一個像TensorFlow這樣的既是開源的技術,還具有能夠同時提供進行科研和學術(用於research)應用開發的、又能提供商業系統和產品化(用於production)的開發,它還支持分佈式運算的部署、以及在大規模企業系統上能採用相似TPU/GPU這樣的高性能的運算機芯硬件。除此以外,像TensorFlow所提供的好比幫助數據可視化的TensorBoard開發者工具等,讓原來不少看起來深奧的機器學習和人工智能問題,有可能被開發解決並直接用在商業解答方案中、大大提升不少商業系統的效率。

TensorFlow的這些優點在一年多前開源發佈以後當即受到了全球開發者、以及學術界和互聯網業界的關注。因此它的忽然「熱起來」並非簡單的只是受到宣傳,而是它的功能和性能的全方位的優點,加上徹底開源的技術能讓全球的開發者們能夠爲它的繼續發展一塊兒共享智慧和創新。這些是受到歡迎、關注、和採納的最主要緣由。


Summer Xia:您以爲谷歌爲何會特別重視TensorFlow這一技術以致於反覆強調呢?

Bill Luan:我認爲谷歌把這個技術做爲向開發者進行推廣的重要技術的緣由,是由於它能爲衆多開發者和業界帶來不少新的創新機會。經過使用這個技術,開發者們不只能繼續開發出不少進行人工智能的科研和教學的東西,更主要的是它能爲不少企業的商業提供新的解答方案、提供開發不少過去沒法作到的智能化的新產品的開發。這些領域的創新機會是無窮無盡的,它們會給業界帶來不少新的增長營利的商機、給開發者們帶來不少新的機會。把機器學習和人工智能再整合到雲計算平臺,充分利用雲計算平臺來促進計算機的深度學習,會讓各類產品和服務的質量和範圍到達史無前例的高度,最終的結果是形成不少過去所沒有的智能化產品被開發和生產出來、爲百姓的生活帶來不少新的極大的便利,而造福於全人類。


Summer Xia:當時谷歌爲何佈局TensorFlow技術?這麼重要的技術爲何要開源呢?

Bill Luan:就像我前面所提到的,谷歌的深刻學習科研團隊開發TensorFlow的技術的目的,就是把已經得到的一些機器學習的知識經驗也和業界分享,讓更多的開發者和企業能一塊兒加入推進人工智能技術繼續發展的努力中來。

開源的好處是全球衆多的開發者們都能對這個技術貢獻他們的開發結果,而開源代碼的精神和實踐會讓衆多的開發者和企業把他們的創新讓更多人使用和獲益。這種滾雪球或水漲船高的理念是推進創新的一個極好的方式。

谷歌公司的企業文化就是充分相信開源技術的使用、相信開放型的技術和整個業界的參與纔是推進技術發展的真正動力。有人稱這是谷歌公司企業文化的DNA、是咱們公司根深蒂固的理念。谷歌以前把Android移動平臺、Chrome 瀏覽器平臺等關鍵技術都開源了,形成了移動手機市場革命性地發展和網絡應用創新不斷達到新的高度。咱們相信TensorFlow的開源也能讓無數的開發者們和企業,在機器學習和人工智能領域經過他們的創新把這個領域的發展推到一個新的高度。


Summer Xia:若是企業應用了TensorFlow技術這是否是意味着要把公司的數據「分享」出去?這會不會引起企業的一些擔憂呢?

Bill Luan:這個擔憂是對開源技術的錯誤理解。首先,咱們所說的技術開源,指的是進行運算的軟件程序的技術是開源的,也就是說軟件的代碼和運算方式是開源的,而並非軟件運行時的用戶數據。

代碼的開源方便於開發者們相互學習和取經、把前人開發的有效代碼拿來用,有點像咱們所形容的「踏着前人的肩膀往上爬」的意思。更主要的是,開源代碼讓衆多開發者們能夠對一樣的代碼和算法不斷進行優化和加強功能、加入他們新的創新。這些你們所看到的、所共享的東西,是程序算法的代碼不是軟件在運行時所處理的內部數據。任何企業和機構均可以運行一個由開源代碼所搭建的系統,可是所處理的數據是隻有這個企業或機構才知道的保密信息。因此使用開源技術絕對不是和外部分享本身的數據。這個理念必定要先搞清楚!

其次,由於TensorFlow的應用能夠充分利用谷歌雲計算的平臺進行不少大數據的處理、並充分利用谷歌雲平臺(Google Cloud Platform) 所提供的TPU這樣的極高性能的運算硬件處理。這些獨特的優點吸引了全球不少企業和科研機構就直接把他們的進行機器學習和人工智能的應用部署在谷歌雲平臺上。

我想說,若是有國內的企業須要開發面向國際市場的人工智能服務,這是一個極好的高效率高性能的開發部署模式,歡迎國內企業來找我聯繫進行合做的事宜,可發郵件到這個信箱DevRel-China-Contact@google.com。

有的企業可能對這種商業模式會有些擔憂,是否把本身的運算數據儲存到了谷歌的雲平臺服務器上了是否等於在分享本身的數據了。這種擔憂實際上是不必的,由於谷歌的雲平臺對用戶數據有大量的安全保護,數據的安全性和隱私性比本身創建服務器進行部署其實會更好。要是任何企業還不放心使用第三方雲平臺的話,是能夠對本身的數據再進行加密保護的。因此使用像具備TPU高性能服務器的谷歌雲平臺進行本身的人工智能運算系統的部署,是徹底不用擔憂數據的安全性的,實事上這麼多年來全球無數的企業和機構使用谷歌的雲平臺的各類應用,也歷來沒出現過任何數據安全的問題。固然,我這個話題對咱們這裏大多數的讀者來講並沒太大關聯性,由於谷歌雲平臺國內並不能用,我說的徹底是國內的企業要在國際市場上部署他們的人工智能服務應該考慮這個。

對大部分只開發麪向國內市場的人工智能服務的企業,雖然沒法使用谷歌的雲平臺,可是使用TensorFlow也不是問題。由於它是開源的,任何企業能夠直接把它部署到本身的內部系統上,不影響本身的使用。TensorFlow的開源特性讓國內的不少企業能夠這樣使用。我想也是不少國內企業對這個技術感興趣的緣由之一,由於能使用。


Summer Xia:如今已經有愈來愈多的工程師但願瞭解和學習到這一技術了您能提供一些學習路徑給你們作些參考嗎?谷歌又爲廣大的開發者羣體提供了哪些方面的支持呢?

Bill Luan:如下我給你們提供一個學習TensorFlow的重要資源連接:

1) 開源的TensorFlow的全球資源網站 www.tensorflow.org

這裏有最全面的全部TensorFlow的學習資源包括API文檔、開發案例等參考資料以及教你如何安裝的輔導。

2) 今年的全球TensorFlow Summit的大會視演講頻錄像集 www.youtube.com/results?sea… 它是極好的最新學習資料。

3) 鑑於上面的Youtub的視頻國內的開發者們可能看不到,我這裏再建議你們看咱們在國內Youku上的技術分享視頻 - 這些視頻是咱們把國際上的谷歌開發者技術分享視頻,搬到國內的Youku平臺上創建了一個「谷歌開發者」頻道,便於中國的開發者們進行學習。這個頻道上絕大多數的英語視頻咱們還加了中文字幕,英語聽力不太好的開發者們能夠打開中文字幕進行觀看。這個連接是有關TensorFlow技術視頻的,包括有些全球TensorFlow Summit的錄像

i.youku.com/i/UMjczOTc0…

4) 中國各地谷歌開發者社區GDG的全國交流論壇 http://ChinaGDG.com

各地的GDG社區會按期舉辦學習TensorFlow技術分享活動,過去他們也舉辦過觀看TensorFlow Summit的的活動因此請你們關注你所在的城市的GDG社區的活動通知,去參加將來的學習TensorFlow的活動。

最近全球GDG社區都統一使用一個叫作http://Meetup.com的社區活動發佈平臺,建議你們在Meetup上找到本身城市的GDG並加入他們。

如何報名參與各地谷歌開發者社區(GDG)活動? - 知乎專欄

5) 咱們其它技術分享的信息發佈渠道 - 咱們也會按期發佈和分享一些學習TensorFlow的資源和介紹文章

· 微信公衆號:谷歌開發者

· 谷歌開發者博客中文版: developers.googleblog.cn

· 谷歌開發者微博: weibo.com/2401232554/

咱們谷歌開發技術推广部門爲了幫助中國的開發者能更方便地學習最新的谷歌技術,運行上面所提到的這些技術分享資源項目、以及贊助全國各地二十多個城市的GDG社區。

谷歌走了嗎?沒了搜索,還有技術! - 知乎專欄

谷歌的開發技術極其多,涵蓋了不少技術領域,這裏我就順便提供咱們全部技術的分享資源的總網站,國際上的是developers.google.com, 爲中國開發者們提供的專門頁面是developers.google.cn,它是能夠在國內無璋礙進行訪問的。任何關注谷歌技術和各類互聯及移動技術的朋友們,應該常常訪問這裏,裏面有大量的技術資源和參考資料。

最後我想提一下,學習任何技術很重要的一點是及時關注技術的最新發展、並有機會和業界同仁進行交流和分享,知作別人在作什麼、在如何進行創新。

咱們全國的GDG社區爲你們提供了一個這樣的很好的平臺。他們按期舉辦技術分享活動,不只讓技術學習從枯燥的「宅」在家裏自學變成開闊眼界的交流分享和有趣的經歷,還讓這樣的交流碰撞出新的創新思想火花。所以我但願讀者們都積極加入當地的GDG社區,幫助本身有機會一直跟上技術的最新發展、幫助我的的職業成長。


很高興能夠有機會和中國的開發者們有這樣一個分享交流的機會。也在此預祝全部的讀者們學習快樂、創新有成!

相關文章
相關標籤/搜索