循環(huán)神經(jīng)網(wǎng)絡(luò)|深度學習(李宏毅)(五)

一苛白、RNN的引出(槽位填充問題)

  • 槽位填充問題
    ??槽位填充問題:如下圖所示俱恶,在售票系統(tǒng)中需要將客戶的一句話中的信息提取出來填充到對應(yīng)的槽位下:
槽位填充
  • 詞的表示方法
  1. 1-of-N Encoding(獨熱編碼)
    ??在知道總共有幾個詞的情況下使用缘琅。
獨熱編碼
  1. Beyond 1-of-N encoding

2.1 為獨熱編碼增加“other”維度
為獨熱編碼增加“other”維度

2.2 Word hashing
??詞向量的每一個維度表示一個序列鲸阔,如果詞中出現(xiàn)該序列則標記為1擎场。

Word hashing
  • 使用前饋神經(jīng)網(wǎng)絡(luò)解決槽位填充問題
    ??按照解決多分類問題的思路使用前饋神經(jīng)網(wǎng)絡(luò)來解決槽位填充問題意系,但是使用前饋神經(jīng)網(wǎng)絡(luò)有一定的局限性钾腺。
    ??輸入:詞向量
    ??輸出:該詞屬于某一槽位的概率
使用前饋網(wǎng)絡(luò)解決槽位填充問題
  • 使用前饋神經(jīng)網(wǎng)絡(luò)存在的問題
arrive
leave

??由上圖可知徙垫,Taipei一詞屬于哪一個槽位還與其上下文有關(guān),因此解決該問題的神經(jīng)網(wǎng)絡(luò)需要具有記憶放棒,由此引入了具有記憶的神經(jīng)網(wǎng)絡(luò)——循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)姻报。

二、循環(huán)神經(jīng)網(wǎng)絡(luò)(本小節(jié)指的是簡單RNN)

  • RNN直觀的架構(gòu)
    ??循環(huán)神經(jīng)網(wǎng)絡(luò)相當于在全連接網(wǎng)絡(luò)的隱藏層加入多個“memory”節(jié)點间螟,隱藏層的輸出值被保存在memory中吴旋,由此完成了“記憶”的過程,隱藏層的輸入除了輸入層的輸入以外還包括memory中保存的數(shù)據(jù)厢破,隱藏層的輸出除了要傳播到輸出層以外還會用于更新memory中的值荣瑟。其簡單的架構(gòu)圖如下:
簡單RNN
  • RNN詳細的架構(gòu)
循環(huán)神經(jīng)網(wǎng)絡(luò)使用單層的全連接結(jié)構(gòu)圖

??循環(huán)網(wǎng)絡(luò)在每一時間t有相同的網(wǎng)絡(luò)結(jié)構(gòu),假設(shè)輸入xn維向量摩泪,隱含層的神經(jīng)元個數(shù)為m笆焰,輸出層的神經(jīng)元個數(shù)為r,則U的大小為n×m維见坑;W是上一次的a_{t-1}作為這一次輸入的權(quán)重矩陣嚷掠,大小為m×m維;V是連輸出層的權(quán)重矩陣荞驴,大小為m×r維不皆。而x_ta_to_t都是向量熊楼,它們各自表示的含義如下:

  1. x_t是時刻t的輸入霹娄;
  2. a_t是時刻t的隱層狀態(tài)。它是網(wǎng)絡(luò)的記憶鲫骗。a_t基于前一時刻的隱層狀態(tài)和當前時刻的輸入進行計算犬耻,即a_t=f(Ux_t+Wa_{t-1})。函數(shù)f通常是非線性的挎峦,如tanh或者ReLU香追。a_{t-1}為前一個時刻的隱層狀態(tài),其初始化通常為0坦胶;
  3. o_t是時刻t的輸出坤邪。例如,如果我們想預測句子的下一個詞诚卸,它將會是一個詞匯表中的概率向量,o_t=softmax(Va_t)税弃;a_t認為是網(wǎng)絡(luò)的記憶狀態(tài),a_t可以捕獲之前所有時刻發(fā)生的信息凑队。輸出o_t的計算僅僅依賴于時刻t的記憶则果。
  • 使用循環(huán)神經(jīng)網(wǎng)絡(luò)解決槽位填充問題
    ??將每個詞向量輸入到RNN中,得到的每一個輸出向量表示對應(yīng)的詞屬于某一個槽位的概率漩氨。
