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