天天看點

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

文章目錄

  • 前言
  • 一、論文閱讀《Sequence to Sequence Learning with Neural Networks》
    • 主要内容
    • 模型結構
      • 反轉源句 Reversing the Source Sentences
    • 實驗
      • 編碼 encode
      • 解碼 decode
      • 結果
    • 論文總結
  • 二、循環神經網絡RNN公式推導
    • RNN模型
    • 前向計算
    • 反向傳播
      • 誤差項的計算
      • 權重梯度的計算
  • 三、LSTM學習
    • 1.LSTM是什麼
    • 2.單元結構
    • 3.每個結構的公式
  • 總結

前言

this week,I read a paper on Long Short-Term Memory. In this paper, author presented a general end-to-end approach to sequence learning that used a multilayered Long Short-Term Memory (LSTM) to map the input sequence to a vector of a fixed dimensionality, and then another deep LSTM to decode the target sequence from the vector. At the same time,mathematical expressions of RNN and the backpropagation problem were derived. I also learned the basic structure and mathematical formulas of LSTM。

本周,我看了關于LSTM的論文,文中的方法是使用多層長短期記憶(LSTM)将輸入序列映射到一個固定次元的向量,然後再使用另一個深度長短期記憶(LSTM)從該向量解碼目标序列。我還學習了RNN的數學推導和LSTM的結構。

一、論文閱讀《Sequence to Sequence Learning with Neural Networks》

《Sequence to Sequence Learning with Neural Networks》是谷歌2014年發表的一篇神作(引用量上千),提出了sequence to sequence model,使用了LSTM模型。

主要内容

本文提出了一個端到端的方法(end-to-end)用于處理序列到序列的任務,利用多層的LSTM将input sequence 映射到一個固定次元的向量,使用另一個LSTM從這個向量解碼出target sequence。sequence指的是由多個單詞構成的序列/句子。本文提出的模型能夠處理長句子;能夠學習對單詞次序敏感且相對于主動、被動語态不敏感的單詞和句子表示。

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

我們的模型讀取輸入句子“ABC”并生成“WXYZ”作為輸出句子。模型在輸出句末令牌後停止進行預測。注意,LSTM反向讀取輸入語句,因為這樣做會在資料中引入許多短期依賴性,進而使優化問題更加容易。

同時,LSTM的一個有用的特性是它學會将一個可變長度的輸入句子映射到一個固定維的向量表示。鑒于譯文往往是對源句的轉述,翻譯目标鼓勵LSTM找到表達其意思的句子表示,因為意思相近的句子彼此接近,而不同的兩個句子的意思會很遠。一個定性的評價支援這一主張,表明我們的模型意識到詞序,并對主動和被動語态相當不變。

模型結構

模型目标:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

在這個方程中,每一個p(yt|v, y1,…, yt−1)的分布用對詞彙表中所有單詞的softmax表示。注意,我們要求每個句子以一個特殊的句末符号“”結束,這使模型能夠定義所有可能長度的序列上的分布。總體方案如圖1所示,所示的LSTM計算“A”、“B”、“C”、“EOS”的表示,然後使用該表示計算“W”、“X”、“Y”、“Z”、“EOS”的機率。

目的:找到機率最大的output sequence

反轉源句 Reversing the Source Sentences

雖然LSTM能夠解決長期依賴的問題,但我們發現,當源句颠倒(目标句沒有颠倒)時,LSTM的學習效果更好。

但是作者對這一現象沒有一個完整的解釋,他們解釋道:相信這是由于資料集引入了許多短期依賴性造成的。通常情況下,當我們将源句與目标句連接配接時,源句中的每個詞都與目标句中相應的詞有一定的距離。是以,該問題具有很大的“最小時滞”[17]。把源句中的單詞倒過來,源語和目的語中對應單詞之間的平均距離是不變的。然而,源語言的前幾個單詞現在非常接近目智語言的前幾個單詞,是以問題的最小時滞大大減少了。是以,反向傳播可以更容易地在源句和目标句之間“建立通信”,進而大幅提高總體性能。

實驗

任務描述:将英語翻譯成法語

資料集:12M句子,輸入詞典(英文)160,000個詞;輸出詞典(法語)80,000個詞;不包含在詞典中的詞用UNK表示,映射到embedding中是一個确定的的向量。

