網(wǎng)站建設(shè)需要編程嗎個(gè)人怎么注冊自己的網(wǎng)站
目前神經(jīng)網(wǎng)絡(luò)技術(shù)受到追捧,一方面是由于數(shù)據(jù)傳感設(shè)備、數(shù)據(jù)通信技術(shù)和數(shù)據(jù)存儲技術(shù) 的成熟與完善,使得低成本采集和存儲海量數(shù)據(jù)得以成為現(xiàn)實(shí);另一方面則是由于計(jì)算能力的大幅提升,如圖形處理器(Graphics Processing Unit,GPU)在神經(jīng)網(wǎng)絡(luò)算法中的應(yīng)用和算法的不斷改進(jìn)帶來的計(jì)算效率提升。
常見的神經(jīng)網(wǎng)絡(luò)模型有深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò),以及由這些基本網(wǎng) 絡(luò)優(yōu)化而形成的各種深度學(xué)習(xí)模型。
13.1 從一個(gè)具體任務(wù)開始:識別數(shù)字
神經(jīng)網(wǎng)絡(luò)通過對大量手寫數(shù)字的訓(xùn)練樣本的學(xué)習(xí),從而自動找到識別手寫 數(shù)字的規(guī)則,實(shí)現(xiàn)對手寫數(shù)字的識別。神經(jīng)網(wǎng)絡(luò)手寫數(shù)字識別的訓(xùn)練數(shù)據(jù)一般采用 MNIST 數(shù)據(jù) 集,它不但提供了大量形式各異的手寫數(shù)字樣本,同時(shí)也提供了各個(gè)樣本的標(biāo)注信息,從而便 于研究者使用。
13.2 理解神經(jīng)元是什么
神經(jīng)元是神經(jīng)網(wǎng)絡(luò)算法的基本單元,它本質(zhì)上是一種函數(shù),接受外部刺激并根據(jù)輸入產(chǎn)生 對應(yīng)的輸出。它的內(nèi)部結(jié)構(gòu)可以看作線性函數(shù)和激活函數(shù)的組合,線性函數(shù)運(yùn)算結(jié)果傳遞給激 活函數(shù),最終產(chǎn)生該神經(jīng)元的輸出結(jié)果。神經(jīng)元也經(jīng)歷了逐步發(fā)展并完善的過程,其中典型的神經(jīng)元有感知器和 S 型神經(jīng)元等。
13.2.1 感知器是什么
感知器有時(shí)也被稱為感知機(jī),是由康奈爾航空實(shí)驗(yàn)室的科學(xué)家弗蘭克·羅森布拉特在 1957 年所提出的一種人工神經(jīng)網(wǎng)絡(luò)。它可以被視為一種形式最簡單的前饋式人工神經(jīng)網(wǎng)絡(luò),是一種 二元線性分類器。感知器接收多個(gè)二進(jìn)制輸入并產(chǎn)生一個(gè)二進(jìn)制輸出。
感知器工作原理如下。
(1)感知器接收多個(gè)二進(jìn)制輸入,每個(gè)輸入對應(yīng)一個(gè)權(quán)重。
(2)感知器二進(jìn)制輸入的加權(quán)值對輸出有重大影響。
(3)通過感知器加權(quán)值與閾值比較,決定最后的二進(jìn)制輸出值。
上述過程可用如下代數(shù)形式表達(dá)。
有時(shí)候?yàn)榱撕啽?#xff0c;我們會把感知器規(guī)則 寫成另外的通用形式,如下所示。
其中,wx=Σwi xi,b 為閾值的相反數(shù),也稱為感知器的偏置。
13.2.2 S型神經(jīng)元是什么
S 型神經(jīng)元與感知器相比,其優(yōu)點(diǎn)在于:權(quán)重和偏置的微小變化只會導(dǎo)致輸出的微小變化。
S 型神經(jīng)元與感知器最大的區(qū)別在于它的輸入和輸出不再是二進(jìn)制的離散值,而是 0 ~ 1的連續(xù)值??偟膩碚f,S 型神經(jīng)元的特點(diǎn)如下。
(1)S 型神經(jīng)元有多個(gè)輸入值,這些輸入值為 0 ~ 1 的任意值。
(2)S 型神經(jīng)元輸入的加權(quán)值經(jīng)過 sigmoid 函數(shù)處理后,輸出一個(gè) 0 ~ 1 的數(shù)值。
S 型神經(jīng)元與感知器的不同之處在于:S 型神經(jīng)元是一個(gè)平滑的函數(shù),而感知器是一個(gè)階躍函數(shù)。也就是說,感知器只能輸出 0 或者 1,而 S 型神經(jīng)元能夠輸出 0 ~ 1 的任何數(shù)值。
S 型神經(jīng)元的表達(dá)式可以寫為任何一個(gè)權(quán)重和偏置的微小變化Δw 和 Δb 都會導(dǎo)致 S 型神經(jīng)元的輸出產(chǎn)生一個(gè)微小變化。
13.3 理解典型神經(jīng)網(wǎng)絡(luò)多層感知器
最基本、也是最典型的神經(jīng)網(wǎng)絡(luò)— 多層感知器(Multi- Layer Perception,MLP)
13.3.1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是什么
一個(gè)典型的神 經(jīng)元網(wǎng)絡(luò)結(jié)構(gòu)包括 3 個(gè)層:輸入層、隱藏層、輸出層。
(1)輸入層。輸入層是神經(jīng)網(wǎng)絡(luò)的第一層,圖像通過數(shù)值化轉(zhuǎn)換輸入該層,該層接收輸入 信號(值)并傳遞到下一層,對輸入的信號(值)并不執(zhí)行任何運(yùn)算,沒有自己的權(quán)重值和偏置值。圖像將像素點(diǎn)信息轉(zhuǎn)換為輸入層神經(jīng)元激活值,像素點(diǎn)數(shù)量等于輸入層神經(jīng)元數(shù)量。
(2)隱藏層。隱藏層是神經(jīng)網(wǎng)絡(luò)中介于輸入層和輸出層之間的合成層。一個(gè)神經(jīng)網(wǎng)絡(luò)包含 一個(gè)或多個(gè)隱藏層,隱藏層的神經(jīng)元通過層層轉(zhuǎn)換,不斷提高和已標(biāo)注圖像的整體相似度,最 后一個(gè)隱藏層將值傳遞給輸出層。
(3)輸出層。輸出層是神經(jīng)網(wǎng)絡(luò)的最后一層,接收最后一個(gè)隱藏層的輸入而產(chǎn)生最終的預(yù) 測結(jié)果,得到理想范圍內(nèi)的期望數(shù)目的值。該層神經(jīng)元可以只有一個(gè),也可以和結(jié)果一樣多。
13.3.2 搞懂MLP的工作原理是什么
手寫數(shù)字的神經(jīng)網(wǎng)絡(luò)算法分類中包括如下幾個(gè)主要環(huán)節(jié),即圖像數(shù)值化、神經(jīng) 元相互激活傳遞和代價(jià)函數(shù)最小化等內(nèi)容,需要我們重點(diǎn)把握。
1.圖像數(shù)值化:將圖像轉(zhuǎn)化為數(shù)值
圖像(手寫數(shù)字)識別的第一項(xiàng)工作就是將 圖像通過各像素點(diǎn)進(jìn)行數(shù)值化處理,這項(xiàng)工作往往發(fā)生在神經(jīng)網(wǎng)絡(luò)的輸入層。
其次,MLP 神經(jīng)網(wǎng)絡(luò)的最后一層包含 10 個(gè)神經(jīng)元,分別代表 0 ~ 9 這 10 個(gè)數(shù)字。這 10 個(gè)神經(jīng)元的激活值也是 0 ~ 1 的數(shù)值,激活值越大表示輸入值對應(yīng)該神經(jīng)元的可能性越大。
最后,神經(jīng)網(wǎng)絡(luò)的中間層為隱藏層,它可以包含多層結(jié)構(gòu)和多個(gè)神經(jīng)元。神經(jīng)網(wǎng)絡(luò)處理信息的 核心就在于每一層神經(jīng)元的激活值的計(jì)算和上一層神經(jīng)元激活值影響下一層神經(jīng)元激活值的方式。
2.激活規(guī)則:神經(jīng)元間如何相互影響
神經(jīng)網(wǎng)絡(luò)的大致工作過程是,圖像經(jīng)過數(shù)值化處理后進(jìn)入輸入層神經(jīng)元,輸入層神經(jīng)元沿 著某條路徑激活下一層神經(jīng)元,下一層神經(jīng)元又將這種激活狀態(tài)傳播到后續(xù)各層的神經(jīng)元,最 終在輸出層產(chǎn)生預(yù)測結(jié)果。
神經(jīng)元的激活規(guī)則就是,某個(gè)神經(jīng)元激活值由上一層神經(jīng)元激活值的某種加權(quán)方式來決 定。例如,神經(jīng)元 c1 激活值由上一層神經(jīng)元激活值的某種加權(quán)形式來表達(dá),如 σ (w1a1+w2a2+... +wnan+b),其中 ai 是上一層某個(gè)神經(jīng)元的激活值;wi 是上一層該神經(jīng)元激活值對神經(jīng)元 ci 激活 值影響的權(quán)重;b 則是神經(jīng)元 c1 被激活的難易程度,即偏置;σ 是 sigmoid 函數(shù),主要作用是將 函數(shù)值壓縮為 0 ~ 1。
3.激活規(guī)則的關(guān)鍵:神經(jīng)網(wǎng)絡(luò)非線性矯正
早期神經(jīng)網(wǎng)絡(luò)的非線性函數(shù)經(jīng)常使用 sigmoid 函數(shù)來將數(shù)值壓縮為 0 ~ 1,但現(xiàn)在更多使用 relu 函數(shù)或者 tanh 函數(shù)來進(jìn)行處理。
總的來說,上述 3 個(gè)函數(shù)有著各自的優(yōu)缺點(diǎn)和使用場景。
第一,sigmoid 函數(shù)和 tanh 函數(shù)親緣關(guān)系較近,一般認(rèn)為 tanh 函數(shù)是 sigmoid 函數(shù)的改造版 本。在神經(jīng)網(wǎng)絡(luò)的隱藏層中,tanh 函數(shù)的表現(xiàn)要優(yōu)于 sigmoid 函數(shù),因?yàn)?tanh 函數(shù)范圍為 -1 ~ 1, 數(shù)據(jù)的平均值為 0,有類似數(shù)據(jù)中心化的效果。
第二,在神經(jīng)網(wǎng)絡(luò)的輸出層中,sigmoid 函數(shù)的表現(xiàn)要優(yōu)于 tanh 函數(shù),這是因?yàn)?sigmoid 函 數(shù)輸出結(jié)果為 0 ~ 1,而 tanh 函數(shù)輸出結(jié)果為 -1 ~ 1。輸出結(jié)果為 0 ~ 1 更符合人們的習(xí)慣認(rèn)知。
第三,relu 函數(shù)不同于上述兩個(gè)函數(shù),在深層網(wǎng)絡(luò)中使用較多。工程實(shí)踐中,sigmoid 函數(shù)和 tanh 函數(shù)會在深層網(wǎng)絡(luò)訓(xùn)練中出現(xiàn)端值飽和的現(xiàn)象,從而導(dǎo)致網(wǎng)絡(luò)訓(xùn)練速度變慢。因此,一般在神經(jīng)網(wǎng)絡(luò)層次較淺時(shí)使用 sigmoid 函數(shù)和 tanh 函數(shù),而在深層網(wǎng)絡(luò)中使用 relu 函數(shù)。
4.代價(jià)函數(shù)與參數(shù)優(yōu)化
代價(jià)函數(shù)的一個(gè)合理形式是
當(dāng)分類準(zhǔn)確時(shí)這個(gè)代 價(jià)函數(shù)值就較小,當(dāng)分類錯(cuò)誤時(shí)這個(gè)代價(jià)函數(shù)值就較大。我們可以通過不斷調(diào)整參數(shù)值來優(yōu)化代價(jià)函數(shù),最終確定合適的模型參數(shù)。
13.4 MLP的代價(jià)函數(shù)與梯度下降
MLP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程由信號的正向傳播與誤差的反向傳播兩個(gè)過程組成。
(1)正向傳播時(shí),輸入樣本從輸入層傳入,經(jīng)各隱藏層逐層處理后傳向輸出層。若輸出層 的輸出值與實(shí)際值不符,則轉(zhuǎn)入誤差的反向傳播階段。
(2)誤差的反向傳播是將輸出誤差以某種形式通過隱藏層向輸入層逐層反向傳播,并將誤差分 攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權(quán)值的依據(jù)。
(3)這個(gè)信號的正向傳播與誤差的反向傳播的各層權(quán)值調(diào)整過程,是周而復(fù)始地進(jìn)行的。 權(quán)值不斷調(diào)整的過程,也就是神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)訓(xùn)練過程,此過程一直進(jìn)行到神經(jīng)網(wǎng)絡(luò)輸出的誤 差減小到可接受的程度或進(jìn)行到預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止。
13.4.1 代價(jià)函數(shù):參數(shù)優(yōu)化的依據(jù)
13.4.2 梯度下降法:求解代價(jià)函數(shù)最小值
識別手寫數(shù)字的任務(wù) 中,梯度下降法的工作過程主要如下。
(1)首先,隨機(jī)給定一系列的權(quán)重值與偏置值。當(dāng)然,這樣最后的識別效果一般來說都會 很糟糕。
(2)接下來,算法需要不斷改進(jìn)。改進(jìn)的方向就是使代價(jià)函數(shù)的數(shù)值不斷減小;代價(jià)函數(shù)是輸出層神經(jīng)元激活值的表達(dá)式,如 。
(3)代價(jià)函數(shù)越小,就表示輸出層神經(jīng)元激活值的真實(shí)值與預(yù)測值的差距越小,手寫數(shù)字 識別效果較好。
(4)梯度下降就是隨機(jī)設(shè)定參數(shù)的初始值,然后沿著負(fù)梯度方向進(jìn)行迭代(可調(diào)節(jié)步長或 迭代次數(shù)改進(jìn)梯度下降效率),直到達(dá)到代價(jià)函數(shù)的最小值。
一般的做法是,首先將訓(xùn)練樣本打亂順序并劃分為許多小組,每個(gè)小組都包含若干 數(shù)量的訓(xùn)練樣本。然后,使用某個(gè)小組數(shù)據(jù)來計(jì)算一次梯度。這種梯度下降法就是隨機(jī)梯度下降法。
13.5 反向傳播算法的本質(zhì)與推導(dǎo)過程
13.5.1 反向傳播算法:神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法
反向傳播(Back Propagation,BP)算法是一種重要的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法,“反向”的含義主要是指誤差的反向傳播。
1.反向傳播算法有什么用
反向傳播算法可以看成梯度下降法在神經(jīng)網(wǎng)絡(luò)中的變形版本,它的原理主要是利用鏈?zhǔn)椒?則通過遞歸的方式求解微分,從而簡化對神經(jīng)網(wǎng)絡(luò)梯度下降優(yōu)化參數(shù)時(shí)的計(jì)算。在輸入數(shù)據(jù)固 定的情況下,反向傳播算法利用神經(jīng)網(wǎng)絡(luò)的輸出敏感度來快速計(jì)算神經(jīng)網(wǎng)絡(luò)中的各種超參數(shù), 從而大大減少訓(xùn)練所需時(shí)間。
2.反向傳播算法是什么
提升激活值可以采用的方法為改變權(quán)重 wi 和偏置 b、改變上層神經(jīng)元激活值 ai。不 過,我們并不能改變上一層神經(jīng)元激活值,我們能夠改變的只是權(quán)重和偏置。
上一層神經(jīng)元權(quán)重和偏置的變化情況會綜合考慮輸出層各神 經(jīng)元的“要求”。這就是反向傳播算法的核心思想,通過調(diào)整上一層各神經(jīng)元的權(quán)重和偏置來實(shí) 現(xiàn)下一層各神經(jīng)元激活值的“期待”,重復(fù)這個(gè)過程到神經(jīng)網(wǎng)絡(luò)的所有層。
13.5.2 尋根究底:搞懂反向傳播算法的數(shù)學(xué)原理
1. 代價(jià)函數(shù)如何表達(dá)
2.代價(jià)函數(shù)偏導(dǎo)鏈?zhǔn)絺鬟f規(guī)律
上述代價(jià)函數(shù)對權(quán)重的偏導(dǎo)數(shù)只是一個(gè)訓(xùn)練樣本的結(jié)果。由于總代價(jià)函數(shù)是 n 個(gè)訓(xùn)練樣本 代價(jià)函數(shù)的均值,因此總代價(jià)函數(shù)對權(quán)重的偏導(dǎo)數(shù)為。
雖然神經(jīng)網(wǎng)絡(luò)算法強(qiáng)大,應(yīng)用廣泛,但是它有個(gè)比較明顯的不足就是可解釋性較差。