使用循環(huán)神經(jīng)網(wǎng)絡(luò)解決槽位填充問題

??回到上文中提到的“arrive”和“l(fā)eave”問題西壮,由于這兩個詞的詞向量是不同的,因此在獲得“Taipei”一詞的輸出時就不會像前饋神經(jīng)網(wǎng)絡(luò)一樣得到相同的結(jié)果叫惊,說明網(wǎng)絡(luò)的記憶為解決需要考慮上下文的槽位填充問題提供了可能款青。

使用循環(huán)神經(jīng)網(wǎng)絡(luò)解決槽位填充問題
  • 深層RNN
    ??RNN也可以“deep”,將RNN疊加到一起可以形成深層的RNN霍狰。
RNN can be deep
  • RNN變種
  1. Elman Network
    ??上述RNN為Elman Network架構(gòu)抡草,其主要特點是將隱藏層的輸出保存在memory中傳給下一個時間點。
Elman Network
  1. Jordan Network
    ??與Elman Network不同的是Jordan Network是將網(wǎng)絡(luò)的輸出層的輸出保存在memory中傳給下一個時間點蔗坯。這樣同Elman Network比起來我們更清楚memory中保存了什么康震。
Jordan Network
  1. Bidirectional RNN(RNN)
    ??在Elman Network和Jordan Network中網(wǎng)絡(luò)的某一個輸出值只取決于這個輸出對應(yīng)的輸入以及這個輸入之前的輸入的影響,而雙向RNN的每一個輸出值都會受到所有的輸入的影響宾濒,真正地考慮了“上下文”腿短。
Bidirectional RNN

三、Long Short-term Memory (LSTM 長短期記憶網(wǎng)絡(luò))

??在簡單RNN中某一個時間點的memory會直接全部清洗掉上一個時間點的memory绘梦,而在LSTM中由于加入了遺忘門使得網(wǎng)絡(luò)的上一個時間點的memory有機會根據(jù)遺忘門的值來保留下一部分答姥。

  • LSTM直觀的架構(gòu)
    ??LSTM的一個cell有4個輸入和一個輸出,輸入包括3個門結(jié)構(gòu)(輸入門谚咬、輸出門、遺忘門)以及cell的輸入尚粘,其簡單架構(gòu)圖如下:
LSTM的結(jié)構(gòu)

??門結(jié)構(gòu)的值通常使用sigmoid函數(shù)作為激活函數(shù)择卦,因此其值均會在0-1之間。cell的輸入會與輸入門的值進行相乘來決定輸入有多少可以進入cell郎嫁,遺忘門的值決定原來的memory cell中的“記憶”有多少可以被保留秉继,輸入門的值決定cell中的值有多少可以輸出。其具體的傳播過程如下圖泽铛,其中f(z_i)尚辑、f(z_f)f(z_o)為門結(jié)構(gòu)的輸出值:

LSTM中的運算

??上圖與常見的LSTM架構(gòu)圖的對應(yīng)關(guān)系如下圖所示盔腔,首先要將t時刻的輸入向量x^t乘以四個不同的權(quán)重矩陣得到四個相同維度的向量z_f杠茬、z_i月褥、zz_o瓢喉,這四個向量分別對應(yīng)下圖右半部分的較直觀的架構(gòu)圖中cell的四個輸入:

LSTM直觀架構(gòu)圖與常見架構(gòu)圖的對應(yīng)關(guān)系
  • LSTM詳細的架構(gòu)
    ??下圖展示了一個LSTM cell的細節(jié)宁赤,在這個圖中將上一個時間點的輸出向量與當前時間點的輸入向量拼接到一起作為當前時間點的輸入:
LSTM單元細節(jié)圖
  • LSTM cell不同時間點之間的關(guān)系
    ??LSTM會以下圖的連接方式連接不同的時間點:
連接方式

??然而上圖并非LSTM的最終狀態(tài),LSTM還會把上一個時間點的輸出以及存在于memory cell中的值與當前時間點的輸入拼接到一起栓票,通過這種方式使得操控LSTM四個輸入的時候同時考慮了當前時間點的輸入决左、上一個時間點的輸出以及保存在memory cell中的值:

