DNN:DL讨论与DNN经典论文汇总
引言:
???????達爾文的進化哲學:適者生存!其原因不是因為適者生存,而是因為不適者都會死去;
???????沒有免費的午餐定理:沒有普適性的優越算法,如果一個算法對一個或一些應用相對其他算法表現極大的優越性,那么在特定領域必然也體驗足夠的弱勢;
???????純科學的存在價值:不能轉化為應用的科學是沒有價值的,純科學的存在價值,就是維持整個科學體系的嚴謹性;
???????理想與現實:在實踐多年以后,計算機科學家會發現其畢生的熱愛只是對未來美好的憧憬的期待,并去努力地彌補那些差距;
???????奧卡姆剃刀原理:如果我們可以以一種確定的方式解決問題,就不用模糊的方法;如果我們能以一種簡單的方法解決問題,就不使用復雜方法;
Tips:?? http://www.qiuxe.com/?p=26? 作者:丘憲恩
???????兩個小朋友學習加減法,聰明的小朋友掌握了加減法的規律,例如進位制等,很快學會了。來了個新的題目,他按照那些規律很快就算出來了。但是笨一點的小朋友可能沒掌握到規律,就死記硬背,把所以可能的兩個數相加的結果都背了下來,來了個新的題目后發現這個東西見過,于是也很快給出來答案(但是他背得很累)。當然聰明的小朋友也是要記住一些東西的,但是他記住的東西非常少,只有一些簡單的規則和規律。
??????? 與之類似, ??? 聰明的算法和笨算法之間的最本質的區別之一就是它們要記住的東西不一樣,不需要記任何東西的算法是不存在的。聰明的算法,只需要記住少量的東西,如貝葉斯只需要記住各個特征的概率分布,線性回歸只需要記住各個特征的權重;而笨算法如神經網絡就要記住30億個參數!
???????這只是作者和大家開的一個玩笑,并且下面也做了相當的解釋;貝葉斯和logistic回歸可以稱之為算法時適當的,而DNN簡單的歸結為算法就不適當了,DNN更像是一個數據與結構(算法)相結合的大的模型。
???????簡單bayes網絡和logistic分類器只記住少量參數,其特性基于人給出的先驗知識:例如假設特征獨立,問題線性可分等。這些都是經過人的智能進行抽象提取的高層知識總結,可以應用于特定領域你,那么泛化能力必然降低。
?????????
1. 關于DNN訓練:
???????為什么神經網絡特別是深度網絡結構有著比較好的識別效果。神經網絡特別是深度網絡的特點之一就是層次多,節點多,其結果就是參數多。舉個例子,就以Hinton 2006年發表在Science上的那篇文章Fig.1里面所用的網絡結構為例。在網絡在降維階段就有4層,節點數量分別是2000, 1000, 500, 30,層與層之間兩兩全連接,總共的參數數量為2000*1000*500*30= 3,000,000,000, 多達30億個參數!假設有10萬個訓練樣本,每一個訓練樣本相當于一個方程,10萬個樣本相當于10萬個方程(姑且不論方程相關性問題),但是總共有30億個參數!如果你比較熟悉方程理論的話,就會知道這很明顯就是個不定方程(參數數量比方程數量多)!不定方程是有無窮個解的,更別提通過訓練得到一些近似解了。所以用這么多的參數有那么好的識別效果一點也不足為奇。
???????但是還沒完,也許會有人爭辯說,雖然這是個不定方程問題,但是如何解釋泛化能力的問題呢?問得好!其實不定方程帶來的問題恰恰就是過擬合問題,也就是泛化能力不足。這一點早在上個世紀神經網絡開始流行的時候就已經被人詬病。所以才有了后來的各種各樣的正則化來解決過擬合的問題。
???????除了正則化技術,還可以通過用足夠多的訓練樣本進行大規模訓練來解決過擬合的問題。在現在數據越來越多,計算能力越來越強的大數據背景下,這種大規模訓練變得可能,這也就是為什么神經網絡現在能復興的原因之一(以前沒有那么多數據也沒有那么強的計算能力)。
???????但是且慢,當你的訓練樣本足夠多的時候,多到幾乎窮舉了所有樣本空間的時候,對新來的樣本正確識別就更加不足為奇了,因為所有可能樣本你都見過了,為什么會識別不出來呢?大規模訓練樣本加上大規模參數集,說的不好聽一點就是用超級野蠻超級暴力的方法強行記住了所有東西, 死記硬背,來了個新東西就去查找記憶,這還是智能么?
???????...... 說到底,對生物本身的智能認識不如我們對我們自己創造出來的DNN的認識,對生物智能的 “聰明”為何物,現在誰都給不了一個確切的定義。對AI的最好評定便是圖靈先生的 圖靈測試,所見即所得是我們還未曾見到本質之前對事物理解的最靠譜的方式,因為表象與本質具有本質的聯系。???????由此,可見DNN比bayesian網絡與logistic分類器聰明,因為我們可以看到了聰明的分類結果,而bayesian和logistic更像是一個執行工具。DNN近似于特征的重提取,表現出一定的智能。
???????DNN更像是一個數據存儲類型轉換器,它把大量的訓練樣本以參數的形式存儲在DNN里面;每一個參數模型對應了一個樣本集合模型,在巨大的模型映射里面,如果建立的映射足夠多,那么對模型的描述就足夠稠密,對于其應用的領域便足夠精確。
2.關于局部最優解:
???????ANN會陷入局部最優解,這并不代表ANN就不是智能;人腦的知識模型是一個不斷增長的模型,建立,擴增,再完備;在整個模型完備之前,在這個知識框架之內,對于某一個問題,得到的必然是局部最優解。
一:其中有些轉自于DL網站和其他網站:http://deeplearning.net
查看:深度學習是ML研究的一個較新的領域,其在結構上使ML更接近AI的原始目標.
1.? a brief introduction to Machine Learning for AI? :這個是簡介頁..
Table Of Contents
- Very Brief Introduction to Machine Learning for AI
- Intelligence
- Artificial Intelligence
- Machine Learning
- Formalization of Learning
- Supervised Learning
- Unsupervised Learning
- Local Generalization
- Distributed versus Local Representation and Non-Local Generalization
2. AI的子領域迅速崛起,并自立門戶,剩下一些執著的科學家還在尋找真正可以通曉整個邏輯的東西。
和 :
3.? an introduction to Deep Learning algorithms.:最好是把這個簡介看完...
經典文獻:Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trendsin Machine Learning, 2(1), 2009
4. 深度學習是關于學習多個表示和抽象層次,這些層次幫助解釋數據,例如圖像,聲音和文本。對于更多的關于深度學習算法的知識,查看:
- The monograph or review paper Learning Deep Architectures for AI (Foundations & Trends in Machine Learning, 2009).
- The ICML 2009 Workshop on Learning Feature Hierarchies webpage has a list of references.
- The LISA public wiki has a reading list and a bibliography.
- Geoff Hinton has readings from last year’s NIPS tutorial.
5. 這個算法的綜述有一些先決條件:
??????? Python給了科研工作者一個可以擺脫Matlab的產品級程序工具,并提供了優越特性.
???????應該首先知道一個關于python的知識,并熟悉numpy。
???????由于這個綜述是關于如何使用Theano,你應該首先閱讀Theano basic tutorial。
???????一旦你完成這些,閱讀我們的Getting Started章節---它將介紹概念定義,數據集,和利用隨機梯度下降來優化模型的方法。
?
純有監督學習算法可以按照以下順序閱讀:
無監督和半監督學習算法可以用任意順序閱讀(auto-encoders可以被獨立于RBM/DBM地閱讀):
- Auto Encoders, Denoising Autoencoders - description of autoencoders
- Stacked Denoising Auto-Encoders - easy steps into unsupervised pre-training for deep nets
- Restricted Boltzmann Machines - single layer generative RBM model
- Deep Belief Networks - unsupervised generative pre-training of stacked RBMs followed by supervised fine-tuning
關于mcRBM模型,我們有一篇新的關于從能量模型中抽樣的綜述:
- HMC Sampling - hybrid (aka Hamiltonian) Monte-Carlo sampling with scan()
?
二:算法簡介:
查看最新論文:Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trends in Machine Learning, 2(1), 2009
深度(Depth)????
此段原始鏈接:an introduction to Deep Learning
???????從一個輸入中產生一個輸出所涉及的計算可以通過一個流向圖( flow graph)來表示:流向圖是一種能夠表示計算的圖,在這種圖中每一個節點表示一個基本的計算并且一個計算的值(計算的結果被應用到這個節點的孩子節點的值)。考慮這樣一個計算集合,它可以被允許在每一個節點和可能的圖結構中,并定義了一個函數族。輸入節點沒有孩子,輸出節點沒有父親。
???????對于表達 的流向圖,可以通過一個有兩個輸入節點 和 的圖表示,其中一個節點通過使用和 作為輸入(例如作為孩子)來表示 ;一個節點僅使用 作為輸入來表示平方;一個節點使用 和 作為輸入來表示加法項(其值為 );最后一個輸出節點利用一個單獨的來自于加法節點的輸入計算SIN。
這種流向圖的一個特別屬性是深度(depth):從一個輸入到一個輸出的最長路徑的長度。
???????傳統的前饋神經網絡能夠被看做擁有等于層數的深度(比如對于輸出層為隱層數加1)。SVMs有深度2(一個對應于核輸出或者特征空間,另一個對應于所產生輸出的線性混合)。
?
深度架構的動機
學習基于深度架構的學習算法的主要動機是:
???????不充分的深度是有害的;
???????大腦有一個深度架構;
???????認知過程是深度的;
?
不充分的深度是有害的
???????在許多情形中深度2就足夠(比如logical gates, formal [threshold] neurons, sigmoid-neurons, Radial Basis Function [RBF] units like in SVMs)表示任何一個帶有給定目標精度的函數。但是其代價是:圖中所需要的節點數(比如計算和參數數量)可能變的非常大。理論結果證實那些事實上所需要的節點數隨著輸入的大小指數增長的函數族是存在的。這一點已經在logical gates, formal [threshold] neurons 和rbf單元中得到證實。在后者中Hastad說明了但深度是d時,函數族可以被有效地(緊地)使用O(n)個節點(對于n個輸入)來表示,但是如果深度被限制為d-1,則需要指數數量的節點數O(2^n)。
????? ? 我們可以將深度架構看做一種因子分解。大部分隨機選擇的函數不能被有效地表示,無論是用深地或者淺的架構。但是許多能夠有效地被深度架構表示的卻不能被用淺的架構高效表示(see the polynomials example in theBengio survey paper)。一個緊的和深度的表示的存在意味著在潛在的可被表示的函數中存在某種結構。如果不存在任何結構,那將不可能很好地泛化。
?
大腦有一個深度架構
???????例如,視覺皮質得到了很好的研究,并顯示出一系列的區域,在每一個這種區域中包含一個輸入的表示和從一個到另一個的信號流(這里忽略了在一些層次并行路徑上的關聯,因此更復雜)。這個特征層次的每一層表示在一個不同的抽象層上的輸入,并在層次的更上層有著更多的抽象特征,他們根據低層特征定義。
???????需要注意的是大腦中的表示是在中間緊密分布并且純局部:他們是稀疏的:1%的神經元是同時活動的。給定大量的神經元,任然有一個非常高效地(指數級高效)表示。
認知過程看起來是深度的
- 人類層次化地組織思想和概念;
- 人類首先學習簡單的概念,然后用他們去表示更抽象的;
- 工程師將任務分解成多個抽象層次去處理;
???????學習/發現這些概念(知識工程由于沒有反省而失敗?)是很美好的。對語言可表達的概念的反省也建議我們一個稀疏的表示:僅所有可能單詞/概念中的一個小的部分是可被應用到一個特別的輸入(一個視覺場景)。
?
學習深度架構的突破
2006年前,嘗試訓練深度架構都失敗了:訓練一個深度有監督前饋神經網絡趨向于產生壞的結果(同時在訓練和測試誤差中),然后將其變淺為1(1或者2個隱層)。
2006年的3篇論文改變了這種狀況,由Hinton的革命性的在深度信念網(Deep Belief Networks, DBNs)上的工作所引領:
- Hinton, G. E., Osindero, S. and Teh, Y., A fast learning algorithm for deep belief nets .Neural Computation 18:1527-1554, 2006
- Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle, Greedy Layer-Wise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
- Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
在這三篇論文中以下主要原理被發現:
- 表示的無監督學習被用于(預)訓練每一層;
- 在一個時間里的一個層次的無監督訓練,接著之前訓練的層次。在每一層學習到的表示作為下一層的輸入;
- 用無監督訓練來調整所有層(加上一個或者更多的用于產生預測的附加層);
???????DBNs在每一層中利用用于表示的無監督學習RBMs。Bengio et al paper 探討和對比了RBMs和auto-encoders(通過一個表示的瓶頸內在層預測輸入的神經網絡)。Ranzato et al paper在一個convolutional架構的上下文中使用稀疏auto-encoders(類似于稀疏編碼)。Auto-encoders和convolutional架構將在以后的課程中講解。
三:原始經典文獻:
(1):Hinton 06年發表在Science上面的奠基性著作:
?????????????? G. E. Hinton, R. R. Salakhutdinov, Reducing the Dimensionality of Data with Neural Networks, Science, vol. 313, no. 5786, pp. 504-507, 2006
?
(2):我想說的是,腦認知模型或許是最后的路徑...不過還是看的不夠遠啊
?
四:Andrew Ng談Deep Learning
Deep Learning與AI
《程序員》:
???????? Amara法則說,“我們傾向于高估科技的短期影響力,而又低估其長期影響力。”在你看來,Deep Learning的短期和長期影響分別是什么?歷史上,我們曾對實現人工智能有過錯誤估計,對于Deep Learning的前景,人們是否過于樂觀?
Andrew Ng:
??????? 我對Deep Learning的前景很樂觀,它的價值在過去幾年已得到印證,未來我們還會沿著這個方向繼續努力。語音識別、計算機視覺都將獲得長足進步,數據與科技的碰撞,會讓這一切變得更具價值。在短期,我們會看到身邊的產品變得更好;而長期,它有潛力改變我們與計算機的交互方式,并憑借它創造新的產品和服務。
??????? 不過圍繞Deep Learning,我也看到存在著某種程度的夸大,這是一種不健康的氛圍。它不單出現于媒體的字里行間,也存在于一些研究者之中。將Deep Learning描繪成對人腦的模擬,這種說法頗具吸引力,但卻是過于簡化的模仿,它距離真正的AI或人們所謂的“奇點”還相當遙遠。目前這項技術主要是從海量數據當中學習,理解數據,這也是現今有關Deep Learning技術研究和產品發展的驅動力。而具備與人的能力相匹配的AI需要無所不包,例如人類擁有豐富的感情、不同的動機,以及同感能力。這些都是當下Deep Learning研究尚未涉及的。
.............................《程序員》:
??????? 有一種說法是,對人腦機制理解的缺乏是我們開發智能機器的最大限制之一,在這個存在許多假設和未知的前沿領域進行研究,你怎樣判斷自己研究的方向和做出的各種選擇是否正確?
Andrew Ng:
???????誠然,神經科學尚未揭開人腦的運作機制,是對這項研究的一種制約。但如今我們嘗試的算法,大多只是粗略地基于神經科學研究的統計闡釋,這些研究啟迪我們的靈感,鼓勵我們嘗試新算法。但現實中,我們更主要地依據算法真實的運行效果進行評判,假如一味追求模擬神經的運作方式,不一定能帶來最優的結果。有時我們偏重神經科學原理,例如某些模擬大腦局部的算法;但更多時候,性能是準繩。若按比例劃分,前者大約只占2%,后者則占據98%。
因為我們不知道何種算法最優,所以才不斷嘗試,衡量是否取得進步的方式之一(并非唯一方式),是觀察新算法能否在應用中表現得更好,例如Web和圖像搜索結果是否更準確,或者語音識別的正確率更高。假如回望五年,你就會發現,那時我們曾認為頗有前景的算法,如今已然被拋棄。這些年,我們有規律地,甚至偶然地發現一些新算法,推動著這個領域持續前進。
.............................《程序員》:
???????關于Deep Learning的原理,已有許多人知曉。為了做出一流研究和應用,對于研究者來說,決勝的關鍵因素是什么?為何如今只有少數幾人,成為這個領域的頂尖科學家?
Andrew Ng:
???????關于決定因素,我認為有三點最為關鍵。
???????首先是數據,對于解決某些領域的問題,獲取數據并非輕而易舉;其次是計算基礎架構工具,包括計算機硬件和軟件;最后是這個領域的工程師培養,無論在斯坦福還是百度,我都對如何快速訓練工程師從事Deep Learning研究,成為這個領域的專家思索了很長時間。幸運的是,我從Coursera和大學的教學經歷中獲益良多。創新往往來自多個觀念的整合,源于一整支研究團隊,而非單獨一個人。
???????從事Deep Learning研究的一個不利因素在于,這還是一個技術快速發展的年輕領域,許多知識并非依靠閱讀論文便能獲得。那些關鍵知識,往往只存在于頂尖科學家的頭腦中,這些專家彼此相識,信息相互共享,卻不為外人所知。另外一些時候,這群頂尖科學家也不能確定自己的靈感源于何處,如何向其他人解釋。但我相信,越來越多的知識會傳遞給普通開發者;在百度,我也正努力尋找方法,將自己的靈感和直覺高效地傳授給其他研究者。盡管我們已有這方面的教程,但需要改進之處仍有很多。
此外,許多頂尖實驗室的迭代速度都非常快,而Deep Learning算法復雜,計算代價很高,這些實驗室都擁有優秀的工具與之配合,從快速迭代中學習進步。
............................《程序員》:
???????十年前,Jeff Hawkins在《On Intelligence》中已經向普通人描述了機器與智能之間的關系,這些描述與我們現在看到的Deep Learning似乎非常相似。在這最近的十年中,我們新學到了什么?
Andrew Ng:
???????包括我在內,Jeff Hawkins的作品啟發了許多AI研究者,多年以前,我個人還曾是Hawkins這家公司的技術顧問之一。但在現實中,每個人的實現細節和算法迥異,與這本書其實頗有不同。例如在書中,Hawkins極為強調與時間相關的臨時數據的重要性,而在Deep Learning中,雖然用到了臨時數據,但遠沒有那重要,另外網絡的架構也大不相同。在最近十年中,我們認識到了可擴展的重要性,另外我們還找到了進行非監督式學習更好的方式。
............................
《程序員》:
???????為了開發智能機器,許多年前,Daniel Hillis和他的Thinking Machines曾嘗試突破von Neumann架構,你覺得當今的硬件是否是實現智能機器的最好選擇?如果不是,當前的計算機架構有哪些限制,我們需要做哪方面的突破?
Andrew Ng:
???????這是一個有趣的話題。我們尚不知道怎樣的硬件架構是智能機器的最佳選擇,因而更需要擁有靈活性,快速嘗試不同的算法。在這方面,GPU相對易于編程,因而可以高效地嘗試不同的算法。作為對比,ASIC(專用集成電路)的運行速度比GPU更快,但開發適合Deep Learning的ASIC難度高、周期長,在漫長的研發過程中,很可能我們早已發現了新算法。
GPU與CPU結合是目前的首選硬件平臺,不過隨著技術的進一步成熟,這種現狀有可能發生改觀。例如,目前已有幾家初創公司正在研發專門用于Deep Learning的硬件系統。
后記:
????? ? ? ? ? 一把利劍好用與否還要看用劍者的水準,DNN也是如此.........................................................
總結
以上是生活随笔為你收集整理的DNN:DL讨论与DNN经典论文汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adobe photoshop cs6
- 下一篇: 宽带无线的趋势已来-无线网络技术发展趋势