TensorFlow贡献者黄文坚:解读对比13个深度学习框架后的选择
【AI創(chuàng)新者】TensorFlow貢獻者黃文堅:解讀對比13個深度學習框架后的選擇
AI創(chuàng)新者?Google?人工智能?深度學習?TensorFlow 閱讀5774?【AI創(chuàng)新者】是CSDN人工智能頻道精心打造的專欄,本期主人公是PPmoney大數(shù)據(jù)算法總監(jiān)黃文堅,他將為大家講述Google深度學習框架TensorFlow以及他與唐源共同著作的《TensorFlow實戰(zhàn)》一書。在CSDN學院,黃文堅老師即將開課:《使用TensorFlow創(chuàng)建可自動玩游戲的DQN模型》,本次課程集中講解Deep-Q Network及其TensorFlow的實現(xiàn)。歡迎大家報名學習、交流。
同時也歡迎人工智能相關的技術投稿、約稿、行業(yè)分析、熱點新聞、編譯等,請發(fā)送郵件至baiyan@csdn.net,期待大家投稿。
自Google AlphaGo以4:1總比分戰(zhàn)勝韓國名將李世石后,深度學習開始被人們廣泛關注。2月16日,Google發(fā)布了TensorFlow1.0版本,該版本的發(fā)布是深度學習框架發(fā)展中里程碑的一步。TensorFlow于2015年底正式開源,這期間TensorFlow不斷給人驚喜,并推出了分布式版本,服務框架TensorFlow Serving、可視化工具TensorFlow、上層封裝TF.Learn、其他語言(Go、Java、Rust、Haskell)的綁定、Windows的支持、JIT編譯器XLA、動態(tài)計算圖框架Fold,以及數(shù)不勝數(shù)的經典模型在TensorFlow上的實現(xiàn)(Inception Net、SyntaxNet等)。在這一年多時間,TensorFlow已從初入深度學習框架大戰(zhàn)的新星,成為了幾近壟斷的行業(yè)標準。
PPmoney大數(shù)據(jù)算法總監(jiān)黃文堅
為了幫助機器學習、分布式計算領域的學生、從業(yè)者,特別是正在學習深度學習技術,立志從事AI相關行業(yè)的朋友快速上手TensorFlow,PPmoney黃文堅和Uptake唐源共同撰寫了《TensorFlow實戰(zhàn)》一書,希望可以幫助讀者快速入門TensorFlow和深度學習,在工業(yè)界或者研究中快速地將想法落地為可實踐的模型。日前,黃文堅接受CSDN記者專訪,介紹了他在深度學習領域的實踐經驗和成長心得,以及完成《TensorFlow實戰(zhàn)》一書背后的原因和故事。
以下為采訪實錄:
深度學習實踐分享
CSDN:您在什么樣的情況下第一次使用深度學習?其效果是否讓您滿意?
黃文堅:第一次接觸深度學習和神經網絡是在讀研的時候,當時是要做一個圖片二維碼,就是把QR Code黑白塊藏到一張圖片中,手機通過掃描圖片然后解出這個碼。其實從圖片上人眼是看不出任何差別的,通過特殊的頻率編碼將信息存儲在圖片中,通過神經網絡來進行解碼,使用這個幾層深的神經網絡模型做分類,即對每一個module進行解調制,然后將它的輸出結果連到LDPC糾錯碼進行整體解碼,最后再把網址信息恢復出來,當時的效果還是挺滿意的。
這是我在讀研究生時候的主要工作,后來也通過這個拿到了MobiCom的一個獎項,學校為此申請了幾個專利,也就是從那個時候開始,了解到深度學習的強大,尤其是在圖片分類這塊應用是非常強的。
CSDN:從阿里到明略再到PPmoney,您一直在和數(shù)據(jù)打交道,其中有哪些業(yè)務使用了深度學習技術?
黃文堅:在阿里,負責天貓的個性化搜索,主要是針對不同用戶,搜同一個關鍵詞時,其頁面展示的結果不同,使用戶最感興趣的排在前面。當時是使用了阿里內部的一個深度學習框架實現(xiàn)的,取得了一個不錯的效果;
在明略,主要是服務一些大型的企業(yè)客戶,比如銀行、券商、保險公司、制造業(yè)公司和政府機構等。以某制造業(yè)龍頭企業(yè)為例,當時是在那個企業(yè)有一個高端機械設備的故障率預測項目,我們有很多時間序列信息,也就是來自機械設備的信號接收裝置。它是每隔0.01秒甚至更短的時間就會產生一個信號,根據(jù)這些時間信號來預測未來可能出現(xiàn)的故障情況,這在當時也取得了很高的準確率;
在PPmoney,主要業(yè)務是金融風控、量化策略以及P2P理財產的推薦。在金融風控方面,因為我們有大量的客戶數(shù)據(jù),這些數(shù)據(jù)可以用來判斷客戶是否容易逾期,甚至是否是一個欺詐客戶或者不良客戶,通過預測可以降低我們平臺系統(tǒng)的風險。此前是運用了大量特征工程的方法,但后面使用深度學習后,我們對這些特征就不用進行大量的手工處理,直接交給深度學模型即可,從而得到比其他模型更好的結果;在量化策略方面,像金融、股票、期貨這種數(shù)據(jù)天然就是以時間序列排序的,所以這種應用CNN或者RNN深度學習處理特別好。而平時我們做交易會有一些技術指標,而這些是人工提取出來的,但使用深度學習后,讓這個模型自己根據(jù)歷史的數(shù)據(jù)總結出最有價值的特征,從而減少人工操作的部分,雖然可解釋性不強,但實際的效果會非常好。
關于“TensorFlow實戰(zhàn)”
CSDN:各種深度學習開源工具讓DL變得更簡單,但TensorFlow是在2015年才開源,在此之前,您嘗試過哪些DL框架?如何看待它們的優(yōu)缺點?
黃文堅:在這本書中詳細比較了十個最為常見的深度學習框架,而在使用TensorFlow之前,早期主要有Theano、Keras、Caffe、Torch等這幾個開源框架。
當時學術界應用較多的是Theano,同時Theano也是和TensorFlow最像的深度學習框架,可以說TensorFlow是它的一個升級版。它們都支持符號計算和自動求導,但在Theano里限制比較多,如它的編譯速度特別慢,它的整個代碼包括CUDA的代碼,都是寫在Python文件里,CUDA代碼是以字符串的形式存在Python文件中,使用起來不是特別方便,同時運行速度也比較慢,這也限制了Theano在大規(guī)模的工業(yè)應用上的應用;
Keras當時是構建在Theano上的一個上層封裝,現(xiàn)在他也支持構建在TensorFlow上,它是一個極簡的深度學習框架,可能只用幾行或者十幾行就能實現(xiàn)一個非常復雜的神經網絡。當然,它的缺點也很明顯,就是它的底層當時是基于Theano,所以運行速度、功能會有一定限制,同時也不能支持多GPU或者分布式;
Caffe當時應該是最火的開源框架,它主要是使用一個二進制文件,通過執(zhí)行訓練或者預測命令。而它的網絡是通過寫一個Protobuf格式的文件來定義的,所以它調試參數(shù)或者調試網絡結構時不是很方便,但它的訓練速度確是幾個框架中最快的,而且針對卷積神經網絡優(yōu)化做的特別好。而缺點就是剛剛提到的,當要進行大量的實驗時,不是特別方便,因為它的配置文件和它的二進制程序不太適合在Python中反復修改和調試;
關于Torch,這個是Facebook的開源框架,歷史比較悠久,最開始是使用Lua語言編寫,平時執(zhí)行的效率非常高,可能會比Python高幾十倍。但該框架的問題在于應用的語言比較小眾,使用的人相對比較少,學習成本較高以及語言內部的配套組件相對較少等。而在Python中,有Pandas、NumPy、XGBoost、Scikit-learn等配套組件,應用起來特別方便。但Torch使用的Lua中就缺少這些東西,所以使用起來不是很方便,同時它框架本身跟Keras比較像,Keras借鑒了Torch,在定義網絡的時非常簡潔。但如果從來沒有使用過Python或者沒有使用過Keras的人,嘗試一下這個框架也是可以的,最近Torch也推出了Python的版本叫PyTorch,從某些角度上解決了它語言本身的問題。
CSDN:您寫《TensorFlow實戰(zhàn)》這本書的初衷和動力是什么?這本書適合的閱讀對象是誰?讀者有哪些收益?他們需要一些知識基礎嗎?
黃文堅:當時是在一個技術分享活動結束后,電子工業(yè)出版社有位編輯聯(lián)系我,咨詢我是否有興趣寫一本這樣書。其實我聽后還是非常感興趣的,因為TensorFlow也才剛火起來不久,正好國內使用的人還不多,希望通過一本入門同時包含一些經典網絡實現(xiàn)的書籍,能讓大家更熟悉這個開發(fā)框架,用它能做出更多有用的模型。
這本書適合閱讀的對象應該是對深度學習有一定了解,同時對Python編程比較熟悉的人士。不需要對深度學習理解特別深,因為在書中對各個神經網絡的原理和結構也有很多的解釋,讀者需要了解什么是神經網絡和機器學習的一些基礎概念,比如說訓練集、測試集、準確率評價等等。
而讀者的收益主要包含兩個方面,一方面如果讀者對深度學習不是太熟悉和了解,在本書中能夠學到各個類型的神經網絡,比如說自編碼器、多層感知機、卷機神經網絡、循環(huán)神經網絡、深度強化學習等等;另一方面讀者可以使用TensorFlow來實現(xiàn)一些經典模型或者網絡。書中會通過實際的例子,也就是具體實現(xiàn)什么模型,順帶講解TensorFlow的代碼和API接口,整個初衷還是通過實現(xiàn)一些經典的模型,以此構成整本書的發(fā)展。
CSDN:寫作過程中有哪些有趣的事可以分享給大家?
黃文堅:開始寫作時并沒有覺得工作量這么大,但在寫的過程中發(fā)現(xiàn)需要花費的時間還是非常多的。在講解一些網絡實現(xiàn)時也查閱了大量的相關論文,從中也學到了很多東西。希望能把這些內容分享給讀者,因為深度學習是一個發(fā)展非常迅速的領域,基本每年都會有很多新的東西出來,可能在最新的一些論文中,大家都開始使用TensorFlow來實現(xiàn),在此之前都是運用Caffe,這也是學習TensorFlow的一個優(yōu)勢,即能最快地跟上一些最新的技術發(fā)布,如果有新的論文研究成果開源,其絕大多數(shù)也是使用TensorFlow來實現(xiàn)的。
CSDN:書中有哪些重點內容是尤其推薦的?
黃文堅:《TensorFlow實戰(zhàn)》的第六章介紹TensorFlow實現(xiàn)經典卷積神經網絡,中間有詳細講解AlexNet、VGG、Inception和ResNet這四個經典的深度學習網絡,推薦大家重點閱讀。因為從中可以看到卷積網絡中各個應用和實現(xiàn)起來的技巧。?
第八章介紹深度強化學習,這塊能做出很多有意思的東西。比如可以實現(xiàn)自動玩游戲的程序,通過游戲的視頻畫面像素直接學習如何來進行游戲。在此我們也列舉了實例,是個簡單的游戲,實際上是可以推廣到非常復雜的模型。像之前DeepMind推出的程序是可以在太空中自動來玩打飛機的游戲,這個游戲叫Atari。在本書中并沒有實現(xiàn)那么復雜的網絡,但整體的框架和Atari是類似的,讀者可以通過它來進行其他游戲的嘗試。
CSDN:對開發(fā)者選擇深度學習平臺有什么建議?
黃文堅:對大部分開發(fā)者而言選擇深度學習框架有三點特別重要,首先這個框架是不是主流的,如果是主流的就會在上面有很多的開源實現(xiàn),從而查找資料、文檔,問問題也會比較方便,這也是最重要的一點。而且它會比較穩(wěn)定,使用中遇到的問題多半可以得到快速修復;
其次使用它開發(fā)起來的效果,簡單來說就是寫的速度快不快。TensorFlow的設計是比較偏底層的,但它上層有很多比較方便的封裝,比如說TFLearn、TFSlim、Keras。有了這些上層封裝后,我們就能快速的進行一些簡單模型的開發(fā)。如果要對底層網絡結構進行一些細節(jié)上的修改,我們就可以使用最底層的API接口;
最后是該平臺的運行速度,TensorFlow在剛剛推出時,它的運行速度還不是很快,后來則是憑借谷歌強大的工業(yè)實力,尤其是Google強大的技術團隊,大約有200人從事該平臺的開發(fā),所以它在性能上的進步非常大,現(xiàn)在基本上已經達到主流分布式深度學習平臺的執(zhí)行效率。
最近Google發(fā)布了TensorFlow1.0版本,并且還特意提到對Inception v3分布式網絡性能的提升。此前多塊顯卡或者多機器的效率不高,而現(xiàn)在使用8塊顯卡可以達到7.3倍的提速,64塊顯卡更是達到56倍的速度提升,所以它并行計算的效率還是非常高的。所以綜合比較來說,還是推薦TensorFlow,畢竟它在主流性、開發(fā)的便捷性上,還有執(zhí)行速度上都有不錯的表現(xiàn)。
人工智能未來預測
CSDN:目前深度學習相關的論文和工業(yè)界實踐都很多,其中有哪些最新進展讓您印象深刻?
黃文堅:?AlphaGo無疑給人們留下了深刻印象,主要是深度強化學習,對強化學習過程的一些細節(jié)有所改進,但是對網絡本身的內容以及結構改進和優(yōu)化并不多。
另外一個特別火的就是GAN這系列,GAN已經能做非常有意思的事情,比如給它大量的語言和圖片進行數(shù)據(jù)訓練,它可以完成事務的描述,比如我說一只紅色的鳥,它就能自動把這只紅色的鳥繪制出來,從無到有就是根據(jù)它從大量數(shù)據(jù)中的學習,以及掌握到的知識和經驗實現(xiàn)的。拓展開來,以后可能不僅是圖片,可能說一個內容概述,它就能把一段完整的話寫出來。
最近一個能給給素描自動上色的人工智能程序,其效果也是非常驚艷的它把一個鉛筆素描或者一幅黑白畫,傳至網絡上,并自動配上一個比較合適的顏色。我也親自在該網站測試了一次,雖然說可能還達不到人類的程度,但此效果已經非常理想了。
CSDN:有人認為AlphaGo能贏李世石一局就不錯了,但現(xiàn)在AlphaGo的升級版Master已經橫掃各大國手,出現(xiàn)這個”意外”的決定性因素有哪些?
黃文堅:起初,圍棋是一個非常復雜的一個游戲,它有361個點,所以其狀態(tài)數(shù)是3的361次方,其中除去一些非法的情況,總的狀態(tài)數(shù)還是超過了整個宇宙原子的數(shù)量。因為變化實在太多,所以注定是無法窮舉的。與國際象棋不同,現(xiàn)在只要計算能力夠強,我們便可以暴力地搜索所有最優(yōu)解,但在圍棋上肯定是做不到的,所以之前業(yè)界普遍認為圍棋是一個人工智能無法超越或者無法挑戰(zhàn)的項目。
但AlphaGo做的確實非常好,它是使用了幾個技術組合,就包括策略網絡、估值網絡、蒙地卡羅搜索樹、快速走子這四部分。通過大量學習人類高手的對局以及自我對戰(zhàn),從中可以學到人類直覺上的一些戰(zhàn)略。比如它對棋的厚薄會有一些判斷,會對外勢和實地會有一些考量,所以能以4:1戰(zhàn)勝李世石。
之后AlphaGo的升級版Master則是完全拋棄了使用人類高手對戰(zhàn)訓練的一個網絡,它是完全從0開始,自我對戰(zhàn),可能一開始是隨機走子,到后面一步一步迭代,訓練到現(xiàn)在這個水平。中間可能會拋棄掉很多人類棋手常見的錯誤,畢竟人類高手下的每步棋也不是最優(yōu)解,即便學了大量的對局還是存在這個問題。但從0開始自己學習其效果可能會更好,這也是這次棋力提升的一個重大原因之一。
當然它可能還有使用到更深的網絡,更好的訓練方式,但是這里不管它是使用什么算法,它的底層肯定還是配置在TensorFlow這個集群上訓練,所以也間接說明TensorFlow這個分布式計算或者它的科研能力還是非常強的,可以供給DeepMind研發(fā)出這樣強的一個AI。
CSDN:對于AI在行業(yè)成熟應用有哪些啟示?
黃文堅:?AlphaGo一般來說不算一個成熟的應用,但它是一個特別好的宣傳,成熟的應用目前更多還是在普通的判別模型或者是生成模型上。強化學習的話,目前比較穩(wěn)定又有實際經濟價值的點不是很多。像之前使用傳統(tǒng)機器學習的地方,例如搜索推薦、廣告,包括醫(yī)學診斷,這塊會大量應用深度學習,并且深度學習確實取得了遠超其他傳統(tǒng)模型的效果。
而在一些離錢近的方向,包括金融領域、風控、量化交易模型,在這塊應用的規(guī)模比較大。在其他領域,像醫(yī)療診斷、自動駕駛亦或管理家庭生活,如Facebook CEO馬克·扎克伯格前段時間就開發(fā)了一個叫Jarvis的AI程序,主要就是管理家庭生活中的一些操作。
總的來講,并不是看上去最有轟動效果的實際價值就越大,很多時候可能是一些底層看不到的,比如說你今天被推薦了什么東西這類傳統(tǒng)的推薦技術,這部分會慢慢開始使用深度學習,然后來替代之前一些老舊的機器學習模型。
CSDN:Chatbot是當前一個熱點,DL powered assistant在數(shù)據(jù)積累和利用比較好的金融領域會首先成熟嗎?
黃文堅:?Chatbot目前來說挺有用,比如智能客服這類,會有直接的商業(yè)價值,但其中深度學習應用的點不是很多,更多是對規(guī)則和大量模板的匹配。而隨機閑聊是可以用DL做出比較好的效果,例如讓它回答的答案特別準確,但目前還沒有實際的價值。
而DL powered assistant目前還處于早期階段,當然有一些比較好的宣傳,如國外有一家名為Kensho的AI企業(yè),設計了一款針對金融領域的AI程序,目前看上去還沒那么智能,很難給出決策或者建設性的意見。
但平時我們可以先從一些小的角度來思考問題,如深度學習能做得事情大概有三種,其一就是判別式,包括分類和回歸;其二是生成式,包括生成語言和生成圖像;其三是深度強化學習,可以對我們一系列的決策提供策略上的支持。如果不在這三個領域內,目前而言還是比較困難,理想中的人工智能還是比較遙遠。
CSDN:有人說DL概念已經到了轉折點,有人說GAN其實在以前就已經有類似的應用,計算、大數(shù)據(jù)和模型帶來的深度學習紅利是否已經見底?
黃文堅:深度學習當前正好處在發(fā)展中期的階段,神經網絡這個概念很早就被提出來,可能是在幾十年前,當時的確轟動了一段時間,但受制于計算資源等問題之后便消沉了。而這次崛起一個方面是NVIDIA的GPU對深度學習提供了強大的計算資源,另外一個是我們積累了大量數(shù)據(jù),其實深度學習對于數(shù)據(jù)量還有計算能力的要求是非常高的,一旦滿足這兩個條件就會獲得非常好的效果,所以目前我并不認為深度學習概念已經到了轉折點,而是處于加速上升的階段。
但需要注意的是,有些報道中會把深度學習描述的無所不能,其實目前還是達不到的,現(xiàn)在我們能做的就是前面提到的那三個點,即判別式、生成式以及強化學習。這三個點還在持續(xù)的發(fā)展中,并且效果會越來越好,此后會有更多應用被人想到并付之行動最后被實施起來。
而GAN在此之前確實有一個跟它類似的概念,但兩種方法從原理上是完全不一樣的,所以GAN是一個全新概念。之后在并行計算和數(shù)據(jù)規(guī)模積累上,我相信會持續(xù)給深度學習帶來額外的紅利,如NVIDIA的GPU每年都會有50%左右的性能提升,之后可能會有專門針對深度學習的芯片和硬件被研發(fā)出來,包括Google在底層也在大規(guī)模使用它的TPU(Tensor Processing Unit),計算資源肯定會被不斷提升,也會支持我們訓練更加復雜的神經網絡。
而大數(shù)據(jù)是最近這幾年,其積累的數(shù)據(jù)量呈爆炸式增長,因為有特別多的東西可以被數(shù)字化,也包括物聯(lián)網等。很多不為人們所知的Sensor會默默記錄大量的數(shù)據(jù),而這些數(shù)據(jù)未來又會給我們訓練模型提供很好的幫助。
CSDN:對未來深度學習平臺發(fā)展有哪些預測?
黃文堅:目前每家大公司都已經推出了自己的深度學習平臺,如Google有TensorFlow;Facebook有Torch,可能接下來還會有Caffe2;Amazon有DSSTNE深度學習框架,最近它也接納了MXNet作為AWS上最為推薦的深度學習框架;微軟有CNTK;IBM最近也推出了一個名為Big DL的框架,是一個純粹在CPU上計算的分布式深度學習框架。
基本上每家企業(yè)都有自己的DL平臺,主要是為參與其標準的制訂。如果哪家企業(yè)推出的框架,無論是在使用人數(shù)還是在應用面方面都有出色的表現(xiàn),到后面的話語權也可能會最大,而且在框架上的一些應用,可以更靈活的進行操控,所以有實力的企業(yè)肯定會投入特別大的支持和資源。
但總體而言,我還是比較看好Google的TensorFlow,目前它最大的問題就是開發(fā)效率,Google已經還把Keras框架并到其中,作為它默認支持的一個輔助開發(fā)工具。現(xiàn)在我們就不用再使用幾百行代碼來實現(xiàn)一個復雜的網絡,只需幾十行代碼就能搞定。當你需要在底層上進行一些微調,或者細節(jié)上做一些改進時,你同樣可以使用最底層的接口,來實現(xiàn)一些當前不是特別流行或特別主流的方法,對于研究者而言也是非常方便的。
此外Google除了TensorFlow還推出了很多相關工具,比如它推出了tensorflow serving的服務框架,當我們訓練好模型后,需要將它部署到服務器中提供預測服務,又或者是其他類型的計算服務。而其他幾個框架部署還是比較復雜的,但TensorFlow提供了這個框架,就能實現(xiàn)特別高性能的部署服務。同時它還支持安卓和iOS以及嵌入式,所以應用面會特別廣。現(xiàn)在已經可以在手機上,使用手機的CPU來計算運算深度學習的一些網絡。
同時Google在這方面的投入應該也是最大的,目前有遠超其他公司的研發(fā)人員,在全職做這一套工具,同時在GitHub上的Start數(shù)量也是遙遙領先其他框架,目前可能是有46000顆星,可能從第二名到第十名加起來也沒有TensorFlow多,所以這是一個非常明顯的優(yōu)勢。
總結
以上是生活随笔為你收集整理的TensorFlow贡献者黄文坚:解读对比13个深度学习框架后的选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 任正非:我若贪生怕死,何来让你们去英勇奋
- 下一篇: 写给大家看的机器学习书【Part1】什么