導航:首頁 > 源碼編譯 > 深度學習編譯優化器

深度學習編譯優化器

發布時間:2022-07-18 14:03:53

1. 深度學習中如何選擇好的優化方法(optimizer

正常情況下用Adam就可以了

具體的來說,希望這篇博客可以幫到你:

關於深度學習優化器 optimizer 的選擇,你需要了解

2. 機器學習和深度學習的區別是什麼

現在有很多人對機器學習和深度學習的概念並不是很明白,其實深度學習是機器學習中的一部分,而機器學習是深度學習的基礎,這兩個知識體系都是服務於人工智慧的。在這篇文章中我們給大家介紹一下關於機器學習和深度學習的區別,希望這篇文章能夠幫助大家理解機器學習和深度學習。
那麼什麼是機器學習呢?一般來說,為了實現人工智慧,我們會使用機器學習。我們有幾種用於機器學習的演算法。這些演算法有決策樹、隨機森林、人工神經網路。而機器學習有3類學習演算法,分別是監督學習、無監督學習、增強學習學習,其中,監督機器學習演算法進行預測。此外,該演算法在分配給數據點的值標簽中搜索模式。無監督機器學習演算法則是沒有標簽與數據關聯。並且,這些 ML 演算法將數據組成簇。此外,他需要描述其結構,並使復雜的數據看起來簡單且能有條理的分析。而增強機器學習演算法:我們使用這些演算法選擇動作。並且,我們能看到它基於每個數據點。一段時間後,演算法改變策略來更好地學習。
那麼什麼是深度學習呢?機器學習只關註解決現實問題。它還需要人工智慧的一些想法。機器學習通過旨在模仿人類決策能力的神經網路。機器學習工具和技術是兩個主要的僅關注深度學習的子集。我們需要應用它來解決任何需要思考的問題人類的或人為的。任何深度神經網路都將包含三層,分別是輸入層、隱藏層、輸出層。
那麼深度學習和機器學習的關系是什麼呢?通常我們用機器演算法來解析數據,學習數據,並從中做出理智的判定。根本上講,深度學慣用於創建可自我學習和可理智判定的人工「神經網路」。我們可以說深度學習是機器學習的子領域。而機器學習與深度學習對比具體體現在四方面,第一就是數據依賴,一般來說,性能是區別二者的最主要之處。當數據量小時,深度學習演算法表現不佳。這就是深度學習演算法需要大量的數據才能完美理解的唯一原因。第二就是硬體依賴通常,深度學習依賴於高端設備,而傳統學習依賴於低端設備。因此,深度學習要求包含GPU。這是它工作中不可或缺的一部分。它們還需要進行大量的矩陣乘法運算。第三就是功能工程化,在此,領域知識被用於創建特徵提取器,以降低數據的復雜性,並使模式對學習演算法的工作原理上更可見,雖然處理起來非常困難。 因此,這是耗時並需要專業知識的。第四就是解決問題的方法,一般來說,我們使用傳統演算法來解決問題。但它需要將問題分解為不同的部分以單獨解決它們。要獲得結果,請將它們全部合並起來。
關於機器學習和深度學習的相關知識我們就給大家介紹到這里了,大家在進行學習機器學習的時候一定不要忽視這兩個知識的區別,這樣能夠幫助大家更好地理解機器學習。

3. 程序員為什麼要學深度學習

費良宏:程序員為什麼要學深度學習?

深度學習本身是一個非常龐大的知識體系。本文更多想從程序員的視角出發,讓大家觀察一下深度學習對程序員意味著什麼,以及我們如何利用這樣一個高速發展的學科,來幫助程序員提升軟體開發的能力。
本文根據費良宏在2016QCon全球軟體開發大會(上海)上的演講整理而成。
前言
1973年,美國上映了一部熱門的科幻電影《WestWorld》,三年之後又有一個續集叫做《FutureWorld》。這部電影在80年代初被引進到中國叫《未來世界》。那部電影對我來講簡直可以說得上是震撼。影片中出現了很多機器人,表情豐富的面部下面都是集成電路板。這讓那時候的我覺得未來世界都是那麼遙遠、那麼神秘。
時間到了2016年,很多朋友可能都在追看HBO斥巨資拍攝的同一題材的系列劇《WestWorld》。如果前兩部電影還是局限在機器人、人工智慧這樣的話題,2016年的新劇則在劇情和人工智慧的思考方面有了很大的突破。不再渲染機器人是否會威脅到人類,而是在探討「Dreamsaremainlymemories」這一類更具哲理的問題。
「記憶究竟如何影響了智能」這個話題非常值得我們去思考,也給我們一個很好的啟示——今天,人工智慧領域究竟有了怎樣的發展和進步。
今天我們探討的話題不僅僅是簡單的人工智慧。如果大家對深度學習感興趣,我相信各位一定會在搜索引擎上搜索過類似相關的關鍵字。我在Google上以deeplearning作為關鍵字得到了2,630萬個搜索的結果。這個數字比一周之前足足多出了300多萬的結果。這個數字足以看得出來深度學習相關的內容發展的速度,人們對深度學習的關注也越來越高。

從另外的一個角度,我想讓大家看看深度學習在市場上究竟有多麼熱門。從2011年到現在一共有140多家專注人工智慧、深度學習相關的創業公司被收購。僅僅在2016年這種並購就發生了40多起。
其中最瘋狂的是就是Google,已經收購了 11 家人工智慧創業公司,其中最有名的就是擊敗了李世石九段的 DeepMind。排名之後的就要數 Apple、Intel以及Twitter。以Intel 公司為例,僅在今年就已經收購了 3 家創業公司,Itseez、Nervana 和 Movidius。這一系列大手筆的並購為了布局人工智慧以及深度學習的領域。
當我們去搜索深度學習話題的時候,經常會看到這樣的一些晦澀難懂的術語:Gradient descent(梯度下降演算法)、Backpropagation(反向傳播演算法)、Convolutional Neural Network(卷積神經網路)、受限玻耳茲曼機(Restricted Boltzmann Machine)等。
如打開任何一篇技術文章,你看到的通篇都是各種數學公式。大家看到如下左邊的圖,其實並不是一篇高水準的學術論文,而僅僅是維基網路關於玻耳茲曼機的介紹。維基網路是科普層面的內容,內容復雜程度就超過了大多數數學知識的能力。

在這樣的背景之下,我今天的的話題可以歸納成三點:第一,我們為什麼要學習深度學習;第二,深度學習最核心的關鍵概念就是神經網路,那麼究竟什麼是神經網路;第三,作為程序員,當我們想要成為深度學習開發者的時候,我們需要具備怎樣的工具箱,以及從哪裡著手進行開發。
為什麼要學習深度學習
首先,我們談談為什麼要學習深度學習。在這個市場當中,最不缺乏的就是各種概念以及各種時髦新技術的詞彙。深度學習有什麼不一樣的地方?我非常喜歡AndrewNg(吳恩達)曾經用過的一個比喻。
他把深度學習比喻成一個火箭。這個火箭有一個最重要的部分,就是它的引擎,目前來看在這個領域裡面,引擎的核心就是神經網路。大家都知道,火箭除了引擎之外還需要有燃料,那麼大數據其實就構成了整個火箭另外的重要組成部分——燃料。以往我們談到大數據的時候,更多是強調存儲和管理數據的能力,但是這些方法和工具更多是對於以往歷史數據的統計、匯總。
而對於今後未知的東西,這些傳統的方法並不能夠幫助我們可以從大數據中得出預測的結論。如果考慮到神經網路和大數據結合,我們才可能看清楚大數據真正的價值和意義。AndrewNg就曾經說過「我們相信(神經網路代表的深度學習)是讓我們獲得最接近於人工智慧的捷徑」。這就是我們要學習深度學習的一個最重要的原因。

其次,隨著我們進行數據處理以及運算能力的不斷提升,深度學習所代表的人工智慧技術和傳統意義上人工智慧技術比較起來,在性能上有了突飛猛進的發展。這主要得益於在過去幾十間計算機和相關產業不斷發展帶來的成果。在人工智慧的領域,性能是我們選擇深度學習另一個重要的原因。

這是一段Nvidia在今年公布的關於深度學習在無人駕駛領域應用的視頻。我們可以看到,將深度學習應用在自動駕駛方面,僅僅經歷了3千英里的訓練,就可以達到什麼樣的程度。在今年年初進行的實驗上,這個系統還不具備真正智能能力,經常會出現各種各樣的讓人提心吊膽的狀況,甚至在某些情況下還需要人工干預。
但經過了3千英里的訓練之後,我們看到在山路、公路、泥地等各種復雜的路況下面,無人駕駛已經有了一個非常驚人的表現。請大家注意,這個深度學習的模型只經過了短短幾個月、3千英里的訓練。
如果我們不斷完善這種模型的話,這種處理能力將會變得何等的強大。這個場景裡面最重要的技術無疑就是深度學習。我們可以得出一個結論:深度學習可以為我們提供強大的能力,如果程序員擁有了這個技術的話,無異於會讓每個程序員如虎添翼。
神經網路快速入門
如果我們對於學習深度學習沒有任何疑慮的話,接下來就一定會關心我需要掌握什麼樣的知識才能讓我進入到這個領域。這裡面最重要的關鍵技術就是「神經網路」。說起「神經網路」,容易混淆是這樣兩個完全不同的概念。
一個是生物學神經網路,第二個才是我們今天要談起的人工智慧神經網路。可能在座的各位有朋友在從事人工智慧方面的工作。當你向他請教神經網路的時候,他會拋出許多陌生的概念和術語讓你聽起來雲里霧里,而你只能望而卻步了。
對於人工智慧神經網路這個概念,大多數的程序員都會覺得距離自己有很大的距離。因為很難有人願意花時間跟你分享神經網路的本質究竟是什麼。而你從書本上讀的到的理論和概念,也很讓你找到一個清晰、簡單的結論。
今天就我們來看一看,從程序員角度出發神經網路究竟是什麼。我第一次知道神經網路這個概念是通過一部電影——1991年上映的《終結者2》。男主角施瓦辛格有一句台詞:
「MyCPUisaneural-netprocessor;alearningcomputer.」(我的處理器是一個神經處理單元,它是一台可以學習的計算機)。從歷史來看人類對自身智力的探索,遠遠早於對於神經網路的研究。
1852年,義大利學者因為一個偶然的失誤,將人類的頭顱掉到硝酸鹽溶液中,從而獲得第一次通過肉眼關注神經網路的機會。這個意外加速了對人類智力奧秘的探索,開啟了人工智慧、神經元這樣概念的發展。
生物神經網路這個概念的發展,和今天我們談的神經網路有什麼關系嗎?我們今天談到的神經網路,除了在部分名詞上借鑒了生物學神經網路之外,跟生物學神經網路已經沒有任何關系,它已經完全是數學和計算機領域的概念,這也是人工智慧發展成熟的標志。這點大家要區分開,不要把生物神經網路跟我們今天談到的人工智慧有任何的混淆。

90年代中期,由Vapnik等人提出了支持向量機演算法(Support Vector Machines,支持向量機)。很快這個演算法就在很多方面體現出了對比神經網路的巨大優勢,例如:無需調參、高效率、全局最優解等。基於這些理由,SVM演算法迅速打敗了神經網路演算法成為那個時期的主流。而神經網路的研究則再次陷入了冰河期。
在被人摒棄的十年裡面,有幾個學者仍然在堅持研究。其中很重要的一個人就是加拿大多倫多大學的Geoffery Hinton教授。2006年,他的在著名的《Science》雜志上發表了論文,首次提出了「深度信念網路」的概念。
與傳統的訓練方式不同,「深度信念網路」有一個「預訓練」(pre-training)的過程,這可以方便的讓神經網路中的權值找到一個接近最優解的值,之後再使用「微調」(fine-tuning)技術來對整個網路進行優化訓練。這兩個技術的運用大幅度減少了訓練多層神經網路的時間。在他的論文裡面,他給多層神經網路相關的學習方法賦予了一個新名詞— 「深度學習」。
很快,深度學習在語音識別領域嶄露頭角。接著在2012年,深度學習技術又在圖像識別領域大展拳腳。Hinton與他的學生在ImageNet競賽中,用多層的卷積神經網路成功地對包含一千個類別的一百萬張圖片進行了訓練,取得了分類錯誤率15%的好成績,這個成績比第二名高了將近11個百分點。
這個結果充分證明了多層神經網路識別效果的優越性。從那時起,深度學習就開啟了新的一段黃金時期。我們看到今天深度學習和神經網路的火熱發展,就是從那個時候開始引爆的。

利用神經網路構建分類器,這個神經網路的結構是怎樣的?

其實這個結構非常簡單,我們看到這個圖就是簡單神經網路的示意圖。神經網路本質上就是一種「有向圖」。圖上的每個節點借用了生物學的術語就有了一個新的名詞 – 「神經元」。連接神經元的具有指向性的連線(有向弧)則被看作是「神經」。這這個圖上神經元並不是最重要的,最重要的是連接神經元的神經。每個神經部分有指向性,每一個神經元會指向下一層的節點。
節點是分層的,每個節點指向上一層節點。同層節點沒有連接,並且不能越過上一層節點。每個弧上有一個值,我們通常稱之為」權重「。通過權重就可以有一個公式計算出它們所指的節點的值。這個權重值是多少?我們是通過訓練得出結果。它們的初始賦值往往通過隨機數開始,然後訓練得到的最逼近真實值的結果作為模型,並可以被反復使用。這個結果就是我們說的訓練過的分類器。
節點分成輸入節點和輸出節點,中間稱為隱層。簡單來說,我們有數據輸入項,中間不同的多個層次的神經網路層次,就是我們說的隱層。之所以在這樣稱呼,因為對我們來講這些層次是不可見的。輸出結果也被稱作輸出節點,輸出節點是有限的數量,輸入節點也是有限數量,隱層是我們可以設計的模型部分,這就是最簡單的神經網路概念。
如果簡單做一個簡單的類比,我想用四層神經網路做一個解釋。左邊是輸入節點,我們看到有若干輸入項,這可能代表不同蘋果的RGB值、味道或者其它輸入進來的數據項。中間隱層就是我們設計出來的神經網路,這個網路現在有不同的層次,層次之間權重是我們不斷訓練獲得一個結果。
最後輸出的結果,保存在輸出節點裡面,每一次像一個流向一樣,神經是有一個指向的,通過不同層進行不同的計算。在隱層當中,每一個節點輸入的結果計算之後作為下一層的輸入項,最終結果會保存在輸出節點上,輸出值最接近我們的分類,得到某一個值,就被分成某一類。這就是使用神經網路的簡單概述。

除了從左到右的形式表達的結構圖,還有一種常見的表達形式是從下到上來表示一個神經網路。這時候,輸入層在圖的最下方,輸出層則在圖的最上方。從左到右的表達形式以AndrewNg和LeCun的文獻使用較多。而在Caffe框架里則使用的則是從下到上的表達。
簡單來說,神經網路並不神秘,它就是有像圖,利用圖的處理能力幫助我們對特徵的提取和學習的過程。2006年Hinton的那篇著名的論文中,將深度學習總結成三個最重要的要素:計算、數據、模型。有了這三點,就可以實現一個深度學習的系統。
程序員需要的工具箱
對於程序員來說,掌握理論知識是為了更好的編程實踐。那就讓我們看看,對於程序員來說,著手深度學習的實踐需要准備什麼樣的工具。
硬體
從硬體來講,我們可能需要的計算能力,首先想到的就是CPU。除了通常的CPU架構以外,還出現了附加有乘法器的CPU,用以提升計算能力。此外在不同領域會有DSP的應用場景,比如手寫體識別、語音識別、等使用的專用的信號處理器。還有一類就是GPU,這是一個目前深度學習應用比較熱門的領域。最後一類就是FPGA(可編程邏輯門陣列)。
這四種方法各有其優缺點,每種產品會有很大的差異。相比較而言CPU雖然運算能力弱一些,但是擅長管理和調度,比如讀取數據,管理文件,人機交互等,工具也豐富。DSP相比而言管理能力較弱,但是強化了特定的運算能力。
這兩者都是靠高主頻來解決運算量的問題,適合有大量遞歸操作以及不便拆分的演算法。GPU的管理能力更弱一些,但是運算能力更強。但由於計算單元數量多,更適合整塊數據進行流處理的演算法。
FPGA在管理與運算處理方面都很強,但是開發周期長,復雜演算法開發難度較大。就實時性來說,FPGA是最高的。單從目前的發展來看,對於普通程序員來說,現實中普遍採用的計算資源就還是是CPU以及GPU的模式,其中GPU是最熱門的領域。

這是我前天為這次分享而准備的一個AWS 上p2的實例。僅僅通過幾條命令就完成了實例的更新、驅動的安裝和環境的設置,總共的資源創建、設置時間大概在10分鍾以內。而之前,我安裝調試前面提到的那台計算機,足足花了我兩天時間。

另外,從成本上還可以做一個對比。p2.8xLarge 實例每小時的費用是7.2美元。而我自己那台計算機總共的花費了是¥16,904元。這個成本足夠讓我使用350多個小時的p2.8xLarge。在一年裡使用AWS深度學習站就可以抵消掉我所有的付出。隨著技術的不斷的升級換代,我可以不斷的升級我的實例,從而可以用有限的成本獲得更大、更多的處理資源。這其實也是雲計算的價值所在。
雲計算和深度學習究竟有什麼關系?今年的8月8號,在IDG網站上發表了一篇文章談到了這個話題。文章中做了這樣一個預言:如果深度學習的並行能力不斷提高,雲計算所提供的處理能力也不斷發展,兩者結合可能會產生新一代的深度學習,將帶來更大影響和沖擊。這是需要大家考慮和重視的一個方向!
軟體
深度學習除了硬體的基礎環境之外。程序員會更關心與開發相關的軟體資源。這里我羅列了一些曾經使用過的軟體框架和工具。

Scikit-learn是最為流行的一個python機器學習庫。它具有如下吸引人的特點:簡單、高效且異常豐富的數據挖掘/數據分析演算法實現; 基於NumPy、SciPy以及matplotlib,從數據探索性分析,數據可視化到演算法實現,整個過程一體化實現;開源,有非常豐富的學習文檔。
Caffe專注在卷及神經網路以及圖像處理。不過Caffe已經很久沒有更新過了。這個框架的一個主要的開發者賈揚清也在今年跳槽去了Google。也許曾經的霸主地位要讓位給他人了。
Theano 是一個非常靈活的Python 機器學習的庫。在研究領域非常流行,使用上非常方便易於定義復雜的模型。Tensorflow 的API 非常類似於Theano。我在今年北京的QCon 大會上也分享過關於Theano 的話題。
Jupyter notebook 是一個很強大的基於ipython的python代碼編輯器,部署在網頁上,可以非常方便的進行互動式的處理,很適合進行演算法研究合數據處理。
Torch 是一個非常出色的機器學習的庫。它是由一個比較小眾的lua語言實現的。但是因為LuaJIT 的使用,程序的效率非常出色。Facebook在人工智慧領域主打Torch,甚至現在推出了自己的升級版框架Torchnet。
深度學習的框架非常之多,是不是有一種亂花漸欲迷人眼的感覺?我今天向各位程序員重點介紹的是將是TensorFlow。這是2015年穀歌推出的開源的面向機器學習的開發框架,這也是Google第二代的深度學習的框架。很多公司都使用了TensorFlow開發了很多有意思的應用,效果很好。
用TensorFlow可以做什麼?答案是它可以應用於回歸模型、神經網路以深度學習這幾個領域。在深度學習方面它集成了分布式表示、卷積神經網路(CNN)、遞歸神經網路(RNN) 以及長短期記憶人工神經網路(Long-Short Term Memory, LSTM)。
關於Tensorflow 首先要理解的概念就是Tensor。在辭典中對於這個詞的定義是張量,是一個可用來表示在一些向量、標量和其他張量之間的線性關系的多線性函數。實際上這個表述很難理解,用我自己的語言解釋Tensor 就是「N維數組」而已。

使用 TensorFlow, 作為程序員必須明白 TensorFlow這樣幾個基礎概念:它使用圖 (Graph) 來表示計算任務;在被稱之為 會話 (Session) 的上下文 (context) 中執行圖;使用 Tensor 表示數據;通過 變數 (Variable) 維護狀態;使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據。
一句話總結就是,TensorFlow 就是有狀態圖的數據流圖計算環境,每個節點就是在做數據操作,然後提供依賴性和指向性,提供完整數據流。
TensorFlow安裝非常簡單,但官網提供下載的安裝包所支持的CUDA 的版本是7.5。考慮到CUDA 8 的讓人心動的新特以及不久就要正式發布的現狀。或許你想會考慮立即體驗CUDA 8,那麼就只能通過編譯Tensorflow源代碼而獲得。目前TensorFlow已經支持了Python2.7、3.3+。
此外,對於使用Python 語言的程序員還需要安裝所需要的一些庫,例如:numpy、protobuf等等。對於卷積處理而言,cuDNN是公認的性能最好的開發庫,請一定要安裝上。常規的Tensorsorflow的安裝很簡單,一條命令足矣:
$ pip3 install —upgrade https://storage.233.wiki/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp35-cp35m-linux_x86_64.whl
如果想評估一下或者簡單學習一下,還可以通過Docker進行安裝,安裝的命令如下:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
TensorFlow有很多優點。首先,目前為止,深度學習的開發框架裡面TensorFlow的文檔做的最好,對程序員學習而言是非常好的一點。第二,TensorFlow有豐富的參考實例,作為參考學習起來非常容易。
第三,開發者社區活躍,在任何一個深度學習的社區里,都有大量關於TensorFlow的討論。第四,谷歌的支持力度非常大,從2015年到現在升級速度非常快,這是其他開源框架遠遠達不到的結果。
參考TensorFlow的白皮書,我們會看到未來TensorFlow還將會有巨大的發展潛力。讓我特別感興趣是這兩個方向。第一,支持跨多台機器的 parallelisation。盡管在0.8版本中推出了並行化的能力,但是目前還不完善。隨著未來不斷發展,依託雲計算的處理能力的提升這個特性將是非常讓人振奮的。
第二,支持更多的開發語言,對於開發者來說這是一個絕大的利好,通過使用自己擅長的語言使用TensorFlow應用。這些開發語言將會擴展到Java、Lua以及R 等。
在這里我想給大家展示一個應用Tensorflow 的例子。這個例子的代碼託管在這個網址上 https://github.com/anishathalye/neural-style。白俄羅斯的現代印象派藝術家Leonid Afremov善於用濃墨重彩來表現都市和風景題材,尤其是其雨景系列作品。他習慣用大色塊的鋪陳來營造光影效果,對反光物體和環境色的把握非常精準。
於是我就找到了一張上海東方明珠電視塔的一張攝影作品,我希望通過Tensorflow 去學習一下Leonid Afremov 的繪畫風格,並將這張東方明珠的照片處理成那種光影色彩豐富的作品風格。利用Tensorflow 以及上面提到的那個項目的代碼,在一個AWS 的p2類型的實例上進行了一個一千次的迭代,於是就得到了下圖這樣的處理結果。

這個處理的代碼只有350行里,模型使用了一個成名於2014年ImageNet比賽中的明星 VGG。這個模型非常好,特點就是「go depper」。
TensorFlow 做出這樣的作品,並不僅僅作為娛樂供大家一笑,還可以做更多有意思的事情。將剛才的處理能力推廣到視頻當中,就可以看到下圖這樣的效果,用梵高著名的作品」星月夜「的風格就加工成了這樣新的視頻風格。

可以想像一下,如果這種處理能力在更多領域得以應用,它會產生什麼樣的神奇結果?前景是美好的,讓我們有無限遐想。事實上我們目前所從事的很多領域的應用開發都可以通過使用神經網路和深度學習來加以改變。對於深度學習而言,掌握它並不是難事。每一個程序員都可以很容易的掌握這種技術,利用所具備的資源,讓我們很快成為深度學習的程序開發人員。
結束語
未來究竟是什麼樣,我們沒有辦法預言。有位作家Ray Kurzweil在2005年寫了《奇點臨近》一書。在這本書裡面他明確告訴我們,那個時代很快到來。作為那個時代曙光前的人群,我們是不是有能力加速這個過程,利用我們學習的能力實現這個夢想呢?

中國人工智慧的發展
人工智慧的時代無疑已經到來,這個時代需要的當然就是掌握了人工智慧並將其解決具體問題的工程師。坦率的說,市場上這一類的工程師還屬於鳳毛麟角。職場上的薪酬待遇可以看得出來這樣的工程師的搶手的程度。人工智慧這門學科發展到今天,就學術自身而言已經具備了大規模產業化的能力。
所以說,對於工程師而言當務之急就是盡快的掌握應用人工智慧的應用技術。當下在互聯網上關於人工智慧的學習資料可以說已經是「汗牛充棟」,那些具備了快速學習能力的工程師一定會在人工智慧的大潮當中脫穎而出。
中國發展人工智慧產業的環境已經具備。無論從創業環境、人員的素質乃至市場的機遇而言完全具備了產生產業變革的一切條件。與美國相比較,在人工智慧的許多領域中國團隊的表現也可以說是不逞多讓。就人工智慧的技術層面而言,中國的工程師與全球最好的技術團隊正處於同一個起跑線上。
時不我待,中國的工程師是有機會在這個領域大展身手的。不過值得注意的是,要切忌兩點:一是好高騖遠,盲目與國外攀比。畢竟積累有長短,術業有專攻,我們要立足於已有的積累,尋求逐步的突破。二是一擁而上,盲目追求市場的風口。人工智慧的工程化需要大量的基礎性的積累,並非一蹴而就簡單復制就可以成功。
中國的科研技術人員在人工智慧領域的成就有目共睹。在王詠剛的一篇文章裡面,他統計了從2013年到2015年SCI收錄的「深度學習」論文,中國在2014年和2015年超已經超過了美國居於領跑者的位置。
另外一讓我感到驚訝的事情,Google的JeffDean在2016年發表過一篇名為《TensorFlow:Asystemforlarge-scalemachinelearning》的論文。文章的22個作者裡面,明顯是中國名字的作者占已經到了1/5。如果要列舉中國人/華人在人工智慧領域里的大牛,吳恩達、孫劍、楊強、黃廣斌、馬毅、張大鵬……很容易就可以說出一大串。
對於中國來說目前的當務之急是人工智慧技術的產業化,唯有如此我們才可以講科研/智力領域的優勢轉化為整體的、全面的優勢。在這一點上,中國是全球最大的消費市場以及製造業強國,我們完全有機會藉助市場的優勢成為這個領域的領先者。
矽谷創新企業
矽谷雖然去過許多回,但一直無緣在那裡長期工作。在人工智慧領域的市場我們聽到的更多是圍繞Google、Apple、Intel、Amazon這樣的一些大型科技公司的一舉一動。但是在美國市場上還有一大批小型的創業企業在人工智慧這個領域有驚艷的表現。僅以矽谷區域的公司為例:
Captricity,提供了手寫數據的信息提取;
VIVLab,針對語音識別開發了虛擬助手服務;
TERADEEP,利用FPGA提供了高效的卷積神經網路的方案;
還有提供無人駕駛解決方案的NetraDyne。
這個名單還可以很長,還有許許多多正在利用人工智慧技術試圖去創造歷史的團隊正在打造他們的夢想。這些團隊以及他們正在專注的領域是值得我們去學習和體會的。

4. 如何選擇深度學習優化器

變一個樣子就不會了 多將知識歸納總結。此之謂有深度也,前後聯系起來,適當拓展深度學習主要是指你學習中知識點的深入理解 掌握一些規律通性,而不是只停留於書本的表面

5. 如何利用 TVM 優化深度學習GPU op

深度學習需要具備三個因素,1,演算法2,GPU機器3,資料庫。GPU選擇的話,由於一般的深度學習都不需要單精度,所以性價比最高的GPU是GTX系列,比如TItanx,titanx是現在深度學慣用的最多的卡。需要了解

6. 深度學習和傳統機器學習相比有哪些優勢

一、數據依賴性

深度學習與傳統的機器學習最主要的區別在於隨著數據規模的增加其性能也不斷增長。當數據很少時,深度學習演算法的性能並不好。這是因為深度學習演算法需要大量的數據來完美地理解它。

三、硬體依賴

深度學習演算法需要進行大量的矩陣運算,GPU 主要用來高效優化矩陣運算,所以 GPU 是深度學習正常工作的必須硬體。與傳統機器學習演算法相比,深度學習更依賴安裝 GPU 的高端機器。

二、特徵處理

特徵處理是將領域知識放入特徵提取器裡面來減少數據的復雜度並生成使學習演算法工作的更好的模式的過程。特徵處理過程很耗時而且需要專業知識。

深度學習嘗試從數據中直接獲取高等級的特徵,這是深度學習與傳統機器學習演算法的主要的不同。基於此,深度學習削減了對每一個問題設計特徵提取器的工作。

例如,卷積神經網路嘗試在前邊的層學習低等級的特徵,然後學習部分人臉,然後是高級的人臉的描述。更多信息可以閱讀神經網路機器在深度學習裡面的有趣應用。

當應用傳統機器學習演算法解決問題的時候,傳統機器學習通常會將問題分解為多個子問題並逐個子問題解決最後結合所有子問題的結果獲得最終結果。相反,深度學習提倡直接的端到端的解決問題。

7. 不同的深度學習模型有各自最適用的最優化方法嗎

深度學習和機器學習的區別是,深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。

8. 深度學習優化器有必要改么

需要。
深度學習者應該是有獨立的價值判斷,能夠不斷的接收新知識和新事物,願意為自己感興趣的領域長久的堅持。

9. Devcppdevc c++沒辦法編譯,編譯按鈕是無法點擊的(是暗著的),搞了好久都沒辦法,有沒有

一打開這個軟體編譯按鈕當然是暗著的。點擊文件-新建-源代碼,就發現亮了。或者直接在某個文件夾新建一個.c後綴的文件用devc++打開。如果都無效,可能是軟體安裝有問題,建議換一個安裝包重新安裝試試。

10. 如何開啟深度學習之旅

如何開啟深度學習之旅?這三大類125篇論文為你導航(附資源下載)

如果你現在還是個深度學習的新手,那麼你問的第一個問題可能是「我應該從哪篇文章開始讀呢?在 G上,s准備了一套深度學習閱讀清單,而且這份清單在隨時更新。

項目地址:

這份清單依照下述 4 條原則建立:

從整體輪廓到細節

從過去到當代

從一般到具體領域

聚焦當下最先進技術

你會發現很多非常新但很值得一讀的論文。這份清單我會持續更新。

1、深度學習的歷史與基礎知識

1.0 書籍

[0] Bengio, Yoshua, Ian J. Goodfellow, and Aaron Courville. 深度學習(Deep learning), An MIT Press book. (2015). (這是深度學習領域的聖經,你可以在讀此書的同時閱讀下面的論文)。

1.1 調查類:

[1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. 深度學習 (Deep learning), Nature 521.7553 (2015): 436-444. (深度學習三位大牛對各種學習模型的評價)

1.2 深度信念網路(DBN)(深度學習前夜的里程碑)

[2] Hinton, Geoffrey E., Simon Osindero, and Yee-Whye Teh. 一個關於深度信念網路的快速學習演算法(A fast learning algorithm for deep belief nets), (深度學習的前夜)

[3] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. 使用神經網路降低數據的維度(Recing the dimensionality of data with neural networks), (里程碑式的論文,展示了深度學習的可靠性)

1.3 ImageNet 的演化(深度學習從這里開始)

[4] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. 使用深度卷積神經網路進行 ImageNet 分類任務(Imagenet classification with deep convolutional neural networks)(AlexNet, 深度學習的突破)

[5] Simonyan, Karen, and Andrew Zisserman. 針對大尺度圖像識別工作的的超深卷積網路(Very deep convolutional networks for large-scale image recognition) (VGGNet, 神經網路開始變得非常深!)

[6] Szegedy, Christian, et al. 更深的卷積(Going deeper with convolutions)(GoogLeNet)

[7] He, Kaiming, et al. 圖像識別的深度殘差學習(Deep resial learning for image recognition)(ResNet,超級超級深的深度網路!CVPR--IEEE 國際計算機視覺與模式識別會議-- 最佳論文)

1.4 語音識別的演化

[8] Hinton, Geoffrey, et al. 語音識別中深度神經網路的聲學建模(Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups)(語音識別中的突破)

[9] Graves, Alex, Abdel-rahman Mohamed, and Geoffrey Hinton. 用深度循環神經網路進行語音識別(Speech recognition with deep recurrent neural networks)(RNN)

[10] Graves, Alex, and Navdeep Jaitly. 面向端到端語音識別的循環神經網路(Towards End-To-End Speech Recognition with Recurrent Neural Networks)

[11] Sak, Ha?im, et al. 語音識別中快且精準的循環神經網路聲學模型(Fast and accurate recurrent neural network acoustic models for speech recognition)(語音識別系統)

[12] Amodei, Dario, et al. Deep speech 2:英語和漢語的端到端語音識別(Deep speech 2: End-to-end speech recognition in english and mandarin)(網路語音識別系統)

[13] W. Xiong, J. Droppo, X. Huang, F. Seide, M. Seltzer, A. Stolcke, D. Yu, G. Zweig,在對話語音識別中實現人類平等(Achieving Human Parity in Conversational Speech Recognition)

當你讀完了上面給出的論文,你會對深度學習歷史有一個基本的了解,深度學習建模的基本架構(包括了 CNN,RNN,LSTM)以及深度學習如何可以被應用於圖像和語音識別問題。下面的論文會讓你對深度學習方法,不同應用領域中的深度學習技術和其局限有深度認識。

2 深度學習方法

2.1 模型

[14] Hinton, Geoffrey E., et al. 通過避免特徵檢測器的共適應來改善神經網路(Improving neural networks by preventing co-adaptation of feature detectors)(Dropout)

[15] Srivastava, Nitish, et al. Dropout:一種避免神經網路過度擬合的簡單方法(Dropout: a simple way to prevent neural networks from overfitting)

[16] Ioffe, Sergey, and Christian Szegedy. Batch normalization:通過減少內部協變數加速深度網路訓練(Batch normalization: Accelerating deep network training by recing internal covariate shift)(2015 年一篇傑出論文)

[17] Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton.層歸一化(Layer normalization)(批歸一化的升級版)

[18] Courbariaux, Matthieu, et al. 二值神經網路:訓練神經網路的權重和激活約束到正 1 或者負 1(Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to+ 1 or?1)(新模型,快)

[19] Jaderberg, Max, et al. 使用合成梯度的解耦神經介面(Decoupled neural interfaces using synthetic gradients)(訓練方法的發明,令人驚嘆的文章)

[20] Chen, Tianqi, Ian Goodfellow, and Jonathon Shlens. Net2net:通過知識遷移加速學習(Net2net: Accelerating learning via knowledge transfer) (修改之前的訓練網路以減少訓練)

[21] Wei, Tao, et al. 網路形態(Network Morphism)(修改之前的訓練網路以減少訓練 epoch)

2.2 優化

[22] Sutskever, Ilya, et al. 有關深度學習中初始化與動量因子的研究(On the importance of initialization and momentum in deep learning) (動量因子優化器)

[23] Kingma, Diederik, and Jimmy Ba. Adam:隨機優化的一種方法(Adam: A method for stochastic optimization)(可能是現在用的最多的一種方法)

[24] Andrychowicz, Marcin, et al. 通過梯度下降學習梯度下降(Learning to learn by gradient descent by gradient descent) (神經優化器,令人稱奇的工作)

[25] Han, Song, Huizi Mao, and William J. Dally. 深度壓縮:通過剪枝、量子化訓練和霍夫曼代碼壓縮深度神經網路(Deep compression: Compressing deep neural network with pruning, trained quantization and huffman coding) (ICLR 最佳論文,來自 DeePhi 科技初創公司,加速 NN 運行的新方向)

[26] Iandola, Forrest N., et al. SqueezeNet:帶有 50x 更少參數和小於 1MB 模型大小的 AlexNet-層級精確度(SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 1MB model size.) (優化 NN 的另一個新方向,來自 DeePhi 科技初創公司)

2.3 無監督學習/深度生成模型

[27] Le, Quoc V. 通過大規模無監督學習構建高級特徵(Building high-level features using large scale unsupervised learning.) (里程碑,吳恩達,谷歌大腦,貓)

[28] Kingma, Diederik P., and Max Welling. 自動編碼變異貝葉斯(Auto-encoding variational bayes.) (VAE)

[29] Goodfellow, Ian, et al. 生成對抗網路(Generative adversarial nets.)(GAN, 超酷的想法)

[30] Radford, Alec, Luke Metz, and Soumith Chintala. 帶有深度捲麴生成對抗網路的無監督特徵學習(Unsupervised representation learning with deep convolutional generative adversarial networks.)(DCGAN)

[31] Gregor, Karol, et al. DRAW:一個用於圖像生成的循環神經網路(DRAW: A recurrent neural network for image generation.) (值得注意的 VAE,傑出的工作)

[32] Oord, Aaron van den, Nal Kalchbrenner, and Koray Kavukcuoglu. 像素循環神經網路(Pixel recurrent neural networks.)(像素 RNN)

[33] Oord, Aaron van den, et al. 使用像素 CNN 解碼器有條件地生成圖像(Conditional image generation with PixelCNN decoders.) (像素 CNN)

2.4 RNN/序列到序列模型

[34] Graves, Alex. 帶有循環神經網路的生成序列(Generating sequences with recurrent neural networks.)(LSTM, 非常好的生成結果,展示了 RNN 的力量)

[35] Cho, Kyunghyun, et al. 使用 RNN 編碼器-解碼器學習片語表徵用於統計機器翻譯(Learning phrase representations using RNN encoder-decoder for statistical machine translation.) (第一個序列到序列論文)

[36] Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. 運用神經網路的序列到序列學習(Sequence to sequence learning with neural networks.」)(傑出的工作)

[37] Bahdanau, Dzmitry, KyungHyun Cho, and Yoshua Bengio. 通過共同學習來匹配和翻譯神經機器翻譯(Neural Machine Translation by Jointly Learning to Align and Translate.)

[38] Vinyals, Oriol, and Quoc Le. 一個神經對話模型(A neural conversational model.)(聊天機器人上的序列到序列)

2.5 神經圖靈機

[39] Graves, Alex, Greg Wayne, and Ivo Danihelka. 神經圖靈機器(Neural turing machines.)arXiv preprint arXiv:1410.5401 (2014). (未來計算機的基本原型)

[40] Zaremba, Wojciech, and Ilya Sutskever. 強化學習神經圖靈機(Reinforcement learning neural Turing machines.)

[41] Weston, Jason, Sumit Chopra, and Antoine Bordes. 記憶網路(Memory networks.)

[42] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. 端到端記憶網路(End-to-end memory networks.)

[43] Vinyals, Oriol, Meire Fortunato, and Navdeep Jaitly. 指示器網路(Pointer networks.)

[44] Graves, Alex, et al. 使用帶有動力外部內存的神經網路的混合計算(Hybrid computing using a neural network with dynamic external memory.)(里程碑,結合上述論文的思想)

2.6 深度強化學習

[45] Mnih, Volodymyr, et al. 使用深度強化學習玩 atari 游戲(Playing atari with deep reinforcement learning.) (第一篇以深度強化學習命名的論文)

[46] Mnih, Volodymyr, et al. 通過深度強化學習達到人類水準的控制(Human-level control through deep reinforcement learning.) (里程碑)

[47] Wang, Ziyu, Nando de Freitas, and Marc Lanctot. 用於深度強化學習的決斗網路架構(Dueling network architectures for deep reinforcement learning.) (ICLR 最佳論文,偉大的想法 )

[48] Mnih, Volodymyr, et al. 用於深度強化學習的非同步方法(Asynchronous methods for deep reinforcement learning.) (當前最先進的方法)

[49] Lillicrap, Timothy P., et al. 運用深度強化學習進行持續控制(Continuous control with deep reinforcement learning.) (DDPG)

[50] Gu, Shixiang, et al. 帶有模型加速的持續深層 Q-學習(Continuous Deep Q-Learning with Model-based Acceleration.)

[51] Schulman, John, et al. 信賴域策略優化(Trust region policy optimization.) (TRPO)

[52] Silver, David, et al. 使用深度神經網路和樹搜索掌握圍棋游戲(Mastering the game of Go with deep neural networks and tree search.) (阿爾法狗)

2.7 深度遷移學習/終身學習/尤其對於 RL

[53] Bengio, Yoshua. 表徵無監督和遷移學習的深度學習(Deep Learning of Representations for Unsupervised and Transfer Learning.) (一個教程)

[54] Silver, Daniel L., Qiang Yang, and Lianghao Li. 終身機器學習系統:超越學習演算法(Lifelong Machine Learning Systems: Beyond Learning Algorithms.) (一個關於終生學習的簡要討論)

[55] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. 提取神經網路中的知識(Distilling the knowledge in a neural network.) (教父的工作)

[56] Rusu, Andrei A., et al. 策略提取(Policy distillation.) (RL 領域)

[57] Parisotto, Emilio, Jimmy Lei Ba, and Ruslan Salakhutdinov. 演員模仿:深度多任務和遷移強化學習(Actor-mimic: Deep multitask and transfer reinforcement learning.) (RL 領域)

[58] Rusu, Andrei A., et al. 漸進神經網路(Progressive neural networks.)(傑出的工作,一項全新的工作)

2.8 一次性深度學習

[59] Lake, Brenden M., Ruslan Salakhutdinov, and Joshua B. Tenenbaum. 通過概率程序歸納達到人類水準的概念學習(Human-level concept learning through probabilistic program inction.)(不是深度學習,但是值得閱讀)

[60] Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. 用於一次圖像識別的孿生神經網路(Siamese Neural Networks for One-shot Image Recognition.)

[61] Santoro, Adam, et al. 用記憶增強神經網路進行一次性學習(One-shot Learning with Memory-Augmented Neural Networks ) (一個一次性學習的基本步驟)

[62] Vinyals, Oriol, et al. 用於一次性學習的匹配網路(Matching Networks for One Shot Learning.)

[63] Hariharan, Bharath, and Ross Girshick. 少量視覺物體識別(Low-shot visual object recognition.)(走向大數據的一步)

3 應用

3.1 NLP(自然語言處理)

[1] Antoine Bordes, et al. 開放文本語義分析的詞和意義表徵的聯合學習(Joint Learning of Words and Meaning Representations for Open-Text Semantic Parsing.)

[2] Mikolov, et al. 詞和短語及其組合性的分布式表徵(Distributed representations of words and phrases and their compositionality.) (word2vec)

[3] Sutskever, et al. 運用神經網路的序列到序列學習(Sequence to sequence learning with neural networks.)

[4] Ankit Kumar, et al. 問我一切:動態記憶網路用於自然語言處理(Ask Me Anything: Dynamic Memory Networks for Natural Language Processing.)

[5] Yoon Kim, et al. 角色意識的神經語言模型(Character-Aware Neural Language Models.)

[6] Jason Weston, et al. 走向人工智慧-完成問題回答:一組前提玩具任務(Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks.) (bAbI 任務)

[7] Karl Moritz Hermann, et al. 教機器閱讀和理解(Teaching Machines to Read and Comprehend.)(CNN/每日郵件完形風格問題)

[8] Alexis Conneau, et al. 非常深度捲曲網路用於自然語言處理(Very Deep Convolutional Networks for Natural Language Processing.) (在文本分類中當前最好的)

[9] Armand Joulin, et al. 詭計包用於有效文本分類(Bag of Tricks for Efficient Text Classification.)(比最好的差一點,但快很多)

閱讀全文

與深度學習編譯優化器相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:573
python員工信息登記表 瀏覽:371
高中美術pdf 瀏覽:156
java實現排列 瀏覽:510
javavector的用法 瀏覽:978
osi實現加密的三層 瀏覽:226
大眾寶來原廠中控如何安裝app 瀏覽:908
linux內核根文件系統 瀏覽:236
3d的命令面板不見了 瀏覽:520
武漢理工大學伺服器ip地址 瀏覽:143
亞馬遜雲伺服器登錄 瀏覽:519
安卓手機如何進行文件處理 瀏覽:67
mysql執行系統命令 瀏覽:923
php支持curlhttps 瀏覽:139
新預演算法責任 瀏覽:441
伺服器如何處理5萬人同時在線 瀏覽:246
哈夫曼編碼數據壓縮 瀏覽:421
鎖定伺服器是什麼意思 瀏覽:382
場景檢測演算法 瀏覽:615
解壓手機軟體觸屏 瀏覽:343