LSTM最終形態(tài)
  • 深層LSTM
    ??LSTM也可以“deep”,將LSTM疊加到一起可以形成深層的LSTM走贪。
深層LSTM

四佛猛、RNN的訓練

  • 反向傳播
    ??RNN的反向傳播使用一種特殊的方式,叫做Backpropagation through time (BPTT 隨時間反向傳播)坠狡。
  • 梯度消失與梯度爆炸
RNN訓練過程中l(wèi)oss變化

??在訓練RNN時我們希望訓練過程中的loss像藍色的線那樣變化继找,但是不幸的是有時候loss的變化會像綠色的線那樣。
??RNN的loss在有些地方非常陡峭擦秽,有些地方又非常平坦码荔,有時梯度更新到“懸崖”的地方再進行更新就會飛出很遠,即梯度爆炸感挥。使用clipping可以緩解這個問題缩搅,即設(shè)置一個梯度的極限值,當梯度大于這個值時就讓梯度等于這個值触幼。更新梯度的變化圖如下所示:

RNN中的梯度下降

??舉個例子來說硼瓣,當RNN結(jié)構(gòu)如下所示時,網(wǎng)絡(luò)的最后一個輸出y^{1000}w^{999}

例子

??此時當參數(shù)w輕微變化時就會對結(jié)果產(chǎn)生明顯影響:

梯度爆炸與梯度消失

??使用LSTM可以解決梯度消失問題置谦,這是因為與簡單RNN不同的是LSTM更新memory的方式是將上一個時間點的memory保留一部分再與輸入相加堂鲤,因此前面時間點的memory會一直對輸出結(jié)果有影響,這樣就不會產(chǎn)生梯度消失問題媒峡,而簡單RNN會在當前時間點更新memory時完全洗掉上一個時間點的memory瘟栖。簡單RNN和LSTM更新memory的方式如下:
??簡單RNN:a_t=f(Ux_t+Wa_{t-1})
??LSTM:c_t=g(z)f(z_i)+c_{t-1}f(z_f)
??另外兩種解決梯度消失問題的網(wǎng)絡(luò)結(jié)構(gòu)如下:

兩種解決梯度消失問題的網(wǎng)絡(luò)結(jié)構(gòu)

??另外需要注意在簡單RNN中隨機初始化參數(shù)時使用sigmoid激活函數(shù)會比使用ReLU效果更好一些,但是使用單位矩陣初始化參數(shù)時ReLU激活函數(shù)會比sigmoid激活函數(shù)效果要好谅阿。

參考資料

ref:吳茂貴《Python深度學習:基于TensorFlow》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末半哟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子签餐,更是在濱河造成了極大的恐慌寓涨,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氯檐,死亡現(xiàn)場離奇詭異戒良,居然都是意外死亡,警方通過查閱死者的電腦和手機冠摄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門糯崎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來几缭,“玉大人,你說我怎么就攤上這事拇颅∽嗨荆” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵樟插,是天一觀的道長韵洋。 經(jīng)常有香客問我,道長黄锤,這世上最難降的妖魔是什么搪缨? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鸵熟,結(jié)果婚禮上副编,老公的妹妹穿的比我還像新娘。我一直安慰自己流强,他們只是感情好痹届,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著打月,像睡著了一般队腐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奏篙,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天柴淘,我揣著相機與錄音,去河邊找鬼秘通。 笑死为严,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的肺稀。 我是一名探鬼主播第股,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼话原!你這毒婦竟也來了炸茧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稿静,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辕狰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體改备,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年蔓倍,在試婚紗的時候發(fā)現(xiàn)自己被綠了悬钳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盐捷。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖默勾,靈堂內(nèi)的尸體忽然破棺而出碉渡,到底是詐尸還是另有隱情,我是刑警寧澤母剥,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布滞诺,位于F島的核電站,受9級特大地震影響环疼,放射性物質(zhì)發(fā)生泄漏习霹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一炫隶、第九天 我趴在偏房一處隱蔽的房頂上張望淋叶。 院中可真熱鬧,春花似錦伪阶、人聲如沸煞檩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斟湃。三九已至,卻和暖如春筹误,著一層夾襖步出監(jiān)牢的瞬間桐早,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工厨剪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哄酝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓祷膳,卻偏偏與公主長得像陶衅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子直晨,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354