深度學習與自然語言處理 01 迴圈神經網路RNN

2021-09-27 12:42:50 字數 3233 閱讀 7426

深度學習,準確的說是神經網路,實際上源於上世紀六十年代的感知機技術,當時由於技術不成熟和算力不發達,並沒有在當時就取得特別好的成果。這門技術爆發是在計算機圖形學(cv)領域,大家驚奇地發現雖然深度學習可解釋性很差,但它作為一種仿照人類大腦的模型,在影象分類、目標檢測等領域還真就碾壓了傳統方法,甚至取得了比人類還要好的成績。之後,人們又發現,通過使用rnn,深度學習在自然語言處理這個領域也居然也取得了非常好的效果。

到目前為止,人工智慧的兩大明珠,cv和nlp的榜單的絕大部分都被深度學習方法佔據。因此,這個方向現在已經被廣泛接受作為人工智慧這個概念的代名詞。

在本篇部落格中,為了節約篇幅將會把深度學習和機器學習基礎的部分省略,預設大家已經有了這部分知識,包括最基本的全連線神經網路、反向傳播、梯度下降、卷積層。

這部分推薦當時我入門的部落格龍心塵:從初等數學的角度初探神經網路 以及龍心塵:深度學習與計算機視覺系列這兩個系列,或者邱錫鵬老師的《神經網路與深度學習》進行學習。如果對自己理解能力有信心,直接往下看也成。

本系列將著重介紹深度學習在自然語言處理領域的應用。因此,傳統的統計學方法在這裡也不會被詳細介紹。有興趣的朋友可以讀《統計自然語言處理》這本書去了解,但不是必須掌握。

迴圈神經網路(recurrent neural network,rnn)是一類具有短期記憶能力的神經網路。

它一般是以層的結構作為整個網路的組成部分。這個結構之所以被稱為迴圈,是因為其會利用上一次輸出的資訊,也就是說,該層在進行計算時不僅利用 t

tt 時刻輸入x⃗t

\vec x_t

xt​,還會運用本層上一次的輸出h⃗t

−1\vec h_

ht−1

​,rnn模型如下圖所示。

在典型的rnn中,以上模型的數學形式為:

h t⃗

=f(u

ht−1

⃗+wx

t⃗+b

⃗)(0)\vec=f(u\vec}+w\vec+\vec b) \tag

ht​​=f

(uht

−1​​

+wxt

​​+b

)(0)

其中f

ff是非線性函式,可以為relu或sigmoid等函式。

這樣,模型除了當前的輸入,還可以利用之前的結果。rnn層可以看做是一層,但在時間維度上,這個模型可以展開為乙個 t

tt 層的網路,如下圖中所示。

rnn也可以通過梯度下降方法進行學習,引數的更新量也通過反向傳播得到,但由於引入了時序的概念,這一過程的方式有一定的變化。

我們定義整個序列總體的損失函式為每個時刻的損失函式累加,即:

l =∑

t=1t

ltl = \sum^_l_t

l=t=1∑

t​lt

​與傳統的梯度下降相同,引數u

uu的更新為

∂ l∂

u=∑t

=1t∂

lt∂u

(1)\frac=\sum^_\frac \tag

∂u∂l​=

t=1∑

t​∂u

∂lt​

​(1)

但由於在公式(0)中,得出輸出h

th_t

ht​的過程中存在遞迴項ht−

1h_ht−1

​,對ht−

1h_ht−1

​的處理的不同,對應rnn中兩種計算梯度的策略:

bptt方法的思想比較簡單,即在一次完整的向前傳播,即整個長度為t

tt的序列得出結果後,將rnn看做是層數為t

tt的網路進行向後傳播。

對每乙個時刻t∈[

1,t]

t\in [1,t]

t∈[1,t

],rnn都可以看做是乙個沿時間維度展開的t

tt層的網路,例如當t=3時,rnn可以展開為乙個3層網路,如圖所示。

這個網路中共享u這個權重,因此要求u的梯度,實際上是對這t層網路中,每一層網路中的u求導後累加,公式為:

∂ lt

∂u=∑

k=1t

∂lt∂

hk⃗∂

hk⃗∂

u(2)

\frac = \sum^_\frac}\frac}\tag

∂u∂lt​

​=k=

1∑t​

∂hk​

​∂lt

​​∂u

∂hk​

​​(2

)將(2)帶入(1)得:

∂ l∂

u=∑t

=1t∑

k=1t

∂lt∂

zk⃗∂

zk⃗∂

u(3)

\frac = \sum^_\sum^_\frac}\frac}\tag

∂u∂l​=

t=1∑

t​k=

1∑t​

∂zk​

​∂lt

​​∂u

∂zk​

​​(3

)這樣,在一次序列的完整的向前傳播之後,通過該公式反向傳播即可獲得更新梯度。

而rtrl演算法,則是基於對以下思想:

∂ ht

∂u=∂

th∂z

t(∂+

zt∂u

+u∂h

t−1∂

u)\frac=\frac(\frac}+u\frac})

∂u∂ht​

​=∂z

t​∂t

h​​(

∂u∂+

zt​​

+u∂u

∂ht−

1​​)

其中∂

+∂^+

∂+表示保持ht−

1h_ht−1

​不變求導。

這其中,∂ht

−1∂u

\frac}

∂u∂ht−

1​​一項實際上可以在每次向前計算後得出並儲存,交給第t次計算時使用。這樣就可以在每乙個時刻t實時地更新引數。

機器學習 深度學習 自然語言處理

文字挖掘 文字分類 機器翻譯 客服系統 複雜對話系統 手工特徵耗時耗力,還不易拓展 自動特徵學習快,方便擴充套件 深度學習提供了一種通用的學習框架,可以用來表示世界,視覺和語言學資訊 深度學習可以無監督學習,也可以監督學習 我 今天 下午 打籃球 p s p w1,w2,w3,w4,w5,wn p ...

基於深度學習的自然語言處理

cbow表示可以通過求單詞表示向量和或者通過將乙個單詞詞袋向量乘 以乙個每一行對應於乙個稠密單詞表示的矩陣 這樣的矩陣也叫作嵌入矩陣 embedd i ng matricy 來得到。網路中每行神經元的值可以看作是乙個向量 全連線層可以看作是從四維到六維 的線性變換。全連線層實現了乙個向量與矩陣的乘法...

人工智慧 深度學習與自然語言處理

如何自動處理自然語言輸入 並產生語言輸出,是人工智慧的重要研究方向。這門課主要講授近2 3年深度學習在自然語言處理方面的最新發展。課程從相關機器學習模型的數學原理和最優演算法講起,將會講到神經網路在nlp中的一系列應用,包括潛在語義分析 語音到文字的轉錄 語言翻譯以及問答,同時也會講到這些模型在cp...