03.01 如何才能深度學習呢?

用戶67600538


我將從意識與潛意識層次的視角來談學習。


有一個簡單的泛讀過程。

挑選一本書,粗略看,不求甚解,如果覺得不好,就淘汰。

如果覺得可以進入深度讀書階段。

深度的精讀過程

  • 刻意練習

掌握這本書的知識。【意識層次的學習】

設計知識,使它變成大腦的思維。【意識層次】

  • 刻意實踐使用

通過思維使用知識形成潛意識持有的信念,意識層次的反覆修煉過程。把新學的知識應用於實際的實踐。

方法:大腦模擬回放、思考、行動。

  • 自動化思維層次

意識層次掌握的東西貫徹到潛意識層次。【潛意識層次】。

深度讀書的基本方法

意識層次的一些特點,學習要根據意識的特點。

  1. 單任務

  2. 串行

  3. 慢思考

  4. 計算量大

  5. 比較耗能量

  6. 前臺運作


  7. 非自動化

學習一本新書,剛開始時,由於在意識層次學習東西,它只能是單任務的,串行、而且計算量大、比較費能量。

要把知識拆解成多個部分,A知識、B知識、C知識。尋找維度拆解、各個擊破。

掌握一些意識層次與潛意識層次工作的特點,有助於我們去明明白白學習,並能根據意識與潛意識層次的特點,來規劃和安排學習。

結論:

要達到深度學習,要了解意識層次與潛意識層次的特點,這只是深度學習其中最基礎的一個視角。


認知框架


看了一圈,大家都是從自我控制層面去講,那我就來講講具體的學習方法好了。

看上面的圖片文字,本回答提到的資料學習包都在那個號可以領↑


深度學習是近幾年比較熱門的科目,如果學好了對自己是大有裨益的。作為一個想初步入門深度學習的渣渣,我一開始是從這些方面去入手的:

一、收集整理身邊的人脈資源。

深度學習是一個比較複雜且系統的技術,在剛入門毫無基礎的情況下,其實詢問師兄師姐或者自己的導師是一個最簡單省時的方法,通過詢問,建立起自己對深度學習的一個初步認識,以打好基礎。近在身邊的資源,放著不問就真的很浪費啦~

二、網上資源—資料包學習

現在是互聯網時代,只需要敲擊鍵盤就可直接獲取到自己想要的東西。網上的很多號,都在無償分享一些資料包,這些資料包可能不是特別牛,但對於一個初次接觸深度學習的研究生來講,真的足夠了。

比如:

  • 谷歌機器學習速成課視頻全集,這是谷歌官方為自己內部員工能更好了解AI和機器學習基礎知識專門出的一個學習視頻,裡面不僅包含了課程精華內容,還有便於學習與實踐的練習題,重點是,人家還專門出了中文版!你就說貼不貼心!剛入門的話非常推薦看著系列視頻去學習!

  • 復旦大學邱錫鵬教授發佈教科書《神經網絡與深度學習》,全書共446頁,從基礎到研究前沿介紹了深度學習的核心概念與理論,足夠我們瞭解 DL 的前前後後。

  • 當然了,論文也是必須看的,但是論文那麼多,看起來也很頭疼怎麼辦?深度學習 Top100:近 5 年被引用次數最高論文合集送給你,覆蓋了優化/訓練方法、無監督/生成模型、卷積網絡模型和圖像分割/目標檢測等十大子領域。重要的論文能夠超越其應用領域讓人獲益。

  • 一直看覺得乾巴巴的文字閱讀我會覺得太枯燥,偶爾會上網選擇看視頻,YouTube上有一個兩分鐘讀論文的系列視頻,我一般是通過這些途徑去快速瞭解全球深度學習的最熱門進展。

以上就是我的回答,希望能幫助到你以及其他想學習這方面的同學,如果喜歡的話,記得給我一個贊~

AEIC學術



  1. 機器學習是一種實現人工智能的方法,深度學習是一種實現機器學習的技術。

  2. 深度學習本來並不是一種獨立的學習方法,其本身也會用到有監督和無監督的學習方法來訓練深度神經網絡。但由於近幾年該領域發展迅猛,一些特有的學習手段相繼被提出(如殘差網絡),因此越來越多的人將其單獨看作一種學習的方法。

  3. 機器學習最基本的做法,是使用算法來解析數據、從中學習,然後對真實世界中的事件做出決策和預測。與傳統的為解決特定任務、硬編碼的軟件程序不同,機器學習是用大量的數據來“訓練”,通過各種算法從數據中學習如何完成任務。

