h5游戲中心seo優(yōu)化需要多少錢
前言: 通過前面的學(xué)習(xí),我們以BP神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),認(rèn)識到了損失函數(shù),激活函數(shù),以及梯度下降法的原理;而后學(xué)習(xí)了卷積神經(jīng)網(wǎng)絡(luò),知道圖像識別是如何實(shí)現(xiàn)的。今天這篇文章,講述的就是計(jì)算機(jī)如何通過RNN與LSTM來做到自然語言的理解。
引入:
自然語言中,存在著強(qiáng)烈的語序和語境,詞與詞之前,是存在著時(shí)序順序的,既然是存在著時(shí)序順序,那就意味著詞與詞,之間是存在著邏輯關(guān)系,并不是單獨(dú)的,那么當(dāng)我們把一句話中的每個(gè)字,用獨(dú)熱編碼表示后,一個(gè)字一個(gè)字的輸入到神經(jīng)網(wǎng)絡(luò)中,就需要一種手段,來記錄下字與字之間的關(guān)系,更通俗一點(diǎn),就是我們下一個(gè)字的訓(xùn)練,是需要和上一個(gè)字的訓(xùn)練產(chǎn)生一些聯(lián)系的,那么我們就需要再BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,想一個(gè)辦法來實(shí)現(xiàn)這個(gè)機(jī)制。
循環(huán)神經(jīng)網(wǎng)絡(luò):
要想實(shí)現(xiàn)上面的機(jī)制,聰明的科學(xué)家已經(jīng)幫我們想到了如何讓每次訓(xùn)練之間產(chǎn)生聯(lián)系,當(dāng)我們把隱含層中的輸出,作為下一個(gè)訓(xùn)練時(shí)刻隱含層的輸入,就可以讓每一次訓(xùn)練產(chǎn)生聯(lián)系,如下圖:
紅色的線條,就是隱含層傳遞參數(shù)給下一個(gè)時(shí)刻隱含層的參數(shù)。我們用下面這張圖,再來詳細(xì)解釋一下具體的執(zhí)行:
- 首先是兩個(gè)時(shí)刻t0和t1,使用隨機(jī)正態(tài)分布初始化網(wǎng)絡(luò)中的節(jié)點(diǎn),因?yàn)槲覀冚斎氲氖且痪S的向量,但是從b可以看出,隱含層中的神經(jīng)元是兩個(gè),并且每個(gè)神經(jīng)元中有一個(gè)三維向量,所以我們的a,就使用一個(gè)2維向量,這樣就可以補(bǔ)齊成一個(gè)3維的了。
- 綠色框內(nèi),就是隱含層再t0時(shí)刻的計(jì)算,藍(lán)色框內(nèi)就是隱含層計(jì)算后,使用激活函數(shù)獲取的值。
- 粉色框就是隱含層和輸出層的計(jì)算矩陣,最后再通過一個(gè)激活函數(shù)輸出。
- 可以看出在t1時(shí)刻,藍(lán)色框作為上一個(gè)時(shí)刻隱含層的輸出和t1時(shí)刻的輸入,組合成了一個(gè)新的向量來進(jìn)行運(yùn)算,這就使得下個(gè)時(shí)刻的訓(xùn)練和上一個(gè)時(shí)刻產(chǎn)生了聯(lián)系。
其中隱含層一般使用tanh作為激活函數(shù),輸出層使用softMax來作為激活函數(shù)。
當(dāng)我們進(jìn)行了一句話的訓(xùn)練后,會產(chǎn)生很多個(gè)時(shí)刻,每個(gè)時(shí)刻都有一個(gè)誤差值,我們使用bp神經(jīng)網(wǎng)絡(luò)的反向傳播,梯度下降法 就可以去更新每個(gè)節(jié)點(diǎn)的權(quán)值,如下圖,在E3時(shí)刻使用梯度下降法反向傳播,更新了輸出節(jié)點(diǎn)和隱含層節(jié)點(diǎn)的權(quán)值,圖中可以明顯看出,S3節(jié)點(diǎn)是需要前面時(shí)刻節(jié)點(diǎn)的鏈?zhǔn)椒▌t來求導(dǎo)的
因?yàn)槭鞘褂面準(zhǔn)角髮?dǎo),所以就會存在一個(gè)致命的問題,會導(dǎo)致梯度消失,當(dāng)一句話長度過于的長,就會導(dǎo)致后面。因?yàn)殡S著求導(dǎo)的次數(shù)增多,值就會越來越小,所以導(dǎo)致了梯度消失,所以我們就需要學(xué)習(xí)下面的LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)。
長短期記憶神經(jīng)網(wǎng)絡(luò):
LSTM宏觀結(jié)構(gòu)上和RNN并無差異,但是在隱含層的微觀結(jié)構(gòu)卻完全不一樣。
長短期記憶神經(jīng)網(wǎng)絡(luò)的隱含層結(jié)構(gòu)包含:遺忘門,輸入門,輸出門。
遺忘門: 遺忘門通過接收上一個(gè)時(shí)刻隱含層輸出,以及該時(shí)刻的輸入,經(jīng)過sigmoid函數(shù)的變換,以上一時(shí)刻的輸出a做乘法,做歸一化處理。
輸入門: 通過接收上一個(gè)時(shí)刻隱含層輸出,以及該時(shí)刻的輸入,一個(gè)經(jīng)過sigmoid變化,一個(gè)經(jīng)過tanh變換,然后使用乘法,把候選者加入細(xì)胞中,再和遺忘門計(jì)算出來的b,進(jìn)行一個(gè)加法操作,就可以實(shí)現(xiàn)重要信息的保留,忘掉不重要的信息
輸出門: 接收上一個(gè)時(shí)刻隱含層輸出,以及該時(shí)刻的輸入,經(jīng)過一個(gè)sigmoid變換,與輸入門和遺忘門的和C,進(jìn)行一個(gè)乘法運(yùn)算,就可以得到ht時(shí)刻的輸出,以及下一個(gè)t+1時(shí)刻隱含層的輸入。
參考:深度學(xué)習(xí)及其應(yīng)用(趙衛(wèi)東)