引言
????????系列教程第一篇,其中既包括基本原理,又包括復(fù)雜細(xì)節(jié).MNIST(手寫數(shù)字分類)和CIFAR-10(飛機(jī),汽車,鳥,貓,鹿,狗,蛙,馬,船,卡車十種不同小圖片分類)是已制定的機(jī)器學(xué)習(xí)標(biāo)準(zhǔn),本文會盡量達(dá)到這些標(biāo)準(zhǔn)凰浮。
????????深度學(xué)習(xí)的快速發(fā)展導(dǎo)致了多個方便的框架的出現(xiàn),這些框架能使我們快速構(gòu)建模型并建立原型,且方便地進(jìn)行標(biāo)準(zhǔn)測定.在此,我們使用Keras框架.該框架方便,直觀;它具有足夠的表現(xiàn)力,能按需對模型細(xì)節(jié)進(jìn)行補(bǔ)充
????????在本教程結(jié)束時,你將能理解并制作一個簡單的多層感知器深度學(xué)習(xí)模型,能在MNIST標(biāo)準(zhǔn)方面達(dá)到不錯的準(zhǔn)確率.在下一個教程我們將探討處理圖片分類(例如:CIFAR-10)胜宇。
????????盡管術(shù)語"深度學(xué)習(xí)"具有更寬泛的解釋,實(shí)際上在大多數(shù)情況下,它被用于(人工)神經(jīng)元網(wǎng)絡(luò)模型.這些受生物學(xué)啟發(fā)的結(jié)構(gòu),試圖模擬大腦神經(jīng)元處理環(huán)境感知和驅(qū)動決策的方式.實(shí)際上,一個單一的神經(jīng)元(有時也稱一個感知器/感知機(jī))。
一個比較流行的激活函數(shù)
注釋:上圖中,激活函數(shù)sigmoid中前者是邏輯斯蒂函數(shù),后者雙曲正切函數(shù).ReLU代表修正線性單元
? ? ? ? ? 原始感知器模型(1950s)是完全線性的.例如:他們只使用了identity激活函數(shù).很顯然,實(shí)際中很多任務(wù)都是非線性的,也就導(dǎo)致了其他激活函數(shù)的使用.sigmoid函數(shù)(由于它的像字符"S"形的繪圖),提供了一種編碼二值神經(jīng)元不確定性的方式,將當(dāng)z接近于零時和當(dāng)z在不同方向移動時快速飽和聯(lián)系起來.這兒給出的兩個函數(shù)很相似,雙曲正切函數(shù)的輸出范圍是[-1,1],函數(shù)的輸出范圍是[0,1](因此在表示可能性時特別有用)亮隙。
????????近年來,在深度學(xué)習(xí)方面,ReLU函數(shù)(它的變種函數(shù))已經(jīng)無處不在.工程師開始使用它們,作為一個給模型注入非線性誤差(如果是負(fù)數(shù),就設(shè)為零)的簡單方式,事實(shí)證明比以前流行的sigmoid函數(shù)更加成功,并把它們和物理神經(jīng)元傳輸電能的方式聯(lián)系起來.本教程我們將專門討論ReLU函數(shù)。
進(jìn)入神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))
????????一旦我們能夠表示神經(jīng)元,就能夠?qū)⑸窠?jīng)元的輸出和其他神經(jīng)元的輸入連接起來,形成神經(jīng)網(wǎng)絡(luò).通常我們主要關(guān)注前饋神經(jīng)網(wǎng)絡(luò),這種網(wǎng)絡(luò)中神經(jīng)元以層的方式組織,因此單層中的神經(jīng)元能處理前一層的輸出.這種層次結(jié)構(gòu)最有效地將一層的所有輸出和下一層所有的神經(jīng)元連接起來垢夹,如下圖:
????????通過在一個給定損失函數(shù)上溢吻,直接應(yīng)用先前提到的梯度下降算法,可以修正輸出神經(jīng)元的權(quán)重,可以修正輸出神經(jīng)元的權(quán)重果元,對于其他神經(jīng)元促王,這些損失需要反向傳播。
????????Cybenko的萬能逼近定理:對于任何閉區(qū)間內(nèi)的一個連續(xù)函數(shù)f而晒,都可以用含有一個隱含層的BP網(wǎng)絡(luò)來逼近;然而,這個定理的證明并不是建設(shè)性的,因此總的來說,沒有給學(xué)習(xí)這種結(jié)構(gòu)提供有效的訓(xùn)練算法.深度學(xué)習(xí)對這種情況做出回應(yīng):不增加寬度,增加深度;按照定義,任何具有一層以上的隱含層的神經(jīng)網(wǎng)絡(luò)都是深度的蝇狼。
????????深度的改變,能使我們直接將原始的輸入數(shù)據(jù)加入網(wǎng)絡(luò)當(dāng)中.過去,通過精心設(shè)計的特征函數(shù)從輸入提取出特征,單層的神經(jīng)網(wǎng)絡(luò)運(yùn)行其上.這意味著,對于像計算機(jī)視覺,語音識別,自然語言處理這些問題,阻礙科學(xué)跨領(lǐng)域合作,我們需要明顯不同的方法.然而,當(dāng)一個網(wǎng)絡(luò)具有多個隱含層的時候,它自身就能夠?qū)W會最佳的描述原始數(shù)據(jù)的特征函數(shù),因此可應(yīng)用于端對端學(xué)習(xí),并且可以在多種多樣的任務(wù)中使用同一個網(wǎng)絡(luò),從流程中去除特征函數(shù)設(shè)計.當(dāng)我們探索卷積神經(jīng)網(wǎng)絡(luò)(CNNs),我將在本教程的第二部分展示圖示證據(jù)。
對mnist應(yīng)用深度多層感知器
????????本教程的目標(biāo):實(shí)現(xiàn)一個簡單可能的深度神經(jīng)網(wǎng)絡(luò)---具有兩層隱藏層的多層感知器---并將其用于識別手寫數(shù)字任務(wù).只需要導(dǎo)入下列庫: