Contents
Theano / Tensorflow:Autoencoders、受限玻爾茲曼機器( Restricted Boltzmann )、深度神經網路、t-SNE 和 PCA
從這 10.5 小時的課程,你會學到
- 了解主成份分析(Principal Components Analysis,PCA)背後的理論
- 知道為什麼 PCA 可用於降維( dimensionality reduction )、視覺化( visualization )、去相關( de-correlation )和去噪( denoising )
- 手工推導 PCA 演算法
- 編寫 PCA 的程式碼
- 了解 t-SNE 背後的理論
- 在程式碼中使用 t-SNE
- 了解 PCA 和 t-SNE 的局限性
- 理解 autoencoders 背後的理論
- 在 Theano 和 Tensorflow 中編寫一個自動編碼器
- 了解堆疊式自動編碼器( autoencoders )如何用於深度學習
- 在 Theano 和 Tensorflow 中編寫一個堆疊的去噪自動編碼器
- 了解受限玻爾茲曼機器(Restricted Boltzmann Machines,RBM)背後的理論
- 了解為什麼 RBM 難以訓練
- 理解對比分歧(contrastive divergence )演算法來訓練 RBM
- 在 Theano 和 Tensorflow 中編寫你自己的 RBM 和深層信念網絡(Deep Belief Network,DBN)
- 視覺化並解釋以自動編碼器和 RBM 學習過的特徵( features )。
要求
- 微積分和線性代數的知識
- Python 程式設計技能
- 有關 Numpy、Theano 和 Tensorflow 的一些經驗
- 知道如何使用梯度下降來訓練機器學習模型
- 安裝 Python、Numpy 和 Theano
- 一些機率和統計知識
- 在 Theano 或 Tensorflow 中編寫過前饋神經網路( feedforward neural network )
課程說明
本課程是我深度學習、資料科學和機器學習系列的下一個合理步驟。 我已經完成了很多關於深度學習的課程,並且我剛剛發佈了一門關於無監督學習的課程 以 Python 實踐群聚分析與無監督機器學習,討論群聚( clustering )和密度估算( density estimation ) 。 所以當你把這兩個放在一起時你會獲得無監督深度學習全貌!
在這些課程中,我們將從一些非常基本的東西開始 – 主成份分析(PCA)和一種流行的非線性降維技術,稱為 t-SNE(t-distributed stochastic neighbor embedding,t-分佈式隨機鄰居嵌入)。
接下來,我們將看看一種稱為 autoencoder 的特殊類型的無監督神經網路。 在介紹一個自動編碼器的工作原理之後,我會告訴你如何將它們連接在一起形成一堆深度的自動編碼器,從而提高監督深度神經網路的性能。 自動編碼器就像 PCA 的非線性形式。
最後,我們將看看受限制的玻爾茲曼機器(RBMs)。這些再次是個流行的無監督神經網路,你可以像使用自動編碼器一樣使用,以預先訓練你的受監督的深度神經網路。我將向你展示一種訓練受限玻爾茲曼機器的有趣方式,稱為吉布斯採樣( Gibbs sampling ),馬可夫鏈蒙特卡羅( Markov Chain Monte Carlo )的一個特例,我將展示如何做,即使這種方法只是一個粗略的近似,它仍然會減少其他成本函數( cost functions ),如用於自動編碼器的函數。這種方法也被稱為對比分歧( Contrastive Divergence 或 CD-k )。當在實體系統,我們定義了一個稱為自由能量( free energy )的概念,並試圖將這個量最小化。
最終,我們將把所有這些概念結合在一起,然後我將向你展示當你運用 PCA 和 t-SNE 於在自動編碼器和 RBM 已學習的特徵上,視覺上會發生什麼情況,我們將看到即使沒有標籤,結果也告訴你有一種模式被發現。
本課程使用的所有材料均為免費。由於本課程是深度學習系列中的第四個,所以我會假設你已經知道微積分、線性代數和 Python 程式設計。你需要為此課程安裝 Numpy、Theano 和 Tensorflow。這些是資料分析工具箱中的重要項目。
如果你對深度學習感興趣,並且想要了解現代深度學習發展,超越簡單的反向傳播,包括使用無監督神經網路來解釋在深度學習系統中可以自動和分層次學習哪些特徵,本課程適合你。
本課程著重於“如何構建和理解”,而不僅僅是“如何使用”。讀完一些文件後,任何人都可以在 15 分鐘內學會使用 API。 這不是關於“記住事實”,而是關於通過實驗“親眼看到”。它會教你如何視覺化模型內部發生的事情。如果你不僅僅需要對機器學習模型進行膚淺的考察,本課程對你將很有幫助。
注意:
所有的課程中的程式碼都可以從我的github下載:
/lazyprogrammer/machine_learning_examples
在目錄中:unsupervised_class2
確保你總是用“ git pull ”,如此你總是拿到最新版本!
必要條件 / 假設你已具備以下知識 :
- 微積分
- 線性代數
- 機率
- Python 程式設計 : if/else, loops, lists, dicts, sets
- Numpy 程式設計:矩陣和向量操作,載入一個 CSV 檔
- 可以在 Theano 或 Tensorflow 中編寫前饋神經網路
提示(通過課程):
- 以 2x 觀看。
- 拿手寫筆記。 這將大大增加你記住訊息的能力。
- 寫下方程。 如果你不這樣做,我保證它看起來像亂碼。
- 在討論板上提出許多問題。 越多越好!
- 意識到大多數練習將需要幾天或幾週才能完成。
- 自己編寫程式碼,不要只是坐在那裡看我寫程式。
修課順序
- 查看講座 “ What order should I take your courses in?” (可在我的任何課程的附錄中找到,或請參考先修課)
目標受眾
- 希望提高他們的深度學習曲目的學生和專業人士
- 希望提高深度神經網路訓練能力的學生和專業人員
- 希望了解深度學習中更現代化發展的學生和專業人士
講師簡介
Lazy Programmer Inc 資料科學家和大數據工程師
我是一名資料科學家、大數據工程師和全端軟體工程師。
我有電腦工程的碩士,專長為機器學習和模式辨識。
我曾在網路廣告和數位媒體企業擔任過資料科學家和大數據工程師,圍繞所謂的資料建構各種高流量的 web 服務。我曾經使用 Hadoop / Pig / MapReduce 創建新的大數據管道,也曾建立機器學習模型來預測點擊率,使用線性迴歸、Bayesian Bandits 和協同過濾 ( collaborative filtering )建立新聞推薦系統,並使用A / B測試驗證結果。
我曾在大學部與研究所教授資料科學、統計學、機器學習、演算法、微積分、電腦圖學和物理學,任職的學校如哥倫比亞大學、紐約大學、Hunter 學院和 The New School。
有多家企業已從我的 Web 程式設計專業知識中受益。我做所有的後端(伺服器)、前端(HTML / JS / CSS)和運營/佈署工作。 我使用的技術包含:Python、Ruby / Rails、PHP、Bootstrap、jQuery ( Javascript )、Backbone 和 Angular。至於儲存/資料庫,我採用 MySQL、Postgres、Redis、MongoDB等。
英文字幕:有
- 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To
報名參加課程| 更新 coupon code
也許你會有興趣
- Python 相關線上課程
- 機器學習與資料科學相關線上課程
- ★想要加強英文能力嗎?– 練好英文是最大的學習槓桿
- 課程討論專區