深度學習筆記(2)

2021-10-02 19:56:13 字數 2506 閱讀 7413

2、分詞:對每個句子進行分詞,也就是將乙個句子劃分成若干個詞(token),轉換為乙個詞的序列。

3、建立字典:將每個詞對映到乙個唯一的索引(index)。為了方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典(vocabulary),將每個詞對映到乙個唯一的索引編號。

4、將詞轉為索引:使用字典,我們可以將原文本中的句子從單詞序列轉換為索引序列

前面介紹的分詞方式非常簡單,它至少有以下幾個缺點:

a、標點符號通常可以提供語義資訊,但是我們的方法直接將其丟棄了

b、類似「shouldn』t", 「doesn』t"這樣的詞會被錯誤地處理

c、類似"mr.」, "dr."這樣的詞會被錯誤地處理

5、用現有工具進行分詞:spacy和nltk。

一段自然語言文字可以看作是乙個離散時間序列,給定乙個長度為 t 的詞的序列w1,

w2,…

,wtw_,w_,…,w_

w1​,w2

​,…,

wt​ ,語言模型的目標就是評估該序列是否合理,即計算該序列的概率:p(w

1,w2

,…,w

t)p(w_,w_,…,w_)

p(w1​,

w2​,

…,wt

​)介紹基於統計的語言模型,主要是 n 元語法( n -gram)

1、n 元語法:

概念:通過馬爾可夫假設簡化模型,馬爾科夫假設是指乙個詞的出現只與前面 n 個詞相關,即 n 階馬爾可夫鏈(markov chain of order n )

當 n 分別為1、2和3時,我們將其分別稱作一元語法(unigram)、二元語法(bigram)和三元語法(trigram)。

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

缺點:引數空間過大;資料稀疏

2、時序資料的取樣

在訓練中我們需要每次隨機讀取小批量樣本和標籤。與之前章節的實驗資料不同的是,時序資料的乙個樣本通常包含連續的字元。

如果序列的長度為 t ,時間步數為 n ,那麼一共有 t−n 個合法的樣本,但是這些樣本有大量的重合。有更加高效的取樣方式,分別是隨機取樣和相鄰取樣。

隨機取樣:在隨機取樣中,每個樣本是原始序列上任意擷取的一段序列,相鄰的兩個隨機小批量在原始序列上的位置不一定相毗鄰。

相鄰取樣:在相鄰取樣中,相鄰的兩個隨機小批量在原始序列上的位置相毗鄰

下圖展示了如何基於迴圈神經網路實現語言模型。我們的目的是基於當前的輸入與過去的輸入序列,**序列的下乙個字元。迴圈神經網路引入乙個隱藏變數h

hh,用hth_

ht​表示h

hh在時間步t

tt的值。hth_

ht​的計算基於xtx_

xt​和ht−

1h_ht−1

​,可以認為hth_

ht​記錄了到當前字元為止的序列資訊,利用hth_

ht​對序列的下乙個字元進行**。

1、迴圈神經網路的構造

2、one-hot向量

將字元表示成向量。假設詞典大小是 n ,每次字元對應乙個從 0 到 n−1 的唯一的索引,則該字元的向量是乙個長度為 n 的向量,若字元的索引是 i ,則該向量的第 i 個位置為 1 ,其他位置為 0

3、裁剪梯度

迴圈神經網路中較容易出現梯度衰減或梯度**,這會導致網路幾乎無法訓練。裁剪梯度(clip gradient)是一種應對梯度**的方法。假設我們把所有模型引數的梯度拼接成乙個向量g

gg,並設裁剪的閾值是θ

\theta

θ。裁剪後的梯度

m in

(θ∣∣

g∣∣,

1)gmin(\frac,1)g

min(∣∣

g∣∣θ

​,1)

g的l2

l_l2

​範數不超過θ

\theta

θ。4、困惑度

通常使用困惑度(perplexity)來評價語言模型的好壞。困惑度是對交叉熵損失函式做指數運算後得到的值。特別地,

最佳情況下,模型總是把標籤類別的概率**為1,此時困惑度為1;

最壞情況下,模型總是把標籤類別的概率**為0,此時困惑度為正無窮;

基線情況下,模型總是**所有類別的概率都相同,此時困惑度為類別個數。

顯然,任何乙個有效模型的困惑度必須小於類別個數。

TNU深度學習筆記2

這節課主要講了怎麼訓練rnn,用的方法是bptt backpropagation through time rnn的目標是訓練引數wh wo,wi。bptt的做法是,先將rnn隨著時間展開,如下圖 展開之後像訓練普通神經網路一樣做backpropagation就行了,唯一的區別在於rnn輸入是乙個連...

《python深度學習》筆記2

這是 python深度學習 的 我的一些注釋筆記,可能有一些函式已經有庫實現了,我先放在著,以後遇到了我再過來補,如果有大神指教就更好了 import numpy as np import pandas as pd from keras.datasets import imdb from keras...

動手學深度學習學習筆記(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...