拓展資料:

  • 機器學習直接來源於早期的人工智能領域,傳統的算法包括決策樹、聚類、貝葉斯分類、支持向量機、EM、Adaboost等等。從學習方法上來分,機器學習算法可以分為監督學習(如分類問題)、無監督學習(如聚類問題)、半監督學習、集成學習、深度學習和強化學習。傳統的機器學習算法在指紋識別、基於Haar的人臉檢測、基於HoG特徵的物體檢測等領域的應用基本達到了商業化的要求或者特定場景的商業化水平,但每前進一步都異常艱難,直到深度學習算法的出現。

  • 最初的深度學習是利用深度神經網絡來解決特徵表達的一種學習過程。深度神經網絡本身並不是一個全新的概念,可大致理解為包含多個隱含層的神經網絡結構。為了提高深層神經網絡的訓練效果,人們對神經元的連接方法和激活函數等方面做出相應的調整。其實有不少想法早年間也曾有過,但由於當時訓練數據量不足、計算能力落後,因此最終的效果不盡如人意。深度學習摧枯拉朽般地實現了各種任務,使得似乎所有的機器輔助功能都變為可能。無人駕駛汽車,預防性醫療保健,甚至是更好的電影推薦,都近在眼前,或者即將實現。


更多有關人工智能的資訊、深度報道、採訪歡迎關注AI中國,無論你是小白還是大神,你想要的這裡都有!


AI中國


所謂深度學習,是眼、腦、心三處協同專注於內容,以獲得最佳的學習效果,個人關於深度學習提供以下幾點心得

  1. 學前自問。向自己提問,學習的目的是什麼?內心對內容的渴求程度、學習計劃及學習時間、學習後的用途。自問的目的是讓自己有更清醒的認知,保證自己在學習時的專注力

  2. 放空大腦。深度學習需要拋出雜念,從而專注於書本的內容,緊跟作者的思維展開聯想,才能保證更好的記憶與沉澱

  3. 學習筆記。好記性不如爛筆頭,邊學習邊做筆記,可以加深對學習內容鞏固,也便於後續的複習

  4. 學習總結。總結即意味著回顧,將學習內容進行有效提煉,是驗證學習成果最有效的手段

  5. 學習實踐。實踐是鞏固學習成果的最佳方式,回到學習的初衷,也是為了最終踐行,也將價值最大化。

綜上5點,個人心得,供參考!不足之處,還請大家積極評論、補充!

更多學習分享,請關注頭條號,每天與職場同仁學習總結,一同進步!

【勤聰雲課堂 學習促成長】


勤聰雲課堂


在今年的 ICML 上,深度學習理論成為最大的主題之一。會議第一天,Sanjeev Arora 就展開了關於深度學習理論理解的教程,並從四個方面分析了關於該領域的研究:非凸優化、超參數和泛化、深度的意義以及生成模型。

2017 年 12 月 NIPS 的 Test-of-Time Award 頒獎典禮上,Ali Rahimi 這樣呼籲人們加深對深度學習的理解:

我希望生活在這樣的一個世界,它的系統是建立在嚴謹可靠而且可證實的知識之上,而非鍊金術。[……] 簡單的實驗和定理是幫助理解複雜大現象的基石。

Ali 的目標不是解散各個領域,而是「展開對話」。這個目標已經實現了,但對於目前的深度學習應被視為鍊金術還是工程或科學,人們仍存在分歧。

7 個月後,在斯德哥爾摩舉行的國際機器學習會議 (ICML) 上,機器學習社區又聚焦了這個問題。此次大會與會者有 5000 多名,並累計發表論文 629 篇,這是基礎機器學習研究的「年度大戲」。而深度學習理論已成為此次會議的最大主題之一。

會議第一天,最大的房間裡就擠滿了機器學習相關人員,他們準備聆聽 Sanjeev Arora 關於深度學習理論理解的教程。這位普林斯頓大學計算機科學教授在演講中總結了目前的深度學習理論研究領域,並將其分成四類:

  • 非凸優化:如何理解與深度神經網絡相關的高度非凸損失函數?為什麼隨機梯度下降法會收斂?

  • 超參數和泛化:在經典統計理論中,為什麼泛化依賴於參數的數量而非深度學習?存在其它較好的泛化方法嗎?

  • 深度的意義:深度如何幫助神經網絡收斂?深度和泛化之間的聯繫是什麼?

  • 生成模型:為什麼生成對抗網絡(GAN)效果非常好?有什麼理論特性能使模型穩定或者避免模式崩潰?

