什麼是 LM 任務?git
能夠看到上面的方法在預估條件機率時,使用的是統計值,即數據量足夠多時,統計值接近去真實機率值。github
根據馬爾科夫假設,咱們能夠將條件機率進行簡化,單詞的條件機率只和前面的k個詞有關:web
k階的語言模型受限於模型複雜度,當樣本特別大時,爲了解決計算成本,咱們只能減少k,而爲了打破馬爾科夫假設,如今有了注意力模型,可以對更多的前序單詞進行建模。網絡
n-gram 語言模型的兩個主要問題app
傳統計算條件機率的方法是統計方法函數
統計出來的值等於真實機率的條件是樣本足夠多,那可能的問題有:可能在訓練集中從沒出現,那這個值就是0,那幾率就是0。那避免zero-probability 0機率的方法就是使用平滑技術(smoothing techniques),最多見的平滑方法是:
post
其中是詞典大小,
..net
另一種平滑方法是:back-off3d
目前最好的平滑方法是:Kneser-Ney。cdn
咱們須要記錄全部全部n-gram的數,隨着n增長,模型參數急劇變大。
模型圖:
其中
咱們能夠看到模型中最主要的參數是最後一層的,隨着vocabulary size的增長,
的大小愈來愈大。
t時刻的loss
總loss爲時刻t累加:
語言模型的困惑度定義:
rnn模型的一個目標是:可以將hidden state傳播下去,可是在實際中會出現梯度消失/爆炸問題,下面咱們以一個例子來講明這個問題: 例子:
對於梯度爆炸問題,咱們能夠經過 Gradient Clipping來解決,對於梯度消失問題呢?咱們要保證反向傳播的時候,梯度不能太小,那咱們就指望對於每一個 都儘量接近於1,那相乘的時候,就不會變小了。
建議先讀關於LSTM的文章:Understanding LSTM Networks
##參考