讀者注意:在這里引入這個材料可能有點突兀。了解思想過程的一種方法是遵循直覺機器博客:https:///intuitionmachine 深度學習架構可以被描述為建立機器學習系統(tǒng)的新方法或風格。深度學習更有可能導致更先進的人工智能形式。這方面的證據(jù)是自十年來以來發(fā)生的巨大突破。在新的樂觀的氛圍中,我們現(xiàn)在又在一個新的AI春天。不幸的是,目前的深度學習狀態(tài)似乎有太多的類似于煉金術的方式。每個人似乎都有自己的黑魔法設計架構的方法。因此,該領域需要向前邁進,爭取化學,或者甚至可以進行深度學習的周期表。雖然深入學習仍處于發(fā)展初期階段,但本書力求在深入學習中形成一些統(tǒng)一的思想。它利用稱為模式語言的描述方法。 模式語言是從稱為模式的實體衍生而來的語言,當組合形式解決復雜問題時。每個模式描述一個問題并提供替代解決方案。模式語言是表達從經(jīng)驗中得出的復雜解決方案的一種方法。改進語言表達的好處是,其他從業(yè)人員能夠更好地了解復雜主題以及更好地表達解決問題的方法。 大多數(shù)計算機科學領域的文學,使用短語“設計模式”而不是“模式語言”。我們故意使用“模式語言”來反映深度學習領域是一個新興而又快速發(fā)展的領域,并不像計算機科學中的其他主題那樣成熟。我們描述的模式實際上不是模式,而是可能是根本的。我們決不會確定哪個是真正的根本,只有進一步的探索和澄清才能在這個領域達成共識。也許在將來,一個真正的設計模式書會出現(xiàn),反映了這個領域的成熟度。 模式語言最初由克里斯托弗·亞歷山大(Christopher Alexander)推出,用于描述企業(yè)和城鎮(zhèn)的建筑。這些想法后來被面向對象編程(OOP)從業(yè)者采用來描述OOP程序的設計。 GoF的開創(chuàng)性書“設計模式”證明了這種方法的有效性。模式語言進一步擴展到其他領域,如用戶界面,交互設計,企業(yè)集成,SOA和可擴展性設計。 在機器學習領域(ML)中,出現(xiàn)了一種稱為“深度學習”的新興實踐。在ML中,有許多新的術語,如人造神經(jīng)網(wǎng)絡(ANN),隨機森林,支持向量機(SVM)和非負矩陣因式分解(NMF)。然而這些通常指的是特定類型的機器學習算法。相比之下,深度學習(DL)并不是一種算法,而是一類傾向于表現(xiàn)出類似特征的算法。 DL系統(tǒng)是由多層(有時稱為多級感知器)構成的ANN。這個想法并不是全新的,因為它是在20世紀60年代首次提出的。然而,在推進計算技術(即GPU)和更大的培訓數(shù)據(jù)源的幫助下,對該領域的興趣已經(jīng)爆發(fā)。自2011年以來,DL系統(tǒng)在機器學習領域取得了令人印象深刻的成果。 當DL意識到實際上有很多算法,而不僅僅是一種類型時,與DL的混淆就會出現(xiàn)。我們發(fā)現(xiàn)傳統(tǒng)的前饋網(wǎng)絡也被稱為全連接網(wǎng)絡(FCN),卷積網(wǎng)絡(ConvNet),循環(huán)神經(jīng)網(wǎng)絡(RNN)和較少使用的限制玻爾茲曼機器(RBM)。它們都具有共同的特征,因為這些網(wǎng)絡是使用層次結構構建的。例如,一個常見的模式是使用可分層,對DL系統(tǒng)的構建的這種約束導致將機器演變成學習分類的一種增量方式。最近有許多模式被發(fā)現(xiàn),對于從業(yè)者來說,這些模式的匯編將是富有成效的。 模式語言是描述和理解深度學習的理想工具。人們想相信深度學習有基于先進數(shù)學的堅實基礎。大多數(shù)學術研究論文將會引發(fā)高階數(shù)學,如路徑積分,張量,希爾伯特空間,測量理論等,但不要讓數(shù)學分散自己的實際,使我們的集體認識仍然很小。你看到的數(shù)學有其固有的局限性。物理科學家已經(jīng)知道了這個世紀。我們以這樣的方式制定理論,使得表達在數(shù)學上是方便的。數(shù)學上的便利意味著我們使用的數(shù)學表達式可以方便地被操縱到其他表達式中。例如,高斯分布是普遍存在的,不是因為它的一些神奇的結構,現(xiàn)實已經(jīng)給了我們。它是普遍存在的,因為它在數(shù)學上是方便的。 模式語言已被許多模糊領域所利用。原始模式語言圍繞著建筑(即建筑物和城鎮(zhèn))的討論。有模式語言專注于用戶界面,可用性,交互設計和軟件過程。這些都沒有簡明的數(shù)學基礎,但我們從這些模式語言中提取真正的價值。事實上,模式語言的規(guī)范與數(shù)學中新的代數(shù)或類別理論的創(chuàng)造并不是太遠。代數(shù)是嚴格一致的,但它們純粹是抽象的,可能不需要與現(xiàn)實有任何聯(lián)系。然而,模式語言與現(xiàn)實有關,它們的一致性規(guī)則比代數(shù)更加輕松。在我們試圖理解機器學習的復雜世界(或一般學習)中,我們不能總是將青蛙跳入數(shù)學?,F(xiàn)實可能是這樣的,我們目前的數(shù)學是無法描述正在發(fā)生的事情。 許多機器學習從業(yè)者在首次呈現(xiàn)“模式”這個想法時會遇到的另一個混亂是,他們錯誤地將其與在自己的領域中通常使用“模式”一詞相關聯(lián)。機器學習涉及開發(fā)執(zhí)行模式識別的算法。所以當你用模式深入學習google的時候,你會發(fā)現(xiàn)涵蓋模式識別主題的文學。這本書不是常規(guī)機器學習意義上的模式識別。 介紹涵蓋這本書的動機。為什么深入學習?涵蓋這本書的結構。這本書的中心主題是,通過了解我們在深度學習實踐中發(fā)現(xiàn)的許多模式及其相互關系,我們開始理解我們?nèi)绾巫詈玫刈珜懡鉀Q方案。 模式語言 模式語言是從稱為模式的實體衍生而來的語言,當組合形式解決復雜問題時。每個模式描述一個問題并提供解決方案。模式語言是表達從經(jīng)驗中衍生出的復雜解決方案的一種方式,使得其他人可以更好地了解解決方案。本章將介紹“模式語言”的概念以及本書“模式”的結構。 理論 本章涵蓋了對理解框架至關重要的一些基礎數(shù)學。它提供了一些常用的術語和符號,將在整本書中使用。這本書不包括線性代數(shù)或概率的數(shù)學介紹材料。這已經(jīng)在“深度學習”書中得到很好的涵蓋。然而,本書將提出一個數(shù)學框架,作為如何推理神經(jīng)網(wǎng)絡的指導框架。這個框架是從類別理論,動力系統(tǒng),信息理論,信息幾何和博弈理論的構想。 方法 從其他軟件開發(fā)方法(如敏捷開發(fā)和精簡方法)獲得靈感,并將其應用于深度學習領域。深度學習是一種新型的架構,其創(chuàng)建的學習機器類似于軟件開發(fā)。然而,DL是不同的,因為系統(tǒng)能夠發(fā)展自己。有足夠的復雜性成為覆蓋其上的一種結構所必需的,以幫助指導實踐者的實踐者。 規(guī)范模式 本章是閱讀其他模式章節(jié)的推薦先決條件。在這里,我們討論出現(xiàn)基本的模式,并了解其他DL模式的基礎。 模型模式 本章涵蓋實踐中發(fā)現(xiàn)的各種模型。 復合模型模式 本章介紹了模型及其行為的集合。 內(nèi)存模式 以前的模型章節(jié)探討了普遍功能的培訓。在本章中,我們將探討如何集成內(nèi)存以構建更強大的解決方案。 特征模式 本章將介紹用于表示輸入和隱藏數(shù)據(jù)的各種方法。 學習模式 這一章在實踐中發(fā)現(xiàn)了迭代學習方法。 集體學習模式 本章介紹了多種神經(jīng)網(wǎng)絡組合方法,以解決超出分類的問題。 解釋模式 本章介紹網(wǎng)絡可以向用戶提供結果和反饋的不同方式。 服務模式 本章介紹了在現(xiàn)場部署神經(jīng)網(wǎng)絡時發(fā)現(xiàn)的操作模式。 應用 深度學習數(shù)據(jù)集 常問問題 停車場 TensorFlow實踐 教程 黑魔法 塊鏈 自行車自動化設計模式 觀眾和覆蓋面這種模式語言的觀眾是先前接觸人工神經(jīng)網(wǎng)絡(ANN)的讀者。對ANN的介紹或大學水平數(shù)學的介紹沒有涵蓋。為了一個很好的介紹,請閱讀Ian Goodfellow,Yoshua Bengio和Aaron Courville的綜合文字“深度學習”。這本圖書書的覆蓋范圍比“深度學習”更為狹窄。本書著重于實踐中運作良好的技術。因此,作為一個例子,盡管從歷史的角度來看,我們并不重視限制玻爾茲曼機器。我們也忽略了本書涵蓋的幾個主題,如結構概率模型和蒙特卡羅方法,盡管它們在其他機器學習方法中的重要性。古典統(tǒng)計是一個重要的觀點,但是在這本書中,我們認為這些古典概念在高度維度的領域中不能很好地轉化。我們希望這個文本足夠集中和緊湊,讀者將會對如何應用這種新興技術有一個堅實的看法。 我們也將嚴格避免對生物學可信性的討論。這個話題超出了本書的范圍,我們也認為,考慮到從原來的感知器提案以來已經(jīng)過去了60年,這種討論是不屑一顧的。半個世紀前提出的模式,最多只能說明一個實際的生物神經(jīng)元如何運作的卡通形象。在許多神經(jīng)網(wǎng)絡文學中,我們發(fā)現(xiàn)這是一種荒謬的浪費紙,這種文學在基于生物靈感的手波波動下進行了一次嘗試。 呈現(xiàn)人造神經(jīng)網(wǎng)絡(ANN)或深度學習(DL)的典型方法是采取歷史觀點,從1957年感知器建議開始。通過研究歷史和思想如何隨著時間的推移而有所了解。 ANN和DL研究的歷史確實很有趣,并且解釋了為什么DL成為過去幾年的熱門話題,但是從研究歷史中獲得的洞察力只能最小程度地提高對這一復雜主題的理解。 我們采用非常簡單的邏輯方法對DL做出了很少的假設。我們做出的主要假設是,我們有一個學習機是一個動態(tài)系統(tǒng),目的是找出最適合的模型,給出它所觀察到的數(shù)據(jù)。所以我們只關心我們?nèi)绾味x這個目標,我們將它定義為系統(tǒng)的熵。一個學習系統(tǒng)可以最大程度地減少它所觀察到的內(nèi)在模型與其內(nèi)部模型之間的相對熵。我們從幾個世紀的物理學知道的是,我們可以通過其測量的能量描述一個動力學系統(tǒng),并且我們有關于控制系統(tǒng)演變的這種能量定義的方程式。以類似的方式,我們采取相對熵并定義內(nèi)部機器模型的進化(也稱為學習)方程。如果方程是不受約束的,則模型可以演化成許多不同的方式。因此,我們?nèi)恿艘淮蠖鸭s束,使機器不僅可以在合理的時間內(nèi)學習,而且可以在內(nèi)部模型中學習抽象。這些抽象是實現(xiàn)泛化所必需的,并允許機器準確地對先前從未遇到過的觀察結果進行預測。 本書不涵蓋性能優(yōu)化的主題。還有其他的文本可以探索更快的算法以及分布式算法。理想情況下,可以使用已經(jīng)支持優(yōu)化GPU算法的最新框架以及并行計算的不同選項。例如TensorFlow已經(jīng)支持Nvdia的最新的CuDNN庫。此外,TensorFlow支持跨多個計算節(jié)點的分布式計算。有替代框架支持的分布式計算的替代實現(xiàn),但這超出了本書的范圍。 注意:這是一個進步的工作。像https://www./deeplearningpatterns一樣接收更新?;蛘撸凑彰襟w:https:///intuitionmachine |
|