在這一系列的文章中,我們將根據最新的論文(尤其是 ICML2018 的論文),幫助大家直觀理解這四個方面。

第一篇文章將重點討論深度網絡的非凸優化問題。

非凸優化

我敢打賭,你們很多人都曾嘗試過訓練自己的「深度網絡」,結果卻因為無法讓它發揮作用而陷入自我懷疑。這不是你的錯。我認為都是梯度下降的錯。

Ali Rahimi 在 NIPS 演講中曾說,隨機梯度下降 (SGD) 的確是深度學習的基石,它應該解決高度非凸優化問題。理解它何時起作用,以及為什麼起作用,是我們在深度學習的基本理論中一定會提出的最基本問題之一。具體來說,對於深度神經網絡的非凸優化研究可以分為兩個問題:

  • 損失函數是什麼樣的?

  • SGD 為什麼收斂?

損失函數是什麼樣的?

如果讓你想象一個全局最小值,很可能你腦海中出現的第一幅圖是這樣的:

二維世界中的全局最小值附近,函數是嚴格凸的(這意味著 hessian 矩陣的兩個特徵值都是正數)。但在一個有著數十億參數的世界裡,就像在深度學習中,全局最小值附近的方向都不平坦的可能性有多大?或者 hessian 中一個為零(或近似為零)的特徵值都沒有的概率有多大?

Sanjeev Arora 在教程中寫的第一個評論是:損失函數的可能方向數量會隨著維度的增長呈指數增長。

直觀上看,全局最小值似乎不是一個點而是一個連接管(connected manifold)。這意味著如果找到了全局最小值,你就能夠穿過一條平坦的路徑,在這條道路上,所有的點都是最小值。海德堡大學的一個研究團隊在論文《Essentially No Barriers in Neural Network Energy Landscape》中證明了這一點。他們提出了一個更常規的說法,即任何兩個全局最小值都可以通過一條平坦的路徑連接。

在 MNIST 上的 CNN 或在 PTB 上的 RNN 已經是這樣的情況,但是該項研究將這種認知擴展到了在更高級的數據集(CIFAR10 和 CIFAR100)上訓練的更大網絡(一些 DenseNet 和 ResNet)上。為了找到這條路徑,他們使用了一種來自分子統計力學的啟發式方法,叫做 AutoNEB。其思想是在兩個極小值之間創建一個初始路徑(例如線性),並在該路徑上設置中心點。然後迭代地調整中心點的位置,以最小化每個中心點的損失,並確保中心點之間的距離保持不變(通過用彈簧建模中心點之間的空間)。

雖然他們沒有從理論上證明這個結果,但他們對為什麼存在這樣的路徑給出了一些直觀的解釋:

如果我們擾亂單個參數,比如添加一個小常數,然後讓其它部分去自適應這種變化,仍然可以使損失最小化。因此可以認為,通過微調,無數其它參數可以「彌補」強加在一個參數上的改變。

因此,本文的結果可以幫助我們通過超參數化和高維空間,以不同的方式看待極小值。

通俗來說,當考慮神經網絡的損失函數時,你應該牢記一個給定的點周圍可能有非常多的方向。由此得出另一個結論,鞍點肯定比局部最小值多得多:在給定的關鍵點上,在數十億個可能的方向中,很可能會找到一個向下的方向(如果不是在全局最小值上)。這種認知在 NIPS 2014 年發表的論文《Identifying and attacking the saddle point problem in high-dimensional non-convex optimization》中被嚴格規範化,並得到了實證證明。

為什麼 SGD 收斂(或不收斂)?

深度神經網絡優化的第二個重要問題與 SGD 的收斂性有關。雖然這種算法長期以來被看做是一種快速的近似版梯度下降,但我們現在可以證明 SGD 實際上收斂於更好、更一般的最小值。但我們能否將其規範化並定量地解釋 SGD 脫離局部極小值或鞍點的能力?

SGD 修改了損失函數

論文《An Alternative View: When Does SGD Escape Local Minima?》表明,實施 SGD 相當於在卷積(所以平滑)的損失函數上進行常規梯度下降。根據這一觀點並在某些假設下,他們證明了 SGD 將設法脫離局部最小值,並收斂到全局最小值附近的一個小區域。

SGD 由隨機微分方程控制

連續 SGD 徹底改變了我對這個算法的看法。在 ICML 2018 關於非凸優化的研討會上,Yoshua Bengio 在他關於隨機梯度下降、平滑和泛化的演講中提出了這個想法。SGD 不是在損失函數上移動一個點,而是一片點雲或者說一個分佈。