編碼 encode

實驗的核心是在許多句子對上訓練一個大而深的LSTM,通過最大化以下訓練目标函數來訓練這個網絡,其中機率p是給定源句子S得到正确翻譯T

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

S是訓練集,訓練完成後,根據模型找出最可能的翻譯作為結果

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

解碼 decode

我們使用一個簡單的從左到右波束搜尋解碼器來搜尋最可能的翻譯,該解碼器保持少量的B個部分假設,其中部分假設是某個翻譯的字首。在每個時間步中,我們用詞彙表中的每一個可能的詞擴充梁中的每個部分假設。這大大增加了假設的數量,是以根據模型的對數機率,我們丢棄了除B最有可能的假設之外的所有假設。隻要“”符号被添加到一個假設之後,它就會從波束中移除,并被添加到完整假設集中。本文采用beam size = 2,即,每次都會選擇機率最大的兩個序列作為下一個時間步長的輸入。

結果

本文采取了衡量名額BLEU,BLEU采用一種N-gram的比對規則,比較模型預測的譯文和參考譯文之間的n組詞的相似的占比。n=1,表示每次取1個單詞進行兩個譯文之間的比較。

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

1.該模型對長句的翻譯表現較好:左邊的圖顯示了我們的系統的性能作為句子長度的函數,其中x軸對應于按長度排序的測試句子,并由實際的序列長度标記。小于35個單詞的句子沒有退化,最長的句子隻有輕微退化。右邊的圖顯示了LSTM在含有越來越多稀有詞的句子上的表現,其中x軸對應于根據“平均詞頻排名”排序的測試句子。

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

模型能夠捕獲句子中次序的改變,如主語和賓語調換位置:圖中顯示了對圖中短語進行處理後得到的LSTM隐藏狀态的二維PCA投影。其中短語是按意義聚類的。模型的一個吸引人的特性是它能夠将單詞序列轉換為一個固定次元的向量。

論文總結

作者實際使用的模型與LSTM有以下三方面的不同:

(1)使用了2個不同的LSTM,一個用于input sequence,一個用于output sequence,有助于訓練多種語言對:輸入是一種語言類型,輸出可以是第二種,第三種等語言類型,這樣訓練得到的encoder部分可以和不同種類的decoder拼接,實作不同的任務;

(2)深層的LSTM的表現顯著優于淺層LSTM,本文選用了4層的LSTM;

(3)模型采用逆序的方式輸入input sequence,舉例來說,不是把句子a,b,c映射為句子α,β,γ,而是把c,b,a映射為α,β,γ。這樣做使得a非常靠近α,b非常靠近β,以此SGD就很容易在輸入和輸出之間"建立通信",這種簡單的資料轉換大大提高了LSTM的性能。

二、循環神經網絡RNN公式推導

經過上周對RNN模型的了解,如今已經基本弄懂模型的構造了,是以本周開始學習RNN模型的公式推導。

RNN模型

在傳統的神經網絡中,主要包含輸入層、隐藏層、輸出層三個部分。在RNN神經網絡中,也是如此,但不同的是在隐藏層中對了一個循環結構,其基本的圖示如下:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

這裡激活函數用到的是tanh函數,在其他RNN模型中也有relu和sigmoid函數的,其中relu函數效果最好。

隐藏層展開之後的圖像:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

隻要輸入元素X足夠多,循環可以一直進行下去,并且前面提取到的特征會一直對後面的特征提取的結果産生影響。

前向計算

用這張圖做例子,進行演算:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

其輸出的結果: St=f(UXt+WSt-1)(這裡為了直覺,省去了截距b)

上面的St、Xt、St-1都是向量,用黑體字母表示;而U、V是矩陣,用大寫字母表示。向量的下标表示時刻,例如,St表示在t時刻向量s的值。

我們假設輸入向量x的次元是m,輸出向量s的次元是n,則矩陣U的次元是n × m ,矩陣W的次元是n × n 。下面是上式展開成矩陣的樣子,看起來更直覺一些:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

在這裡我們用手寫體字母表示向量的一個元素,它的下标表示它是這個向量的第幾個元素,它的上标表示第幾個時刻。例如,

Sjt 表示向量s的第j個元素在t時刻的值。

Uji表示輸入層第i個神經元到循環層第j個神經元的權重。

Wjt表示循環層第t-1時刻的第i個神經元到循環層第t個時刻的第j個神經元的權重。

反向傳播

循環神經網絡的訓練算法:BPTT

BPTT算法是針對循環層的訓練算法,它的基本原理和BP算法是一樣的,也包含同樣的兩個步驟:

1.反向計算每個神經元的誤差項δj值,它是誤差函數E對神經元j的權重輸入netj的偏導數;

2.計算每個權重的梯度。

誤差項的計算

BTPP算法将第l層t時刻的誤差項值δjl沿兩個方向傳播,一個方向是其傳遞到上一層網絡,得到δjl-1 ,這部分隻和權重矩陣U有關;另一個是方向是将其沿時間線傳遞到初始時刻t1 ,得到δjl ,這部分隻和權重矩陣W有關。

我們用向量nett表示神經元在t時刻的權重輸入:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

接着把兩項相乘:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

循環層将誤差項反向傳遞到上一層網絡,因為沒有涉及到上一個時刻的輸出,是以與普通的全連接配接層是完全一樣的。

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

權重梯度的計算

現在,我們終于來到了BPTT算法的最後一步:計算每個權重的梯度。

前提還是在這條公式的基礎上:nett=UXt+WSt-1

首先,我們計算誤差函數E對權重矩陣W的梯度:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

這就是計算循環層權重矩陣W的梯度公式。

然後計算權重U,同權重矩陣W類似,我們可以得到權重矩陣U的計算方法。

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

最終的梯度∇ UE是各個時刻的梯度之和。

當然還有截距b,也是求導之後對所有時刻的求和,但這裡就不再介紹了。

三、LSTM學習

RNN是想把所有的資訊都記住,包括有用的和沒用的資訊。于是産生很多的備援。于是人們想出了LSTM,設計一個記憶細胞,具備選擇性記憶的功能,可以選擇記憶有用的資訊,過濾掉噪音資訊,減輕記憶負擔。

同時,RNN存在梯度爆炸和梯度消失的現象,梯度消失不是指後面時刻參數更新的時候梯度為0,而是後面時刻的梯度更新的時候,前面更遠時刻的序列對參數更新不起作用,梯度被近距離梯度主導,是以說RNN無法捕捉長期依賴。LSTM也對此進行了改良。

1.LSTM是什麼

長短期記憶(Long short-term memory, LSTM)是一種特殊的RNN,主要是為了解決長序列訓練過程中的梯度消失和梯度爆炸問題。簡單來說,就是相比普通的RNN,LSTM能夠在更長的序列中有更好的表現。

有這樣的:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

也有這樣的:

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

當然,雖然圖像表示不一樣,但核心萬變不離其中,三個輸入,三個門(遺忘門,更新門,輸出門),三個輸出。

2.單元結構

輸入:和RNN不同,LSTM有三個輸入,一個是目前序列的輸入Xt,一個是上一個單元的輸出,本單元的輸入ht-1,另一個是上一個單元保留的内容Ct-1。

門:遺忘門:遺忘門經過計算後是一串0或1的序列,用于保留或是遺忘部分上一單元的保留的内容Ct-1。

更新門:接受本單元的序列和上一單元的輸出,整合更新,然後添加到要輸出的本單元的内容Ct中。

輸出門:接受本單元的序列和上一單元的輸出,再和Ct整合,得到最後的輸出ht。

輸出:三個輸出,一個是本單元的輸出,下一單元的輸入ht,一個是本單元要保留的内容Ct,還有一個是本單元的最終輸出,在Ct的基礎上在調整,計算出Yt。

3.每個結構的公式

2022.11.27 第九次周報前言一、論文閱讀《Sequence to Sequence Learning with Neural Networks》二、循環神經網絡RNN公式推導三、LSTM學習總結

最後是LSTM如何緩解梯段消失問題,有點複雜。下周再學。

總結

本周學習了關于使用LSTM的一篇論文,他是把LSTM模型引入了機器翻譯中,并且提出了把原句翻轉的方法,但是也沒用給出為什麼,不過的确提高看準确度。這個思想可以學習一下–翻轉原句。本周還學習了RNN正反向的數學公式的推導,和LSTM模型的結構。

繼續閱讀