什麼是自編碼 Autoencoder

今天我們會來聊聊用神經網路如何進行非監督形式的學習. 也就是 autoencoder, 自編碼.

注: 本文不會涉及數學推導. 大家可以在很多其他地方找到優秀的數學推導文章.

因為本文原作是一段短視頻介紹.

所以首先放視頻鏈接: Youtube 或者 優酷.

也可以在這個網頁找到其他很多相關內容: 莫煩 Python

自編碼 autoencodern是一種什麼碼呢.n他是不是 條形碼?n二維碼?n打碼?n其中的一種呢?nNONONONO. 和他們統統沒有關係. 自編碼是一種神經網路的形式.如果你一定要把他們扯上關係,n我想也只能這樣解釋啦.

壓縮與解壓

有一個神經網路,n它在做的事情是 接收一張圖片,n然後 給它打碼,n最後 再從打碼後的圖片中還原.n太抽象啦?n行,n我們再具體點.

假設剛剛那個神經網路是這樣,n對應上剛剛的圖片, 可以看出圖片其實是經過了壓縮,再解壓的這一道工序. 當壓縮的時候, 原有的圖片質量被縮減, 解壓時用信息量小卻包含了所有關鍵信息的文件恢復出原本的圖片.n為什麼要這樣做呢?

原來有時神經網路要接受大量的輸入信息,n比如輸入信息是高清圖片時, 輸入信息量可能達到上千萬,n讓神經網路直接從上千萬個信息源中學習是一件很吃力的工作. 所以, 何不壓縮一下, 提取出原圖片中的最具代表性的信息,n縮減輸入信息量,n再把縮減過後的信息放進神經網路學習. 這樣學習起來就簡單輕鬆了.n所以,n自編碼就能在這時發揮作用.n通過將原數據白色的X 壓縮, 解壓 成黑色的X,n然後通過對比黑白 X ,求出預測誤差,n進行反向傳遞,n逐步提升自編碼的準確性. 訓練好的自編碼中間這一部分就是能總結原數據的精髓. 可以看出, 從頭到尾,n我們只用到了輸入數據 X,n並沒有用到 Xn對應的數據標籤,n所以也可以說自編碼是一種非監督學習. 到了真正使用自編碼的時候.n通常只會用到自編碼前半部分.

編碼器 Encoder

這 部分也叫作 encoder 編碼器. 編碼器能得到原數據的精髓,n然後我們只需要再創建一個小的神經網路學習這個精髓的數據,不僅減少了神經網路的負擔,n而且同樣能達到很好的效果.

這是一個通過自編碼整理出來的數據,n他能從原數據中總結出每種類型數據的特徵, 如果把這些特徵類型都放在一張二維的圖片上,n每種類型都已經被很好的用原數據的精髓區分開來.n如果你了解 PCAn主成分分析,n再提取主要特徵時,n自編碼和它一樣,甚至超越了nPCA. 換句話說, 自編碼 可以像 PCA 一樣 給特徵屬性降維.

如果你對以上內容感興趣, 也想實際動手做做看, 這還有更多使用 python 來編寫以上內容的教程: 莫煩 Python

推薦閱讀:

集成學習(Ensemble Learning)
通俗理解激活函數作用的另一種解釋
深度學習一行一行敲faster rcnn-keras版(目錄)
模式識別與機器學習第四講(附錄E、第2章序言)

TAG:深度学习DeepLearning | 机器学习 | 神经网络 |