幻燈片摘自 Y. Bengio 在 ICML 2018 發表的演講。他提出用分佈(或點雲)代替點來看待 SGD。

這個點雲的大小(即相關分佈的方差)與 learning_rate / batch_size 因子成正比。Pratik Chaudhari 和 Stefano Soatto 在論文《Stochastic gradient descent performs variational inference, converges to limit cycles for deep networks》中證明了這一點。這個公式非常直觀:較低的 batch size 意味著梯度非常混亂(因為要在數據集一個非常小的子集上計算),高學習率意味著步驟混亂。

將 SGD 視為隨時間變化的分佈可以得出:控制下降的方程現在是隨機偏微分方程。更準確地說,在某些假設下,論文表明控制方程實際上是一個 Fokker-Planck 方程。

幻燈片摘自 P. Chaudhari 和 S. Soatto 在 ICML 2018 發表的演講——《High-dimensional Geometry and Dynamics of Stochastic Gradient Descent for Deep Networks》。他們展示瞭如何從離散系統過渡到 Fokker-Plank 方程所描述的連續系統。

在統計物理學中,這種類型的方程描述了暴露在曳力 (使分佈推移,即改變平均值) 和隨機力 (使分佈擴散,即增加方差) 下的粒子的演化。在 SGD 中,曳力由真實梯度建模,而隨機力則對應算法的內在噪聲。正如上面的幻燈片所示,擴散項與溫度項 T = 1 /β= learning_rate /(2 * batch_size) 成正比,這再次顯示了該比值的重要性!

Fokker-Planck 方程下分佈的演化。它向左漂移,隨時間擴散。圖源:維基百科

通過這個框架,Chaudhari 和 Soatto 證明了我們的分佈將單調地收斂於某個穩定的分佈(從 KL 散度的意義來說):

Pratik Chaudhari 和 Stefano Soatto 論文的一個主要定理,證明了分佈的單調會收斂到穩定狀態(在 KL 散度意義中)。第二個方程表明,使 F 最小化相當於最小化某個潛在的ϕ以及擴大熵的分佈(溫度 1 /β控制的權衡)。

在上面的定理中有幾個有趣的觀點:

  • SGD 最小化的函數可以寫成兩項之和(Eq. 11):潛在Φ和熵的分佈。溫度 1 /β控制這兩項的權衡。

  • 潛在Φ只取決於數據和網絡的架構(而非優化過程)。如果它等於損失函數,SGD 將收斂到全局最小值。然而, 本文表明這種情況比較少見。而如果知道Φ與損失函數的距離,你將可以知道 SGD 收斂的概率。

  • 最終分佈的熵取決於 learning_rate/batch_size(溫度)的比例。直觀上看,熵與分佈的大小有關,而高溫會導致分佈具有更大的方差,這意味著一個平坦的極小值。平坦極小值的泛化能力更好,這與高學習率和低 batch size 能得到更優最小值的經驗是一致的。

因此,將 SGD 看作是一個隨時間變化的分佈表明,在收斂性和泛化方面,learning_rate/batch_size 比每個獨立的超參數更有意義。此外,它還引入了與收斂相關的網絡潛力,為架構搜索提供了一個很好的度量。

結論

探索深度學習理論的過程可以分為兩部分:首先,通過簡單的模型和實驗,建立起關於深度學習理論如何及其為什麼起作用的認知,然後將這些理念以數學形式呈現,以幫助我們解釋當前的結論並得到新的結果。

在第一篇文章中,我們試圖傳達更多關於神經網絡高維損失函數和 SGD 解說的直觀認知,同時表明新的形式主義正在建立,目的是建立一個關於深層神經網絡優化的真正數學理論。

然而,雖然非凸優化是深度學習的基石並且擁有大量的層數和參數,但它取得的成功大部分源於其優秀的泛化能力。這將是下一篇文章將分享的內容。


Sanjeev Arora:印度裔美國理論計算機科學家,他以研究概率可檢驗證明,尤其是PCP定理而聞名。研究興趣包括計算複雜度理論、計算隨機性、概率可檢驗證明等。他於2018年2月被推選為美國國家科學院院士,目前是普林斯頓大學計算機科學系教授。


機器之心Pro


編程基礎

  • C++一定要會

  • Python一定要熟練

理論基礎

  • 數學功底

  • 圖像處理功底

  • 邏輯思考能力

善用工具

  • GitHub

  • 網絡視頻

  • 數據集

數據集搜索

  • 哪些開源數據集

  • 哪些是好的數據

  • 如何使用數據

