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