深度學習入門指南
更多深度文章,請關注:https://yq.aliyun.com/cloud
簡介
機器學習技術為現代社會的許多領域提供了強大的技術支持:從網絡搜索到社交網絡的內容過濾,再到電子商務網站的產品推薦。機器學習技術正越來越多的出現在消費級產品上,比如照相機和智能手機。 機器學習係統可用於識別圖像中的對象,將語音轉換成文本,選擇搜索結果的相關項,以及匹配新聞、帖子或用戶感興趣的其他東西。 類似的應用越來越多,它們都使用了一種叫做深度學習的技術。
深度學習(也稱為深層結構學習、層次學習或深度機器學習)是基於對數據中的高級抽象進行建模的算法,它屬於機器學習的分支。最簡單的例子,你可以有兩組神經元:接收輸入信號的神經元和發送輸出信號的神經元。當輸入層接收到輸入時,它將輸入的修改版本傳遞給下一層。在深層網絡中,輸入和輸出層之間有很多層(層並不是由神經元構成,這裏隻是為了幫助你思考),這些層允許算法使用多個處理層,這些層包含了多個線性和非線性變換。
近來,深度學習技術使得機器學習發生了革命性的變化,並出現了很多偉大的成果。 它們大大改進了語音識別、視覺對象識別、對象檢測以及許多其他領域(如藥物發現和基因組學)的技術。 “深度學習”這個術語最早由Dechter(1986)引入機器學習,由Aizenberg等人(2000)引入人工神經網絡(NN)。 深度學習的進一步普及得益於由Alex Krizhevsky發明的被稱為“AlexNet”的卷積網絡架構的出現。“AlexNet”在2012年的ImageNet比賽中擊敗了其他所有的圖像處理算法,開創了在圖像處理中使用深度學習架構的先河。
深度學習架構
生成式深度架構,旨在描述用於模式分析或合成目的的觀測數據或可見數據的高階相關特性,以及描述可見數據及其關聯類的聯合統計分布的特征。在後一種情況下,使用貝葉斯規則可以將這種類型的架構變成辨別式深度架構。
辨別式深度架構,旨在直接提供模式分類的辨別力,通常通過描述基於可見數據種類的後驗分布來描述。
混合式深度架構,其目的是辨別,但通常輔以通過更好的優化或規則化的生成架構的結果,或者是其辨別標準被用來學習類別1中的任何一個深度生成模型的參數
盡管深度學習架構的分類很複雜,但在實踐中經常用到的有**深度前饋網絡**、**卷積網絡**和**循環網絡**。
深度前饋網絡
前饋網絡,通常被稱為**前饋神經網絡**或**多層感知器(MLP)**,它是典型的深度學習模式。
前饋網絡的目標是逼近某個函數f。例如,對於一個分類器,y=f(x)表示的是將輸入x映射到類別y。前饋網絡定義了一個映射 y=f(x;θ),並學習能產生最佳逼近函數的參數θ的值。
簡單來說,網絡可以定義為輸入、隱藏和輸出節點的組合。數據從輸入節點流入,在隱藏節點中進行處理,然後通過輸出節點產生輸出。信息流經從x評估的函數,通過用於定義f的中間計算,最後到輸出y。該網絡中沒有反饋連接,其中模型的輸出反饋到自身,因此模型被稱為前饋網絡。該模型如圖[1]所示。
卷積神經網絡
在機器學習中,**卷積神經網絡**(CNN或ConvNet)是一種前饋人工神經網絡,其神經元之間的連接模式是受動物視覺皮層組織的啟發而發明出來的。
個別皮質神經元對受限區域的刺激響應稱為**感受野**。不同神經元的感受野部分重疊,這使得這些感受野像瓦片一樣平鋪。
單個神經元對其感受野內的刺激的反應可以用卷積運算近似地數學化。卷積網絡的靈感來自於生物學,是多層感知器的變體。它在圖像和視頻識別、推薦係統和自然語言處理中具有廣泛的應用。
LeNet是第一個卷積神經網絡,它推動了深度學習領域的發展。自1988年以來,Yann LeCun的這項開創性工作多次成功迭代後成為了LeNet5。當時的LeNet架構主要用於字符識別,如閱讀郵政編碼、數字等等。
ConvNet有四個主要組件,如圖2所示:
1. 卷積層
2. 激活函數
3. 池化層
4. 完全連接層
卷積層
卷積層基於術語“卷積”,它是對兩個變量執行數學運算(f*g),以產生第三個變量。 它與互相關類似。 卷積層的輸入是一幅 m x m x r 的圖像,其中m是圖像的高度和寬度,r是通道數,例如,對於RGB圖像,r = 3 。 卷積層有大小為n x n x q的k個過濾器(或內核),其中n小於圖像的維度,並且q小於等於通道數r,並且每個內核都可以不同。
激活函數
要實現複雜的映射函數,需要有非線性的激活函數,這樣引入非常重要的非線性屬性,使之能夠近似於任何函數。激活函數對於壓縮來自神經元的無界線性加權和也是非常重要的。這對於避免在處理層次上積累高值非常重要。有很多經常被用到的激活函數,比如Sigmoid、tanh和ReLU。
池化層
池化是一個基於樣本的離散化過程。它的目標是對輸入表示(圖像、隱藏層輸出矩陣等等)進行降采樣,減少其維度,並允許對包含在子區域中的特征進行假設。
這樣做的部分原因是為了提供一種抽象的表示形式來避免過度擬合。同樣,它通過減少要學習的參數個數來降低計算成本,並為內部表示提供基本的轉化恒定性。
比較突出的池化技術有:**最大池化**,**最小池化**和**平均池化**。
完全連接層
術語“完全連接”意味著上一層中的每個神經元都連接到下一層的每個神經元。完全連接層是傳統的多層感知器,它使用softmax激活函數或輸出層中的任何其他類似函數。
循環神經網絡
在傳統的神經網絡中,我們假設所有的輸入(和輸出)是相互獨立的。但是對於許多的任務來說,這是一個很糟糕的假設。如果你想預測一個句子中的下一個單詞,你最好知道哪些前麵的單詞是什麼。 RNN之所以稱為循環,因為它們對序列的每個元素執行相同的任務,而輸出依賴於先前的計算。還有一種理解RNN的方法,我們可以認為它有“記憶”的,它會捕獲到截至目前計算出來的所有信息。
RNN中有循環,這使得在讀入輸入時能夠跨神經元傳遞信息。在圖[4]中,x_t是某種輸入,A是RNN的一部分,h_t是輸出。RNN有一些特殊的類型,比如LSTM、雙向RNN,GRU等等。
RNN可用於NLP、機器翻譯、語言建模、計算機視覺、視頻分析、圖像生成、圖像字幕等,這是因為在RNN中可以放置任意數量的輸入和輸出,並讓它們一一對應、多對多對應。它架構存在多種形式,如圖[5]所示。
應用
在深度學習領域已經有了很多的研究,並且有很多特別的問題都使用深度學習模型得到了解決。這裏有一些深度學習方麵的優秀應用:
黑白圖像彩色化
深度學習可用於參照照片中的對象及其上下文來對圖像進行著色,就像人類進行著色一樣。這個應用需使用非常大的卷積神經網絡和監督層,通過添加顏色來重現圖像。
機器翻譯
文本翻譯可以在沒有對序列進行任何預處理的情況下進行,它允許算法學習單詞之間的依賴關係及其與另一種語言之間的映射。大型LSTM循環神經網絡的堆疊網絡可用於機器翻譯。
照片中物體的分類及檢測
該任務是將照片中的對象歸類到已知的對象組中去。在樣例評測中,通過使用非常大的卷積神經網絡能夠獲得非常好的結果。 Alex Krizhevsky等人在ImageNet分類中取得的突破性成果,被稱為AlexNet。
自動手寫生成
給定一個手寫示例語料庫,然後為給定的單詞或短語生成新的筆跡。在筆跡樣本被創建時,筆跡將作為一係列的坐標提供給筆。通過這個語料庫,算法會學習筆的運動與字母之間的關係,然後生成新的示例。
自動打遊戲
在這個應用中,模型將學習如何僅基於屏幕上的像素點來玩電腦遊戲。這在深度增強模型領域中是一個非常難的任務,因為這個,DeepMind(現在是Google的一部分)贏得了很高的聲譽。
生成模型聊天機器人
使用基於序列的模型來創建聊天機器人,該機器人在很多真實的對話數據集上進行訓練,並學會生成自己的答案。要了解更多的詳細信息,請訪問這個鏈接。
總結
從本文可以得到這樣的結論:深度學習模型可以用於各種任務,因為它能夠模擬人腦。截止目前,專家們已經在這方麵做了大量的研究,而且在不久將還有許多研究工作要做。盡管目前還存在信任問題,但在不久的將來,這個問題將會變得更加明朗。
文章原標題《A Beginners Guide to Deep Learning》,作者:Kumar Shridhar,譯者:夏天,審校:主題曲。
文章為簡譯,更為詳細的內容,請查看原文
本文由北郵@愛可可-愛生活老師推薦,阿裏雲雲棲社區組織翻譯。
最後更新:2017-10-19 16:33:18