如何判斷自己是否系統地學習深度學習了呢?

深度學習是一門實踐性比較強的課,需要有理論支撐

我從側面來回答這個問題驗證是否系統地學習

幾個比較

  • 為什麼同樣的任務,別人設計的模型比你的小反而快?

  • 這個模型內部參數到底是什麼意思

  • 模型收斂擬合,預期問題,自己能否加以判斷

  • 什麼樣的任務用什麼樣的模型?

(如果您覺得可以,歡迎點贊評論)

人工智能與計算機視覺


深度學習目前主要有幾個大的方向,包括:計算機視覺、自然語言處理等。互聯網上有大量的免費學習視頻,包括斯坦福等名校的公開課等。下面將介紹一些質量非常高的國外名校公開課。

計算機視覺

CS231n近幾年一直是計算機視覺領域和深度學習領域最為經典的課程之一。由斯坦福大學李飛飛主講。

課程鏈接如下:https://www.bilibili.com/video/av13260183/#page=1

自然語言處理

Stanford大學在2015年開設了一門使用深度學習進行自然語言處理的課程,廣受好評。視頻課程鏈接:https://cs224d.stanford.edu/

上述課程都是深度學習最經典的公開課,需要一定的英語能力。


助考筆記


學習和深度學習,是兩個完全不同的概念

時下,很多人都會存在一個學習誤區:把持有當作擁有,把閱讀、學習本身,當作學習的效果。

當說起學習,很多人都會自驕的說,一年讀了XX本書,學到了XX個知識,並且附上詳盡的學習筆記和思維導圖。但他們都弄錯了學習本身的含義,學習並不是追求你存貨多少,而是需要把學到的東西,運用到生活、工作當中去,或者至少對你個人有所啟發。

如何才可以做到深度學習?

不輕易下任何一個斷言,永遠保持這思考的習慣,尋求事物背後的規律。深度學習要求你不斷的主動去思考,把知識做到內化於己。

1.用自己的話複述。所有的知識都不需要死記硬背,而是試著在理解的基礎上,把它表達出來,就好像你把它教給一個完全不明白的人一樣。這樣,通過不斷的講述,讓你的大腦保持思考的習慣,把知識點完全內化。

2.

發散聯想。學習的過程中,時常會遇到一些很有趣的知識點,或者一些很實用的知識點。此時,你要學會發散性思維,舉一反三,把它相關聯的知識點都羅列出來,做到系統化、全面化,這是一種更有效的學習方法。

3.用主題去統領內容。因為工作需要,當你需要去學習某個技能或知識時,你可以先羅列出你需要學習的各點各面,再去尋找一切相關的資料,把各種碎片化的信息整合起來,成為自己的知識體系。

4.豐富知識網絡。有了以上3個步驟之後,你還要定期對自己的知識進行審視、總結,勾畫出一個思維導圖,相信我,你又可以得到新的觀點,以此不斷的進行自我迭代。


阿呆札記


學習的目的在於記憶,記憶之真諦在於全神貫注。

那麼如何做到全神貫注,我個人有三點來說一說:

第一就是培養興趣,興趣是學習的老師,有了興趣就會去鑽研去思考,去努力,學習自己興趣的東西也往往會事半功倍。

第二是自身狀況,要選擇自己好的狀態,身體舒適,精神明朗,不要沒有休息好感覺困得要死要活了,還想著能深度的學習。

第三是環境,人是環境的產物,沒有一個好的環境自己是很難學習的。先說關於人的環境,那就是你周邊的人都是做什麼的,物以類聚,人以群分,你的朋友親人都是好學的那麼你也多少收影響。在說物質的環境,在馬路上看書和在圖書館看書學習的深度也是完全不同。

最後要說,培養興趣,鍛鍊身體,保持精力,多交向上的朋友,讓自己處在有利的環境。

附圖一張羅丹的思考者,找到自己學習的狀態,深度隨之就來了。


牙刷掉根毛


想要系統學習深度學習,最好從機器學習開始,網上有個斯坦福機器學習的視頻,是大牛吳恩達授的課,既有數學理論,也有實踐演示,是非常不錯的一門入門課程,接著就是網易雲課堂上,一個吳恩達的深度學習課程,淺顯易懂,學習後,深度學習的基本原理就懂了。然後就是深入啃書本,如花書,周克華一些深度學習方面的書。再深入就是看深度學習框架的源碼,如caffe,tensorflow等。一個輪迴過來,最終還會回到線性代數和概率論上來。數學基礎很重要。


分享到:


相關文章: