pytorch打卡學習(2)

Task02:文本預處理;語言模型;循環神經網絡基礎

文本預處理

讀入文本
分詞
建立字典
將詞轉爲索引
用現有工具進行分詞

語言模型

語言模型
假設序列 w1,w2,…,wT 中的每個詞是依次生成的,我們有

P(w1,w2,…,wT)=∏t=1TP(wt∣w1,…,wt−1)=P(w1)P(w2∣w1)⋯P(wT∣w1w2⋯wT−1)

例如,一段含有4個詞的文本序列的概率

P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3).

語言模型的參數就是詞的概率以及給定前幾個詞情況下的條件概率。設訓練數據集爲一個大型文本語料庫,如維基百科的所有條目,詞的概率可以通過該詞在訓練數據集中的相對詞頻來計算,例如, w1 的概率可以計算爲:

P^(w1)=n(w1)n

其中 n(w1) 爲語料庫中以 w1 作爲第一個詞的文本的數量, n 爲語料庫中文本的總數量。

類似的,給定 w1 情況下, w2 的條件概率可以計算爲:

P^(w2∣w1)=n(w1,w2)n(w1)

其中 n(w1,w2) 爲語料庫中以 w1 作爲第一個詞, w2 作爲第二個詞的文本的數量。

n元語法¶
序列長度增加,計算和存儲多個詞共同出現的概率的複雜度會呈指數級增加。 n 元語法通過馬爾可夫假設簡化模型,馬爾科夫假設是指一個詞的出現只與前面 n 個詞相關,即 n 階馬爾可夫鏈(Markov chain of order n ),如果 n=1 ,那麼有 P(w3∣w1,w2)=P(w3∣w2) 。基於 n−1 階馬爾可夫鏈,我們可以將語言模型改寫爲

P(w1,w2,…,wT)=∏t=1TP(wt∣wt−(n−1),…,wt−1).

以上也叫 n 元語法( n -grams),它是基於 n−1 階馬爾可夫鏈的概率語言模型。例如,當 n=2 時,含有4個詞的文本序列的概率就可以改寫爲:

P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)

當 n 分別爲1、2和3時,我們將其分別稱作一元語法(unigram)、二元語法(bigram)和三元語法(trigram)。例如,長度爲4的序列 w1,w2,w3,w4 在一元語法、二元語法和三元語法中的概率分別爲

P(w1,w2,w3,w4)P(w1,w2,w3,w4)P(w1,w2,w3,w4)=P(w1)P(w2)P(w3)P(w4),=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3),=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w2,w3).

當 n 較小時, n 元語法往往並不準確。例如,在一元語法中,由三個詞組成的句子“你走先”和“你先走”的概率是一樣的。然而,當 n 較大時, n 元語法需要計算並存儲大量的詞頻和多詞相鄰頻率

循環神經網絡基礎

循環神經網絡的構造
我們先看循環神經網絡的具體構造。假設 Xt∈Rn×d 是時間步 t 的小批量輸入, Ht∈Rn×h 是該時間步的隱藏變量,則:

Ht=ϕ(XtWxh+Ht−1Whh+bh).

其中, Wxh∈Rd×h , Whh∈Rh×h , bh∈R1×h , ϕ 函數是非線性激活函數。由於引入了 Ht−1Whh , Ht 能夠捕捉截至當前時間步的序列的歷史信息,就像是神經網絡當前時間步的狀態或記憶一樣。由於 Ht 的計算基於 Ht−1 ,上式的計算是循環的,使用循環計算的網絡即循環神經網絡(recurrent neural network)。

在時間步 t ,輸出層的輸出爲:

Ot=HtWhq+bq.

其中 Whq∈Rh×q , bq∈R1×q 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章