TensorFlow 學習系列之一:TensorFlow 概述

在計算機相關的很多領域(如大數據、分佈式計算、搜索等),Google公司都有着卓越的表現,貢獻了很多劃時代的產品。在人工智能領域,它也不例外。2011年,谷歌就開發了它的第一代分佈式機器學習系統DistBelief[1]。其中計算機科學家傑夫·迪恩(Jeff Dean)和著名深度學習專家吳恩達(Andrew Y. Ng)都是這個項目的核心人員。

除了吳恩達先生聲名赫赫之外,這位傑夫·迪恩也非常了得,在牛人輩出的谷歌公司,也可屬“人中翹楚”。正所謂人牛軼事多。在著名問答網站Quora上,一則“傑夫·迪恩都有哪些奇聞軼事”[1]的問答中,就有人開玩笑說,“編譯器從不會給傑夫·迪恩警告,傑夫·迪恩會警告編譯器(Compilers don't warn JeffDean. Jeff Dean warns compilers)”。言外之意,他比編譯器還厲害,其工程能力可見一斑(傑夫•迪恩正是美國工程院院士)。

通過傑夫·迪恩等人設計的DistBelief,Google可利用數據中心數以萬計的CPU核(core),並以此建立深度神經網絡。藉助DistBelief,Google的語音識別正確率提升了25%。除此之外,DistBelief在圖像識別上也大顯神威。2012年6月25日,《紐約時報》報道了Google通過向DistBelief提供數百萬份YouTube視頻,來讓該系統學習貓的關鍵特徵(見圖11-1)。

                                              圖11-1  《紐約時報》對DistBelief的報道

DistBelief系統之所以引人注目,就是因爲它在未事先獲取“貓的特徵描述”信息的情況下,自行總結出貓這個概念的特徵。換句話說,DistBelief具備自學習能力。當然,這套系統的計算開銷也不容小覷,它由1,000臺機器組成,共包括16,000個內核,訓練的神經網絡參數高達1,000,000,000個。

作爲一家商業公司,爲了保證自己在技術的領先優勢,谷歌對自己“獨門絕技”的態度通常是,要創意(idea),可以!但延遲給;要具體實現(implementation),門都沒有!比如說支撐Google分佈式系統核心業務的老三駕馬車: GFS(Google FileSystem,谷歌文件系統),MapReduce(映射-規約計算範式。順便說一句,MapReduce也是傑夫·迪恩的大作之一)和BigTable(大表),都是在谷歌內部被用了多年之後,其核心思想才被允許以論文的形式公開發表出來。然後,開源社區才“照貓畫虎”,整出來一系列對應的開源軟件,如HDFS(Hadoop文件系統)、Hadoop及HBase等。

一開始,DistBelief作爲谷歌X-實驗室的“黑科技”,也是閉源的。可能是谷歌想由開源社區來維護DistBelief,羣策羣力力量大,所以在2015年11月,谷歌將它的升級版實現正式開源,開源協議遵循Apache 2.0。而這個升級版的DistBelief,也有了一個新的名稱,它就是本章的主角——TensorFlow [2]。

圖11-2 TensorFlow 的圖標

爲什麼要取這麼一個名字呢?這自然也是有講究的。TensorFlow命名來源於本身的運行原理。“Tensor”的本意是“張量”,“張量”通常表示多維矩陣[1]。在深度學習項目中,數據大多都高於二維,所以利用深度學習處理的數據核心特徵來命名,是有意義的。“Flow”的本意就是“流動”,它意味着基於數據流圖的計算。合在一起,“TensorFlow”的蘊意就是,張量從流圖的一端流動到另一端的計算過程。它生動形象地描述了複雜數據結構在人工神經網中的流動、傳輸、分析和處理模式(圖11-3)。

圖11-3  TensorFlow中的數據流圖(圖片來源:TensorFlow官網)

TensorFlow 是一個非常棒的深度學習框架,它在諸多方面都有着卓越的表現,比如設計神經網絡結構的代碼非常簡潔,部署便利。特別是有技術實力雄厚的谷歌爲其“站臺”,擁躉者衆多,也在很大程度保證了它的社區非常活躍,從而也導致TensorFlow在技術演化之路上迭代非常快速,基本上每週都有上萬行代碼的更新。

使用TensorFlow的優點主要表現在如下幾個方面:

(1)TensorFlow有一個非常直觀的構架,顧名思義,它有一個“張量流”。用戶可以很容易地看到張量流動的每一個部分(藉助TensorBoard,在後面的章節會有所提及)。

(2)TensorFlow可輕鬆地在CPU/GPU上部署,進行分佈式計算。

(3)TensorFlow跨平臺性高,靈活性強。TensorFlow不但可以在Linux、Mac和Windows系統下運行,甚至還可以在移動終端下工作。

當然,TensorFlow也有不足之處,主要表現在它的代碼比較底層,需要用戶編寫大量的代碼,而且很多相似的功能,用戶還不得不“重造輪子”。但“瑕不掩瑜”,TensorFlow還是以雄厚技術積澱、穩定的性能,一騎紅塵,“笑傲”於衆多深度學習框架之巔。在本章的餘下部分,我們主要討論TensorFlow的基本用法[2]

-----------《待續》------------

 


[1] https://www.quora.com/Jeff-Dean/What-are-all-the-Jeff-Dean-facts

[1] 在機器學習中,數值通常由4種類型構成:

(1)標量(scalar):即一個數值,它是計算的最小單元,如“1”或“3.2”等。

(2)向量(vector):由一些標量構成的一維數組,如[1, 3.2, 4.6]等。

(3)矩陣(matrix):是由標量構成的二維數組。

(4)張量(tensor):由多維(通常)數組構成的數據集合,可理解爲高維矩陣。

[2] 這裏需要說明的是,如同本書並非專門介紹Python的書籍一樣,本書亦不屬於專門介紹TensorFlow用法的圖書,本章所做工作的,更多屬於拋磚引玉的性質,爲讀者鋪墊一定的基礎。有關更多TensorFlow實戰方面的介紹,讀者朋友可參閱相關書籍,如黃文堅先生編著的《TensorFlow實戰》或喻儼先生主編的《深度學習原理與TensorFlow實戰》等。

 

節選自 張玉宏《深度學習之美》章節,電子工業出版社,博文視點,2018年

發佈了41 篇原創文章 · 獲贊 57 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章