資深 Googler 深度解讀 TensorFlow

❤SummerXia發表於2019-02-28

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

資深 Googler 深度解讀 TensorFlow

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

資深 Googler 深度解讀 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上的講課):

資深 Googler 深度解讀 TensorFlow

為什麼要使用流程圖呢?因為編寫程式的Python語言是一種解釋語言(interpreted language),而神經網路的計算通常都是成千上萬次甚至更高的數量,如果執行時每個程式步驟都要解釋一次,那這個計算就需要很長的時間,變得幾乎沒法使用。先搭建了一個運算流程的流程圖來設定所有運算的資料和屬性,然後把這些資訊交給進行計算的session來執行,TensorFlow會把運算的程式碼編譯成非常高效、運算速度極快的彙編碼,這樣複雜的運算可以很快完成。我們把這種延遲的運算模式稱為延期執行(deferred execution)模式。

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

前面我也介紹了,用TensorFlow 進行開發的流程是先設計搭建流程圖,然後啟動一個session對它輸入資料進行實際運算的執行。如果你是要加a 和b兩個數字,用Python程式語言來寫這個程式碼的話,那麼你需要設計的流程圖和程式的結構就是如下:

資深 Googler 深度解讀 TensorFlow

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

在使用TensorFlow的庫類之前,程式必須要先匯入TensorFlow的運算功能,所以最前面的程式碼應該是 import。這樣Python的程式才能使用TensorFlow的庫類和函式。所以,如果我們的運算程式是要把兩個常數加了之後列印出來,那麼使用TensorFlow來執行的程式碼就是如下:

資深 Googler 深度解讀 TensorFlow

程式的輸出就是如下:

資深 Googler 深度解讀 TensorFlow

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

資深 Googler 深度解讀 TensorFlow

上面這些給讀者們提供了一個非常簡單的介紹,讓大家有個很基本的概念。雖然這個例子並不是一個什麼實用的簡單程式,但是我想用它為我們讀者們說明使用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社群,幫助自己有機會一直跟上技術的最新發展、幫助個人的職業成長。

資深 Googler 深度解讀 TensorFlow

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

資深 Googler 深度解讀 TensorFlow

相關文章