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