一、文字預處理
1.四個步驟:
①讀入文字
②分詞③建立字典,將每個詞對映到乙個唯一的索引(index)
④將文字從詞的序列轉換為索引的序列,方便輸入模型
讀入文字:
分詞:
建立字典:將字串轉換為數字,將每個詞對映到乙個唯一的索引編號。
兩個重要的分詞庫:nltk與spacy
二、語言模型
定義:一段自然語言文字可以看作是乙個離散時間序列,給定乙個長度為t的時間序列w1~wt,語言模型的目標就是評估該序列是否合理,即計算該序列的概率:
語言模型:
即,語言模型的引數就是詞的概率以及給定前幾個詞情況下的條件概率。
n元語法:
序列長度增加,計算和儲存多個詞共同出現的概率的複雜度會呈指數級增加。
注意:當n較小時,n元語法往往不準確;當n較大時,n元語法需要計算並儲存大量詞頻和多詞相鄰概率。
n元語法的缺陷:1.引數空間過大 2.資料稀疏
三、迴圈神經網路
1.模型結構:
注意:迴圈神經網路的構造:
其實,迴圈神經網路的本質是增加了時間序列對於下一次**的影響
2.梯度裁剪:
迴圈神經網路中較容易出現梯度衰減或梯度**,這會導致網路幾乎無法訓練。裁剪梯度(clip gradient)是一種應對梯度**的方法。假設我們把所有模型引數的梯度拼接成乙個向量g,並設裁剪的閾值是θ。裁剪後的梯度
其中l2的二範數不超過θ
3.困惑度:
我們通常使用困惑度(perplexity)來評價語言模型的好壞。困惑度是對交叉熵損失函式做指數運算後得到的值。特別地
①最佳情況下,模型總是把標籤類別的概率**為1,此時困惑度為1;
②最壞情況下,模型總是把標籤類別的概率**為0,此時困惑度為正無窮;
③基線情況下,模型總是**所有類別的概率都相同,此時困惑度為類別個數。
注意:任何乙個有效模型的困惑度必須小於類別個數
動手學深度學習筆記2
part1 模型選擇1 誤差與資料集 訓練誤差 training error 模型在訓練集上表現出的誤差。泛化誤差 generalization error 在任意乙個測試資料樣本上表現出的誤差的期望。舉個栗子,訓練誤差就是做往屆試卷 訓練 的錯誤率,泛化誤差則可以通過真正參加考試 測試 時的答題錯...
動手學深度學習學習筆記(2)
操作 算術操作 在pytorch中,同一種操作可能有很多種形式,下面用加法作為例子。加法形式一 y torch.rand 5,3 print x y 加法形式二 print torch.add x,y 還可指定輸出 result torch.empty 5,3 torch.add x,y,out r...
文字預處理 (4)文字糾錯
一般有兩種文字糾錯的型別 首先看一下non word的拼寫錯誤,這種錯誤表示此詞彙本身在字典中不存在,比如把 要求 誤寫為 藥求 把 correction 誤拼寫為 corrction 尋找這種錯誤很簡單,例如分完詞以後找到哪個詞在詞典中不存在,那麼這個詞就可能是錯誤拼出來的的詞。操作步驟 找到候選...