(pytorch-深度学习)语言模型-学习笔记
語言模型
自然語言處理中最常見的數據是文本數據。我們可以把一段自然語言文本看作一段離散的時間序列。
假設一段長度為TTT的文本中的詞依次為w1,w2,…,wTw_1, w_2, \ldots, w_Tw1?,w2?,…,wT?,那么在離散的時間序列中:
- wtw_twt?(1≤t≤T1 \leq t \leq T1≤t≤T)可看作在時間步(time step)ttt的輸出或標簽。
給定一個長度為TTT的詞的序列w1,w2,…,wTw_1, w_2, \ldots, w_Tw1?,w2?,…,wT?,語言模型將計算該序列的概率:
P(w1,w2,…,wT)P(w_1, w_2, \ldots, w_T)P(w1?,w2?,…,wT?)
語言模型可用于提升語音識別和機器翻譯的性能。
語言模型的計算方式
假設序列w1,w2,…,wTw_1, w_2, \ldots, w_Tw1?,w2?,…,wT?中的每個詞是依次生成的,即有:
P(w1,w2,…,wT)=∏t=1TP(wt∣w1,…,wt?1).P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^T P(w_t \mid w_1, \ldots, w_{t-1}).P(w1?,w2?,…,wT?)=t=1∏T?P(wt?∣w1?,…,wt?1?).
這表示所有的詞出現的概率只與其前面有哪些詞有關
例如,一段含有4個詞的文本序列的概率為:
P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3).P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3).P(w1?,w2?,w3?,w4?)=P(w1?)P(w2?∣w1?)P(w3?∣w1?,w2?)P(w4?∣w1?,w2?,w3?).
一個詞在給定前幾個詞的情況下的條件概率就是語言模型參數
詞的概率可以通過該詞在訓練數據集中的相對詞頻來計算,例如,P(w1)P(w_1)P(w1?)可以計算為w1w_1w1?在訓練數據集中的詞頻(詞出現的次數)與訓練數據集的總詞數之比。
根據條件概率定義,一個詞在給定前幾個詞的情況下的條件概率也可以通過訓練數據集中的相對詞頻計算。例如,P(w2∣w1)P(w_2 \mid w_1)P(w2?∣w1?)可以計算為w1,w2w_1, w_2w1?,w2?兩詞相鄰的頻率與w1w_1w1?詞頻的比值,因為該比值即P(w1,w2)P(w_1, w_2)P(w1?,w2?)與P(w1)P(w_1)P(w1?)之比。
nnn元語法
當序列長度增加時,計算和存儲多個詞共同出現的概率的復雜度會呈指數級增加。nnn元語法通過馬爾可夫假設(雖然并不一定成立)簡化了語言模型的計算。
這里的馬爾可夫假設是指一個詞的出現只與前面nnn個詞相關,即nnn階馬爾可夫鏈(Markov chain of order nnn)。
- 如果n=1n=1n=1,那么有P(w3∣w1,w2)=P(w3∣w2)P(w_3 \mid w_1, w_2) = P(w_3 \mid w_2)P(w3?∣w1?,w2?)=P(w3?∣w2?)。
如果基于n?1n-1n?1階馬爾可夫鏈,我們可以將語言模型改寫為:
P(w1,w2,…,wT)≈∏t=1TP(wt∣wt?(n?1),…,wt?1).P(w_1, w_2, \ldots, w_T) \approx \prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1}) .P(w1?,w2?,…,wT?)≈t=1∏T?P(wt?∣wt?(n?1)?,…,wt?1?).
很容易理解:
- 當nnn較小時,nnn元語法往往不準確。
- 而當nnn較大時,nnn元語法需要計算并存儲大量的詞頻和多詞相鄰頻率,計算復雜度會很高。
最重要的工作是找到一個方法在語言模型中更好地平衡以上這兩點,設置較為合適的nnn的取值
總結
以上是生活随笔為你收集整理的(pytorch-深度学习)语言模型-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: retinex 的水下图像增强算法_图像
- 下一篇: 轻量级人脸识别算法