Datawhale-零基础入门NLP-新闻文本分类Task05
該任務(wù)是用Word2Vec進行預(yù)處理,然后用TextCNN和TextRNN進行分類。TextCNN是利用卷積神經(jīng)網(wǎng)絡(luò)進行文本文類,TextCNN是用循環(huán)神經(jīng)網(wǎng)絡(luò)進行文本分類。
1.Word2Vec
文本是一類非結(jié)構(gòu)化數(shù)據(jù),文本表示模型有詞袋模型(Bag of Words)、主題模型(Topic Model)、詞嵌入模型(Word Embedding)。
(1)文本表示
一個文本表現(xiàn)為一個由文字和標(biāo)點符號組成的字符串,由字或字符組成詞,由詞組成詞語,進而形成句、段、節(jié)、章、篇的結(jié)構(gòu)。因此,需要找到一種理想的形式化表示方法,既能反映文檔的內(nèi)容,又要有對不同文檔的區(qū)分能力。
常用的模型是向量空間模型(vector space model,VSM),基本概念:
- 文檔(document):文章中具有一定規(guī)模的片段。
- 項/特征項(term/feature term):特征項是VSM中最小的不可分的語言單元,一個文檔內(nèi)容被看成是它含有的特征項所組成的集合。表示為。
- 項的權(quán)重(term weight):每個特征項都有一個權(quán)重,即。
定義:給定一個文檔,D符合以下條件:
?
(1)one-hot編碼(杜熱編碼)
?
?
?
詞嵌入是一類將詞向量化的模型的統(tǒng)稱,核心思想是將每個詞都映射成低維空間上的一個稠密向量,Word2Vec是常見的詞嵌入模型之一。Word2Vec有兩個網(wǎng)絡(luò)結(jié)構(gòu)CBOW和Skip-gram。
CBOW的目標(biāo)是根據(jù)上下文出現(xiàn)的詞語來預(yù)測當(dāng)前詞的生成概率,Skip-gram是根據(jù)當(dāng)前詞來預(yù)測上下文中各詞的生成概率。
a.CBOW
CBOW(Continuous Bag of Words),稱為連續(xù)詞袋模型,假如有這樣一個句子“The man fell in love with the woman”,我們?nèi)绻豢吹健癟he man fell in love with the __”,CBOW則是要聯(lián)系上下文預(yù)測這個‘woman’單詞。
2.TextCNN
對于文本來說,局部特征就是由若干單詞組成的滑動窗口,類似于N-gram。卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢在于能夠自動對N-gram特征進行組合和篩選,獲得不同抽象層次的語義信息。由于在每次卷積中采用了共享權(quán)重的機制,因此它的訓(xùn)練速度較快。
TextCNN是由輸入層,卷積層,池化層,輸出層組成,結(jié)構(gòu)如下:
(1)輸入層
輸入層是一個N*K的矩陣,其中N為文章所對應(yīng)的單詞總數(shù),K是每個詞對應(yīng)的表示向量的維度。每個詞的K維向量可以是預(yù)先在其他語料庫訓(xùn)練好的,也可以作為未知的參數(shù)由網(wǎng)絡(luò)訓(xùn)練得到。因此,該輸入層采用了兩個通道的形式,即有兩個N*K的輸入矩陣,其中一個用預(yù)先訓(xùn)練好的詞嵌入表達,并且在訓(xùn)練過程中不再變化;另一個 會隨網(wǎng)絡(luò)的訓(xùn)練過程而變化。
(2)卷積層
在輸入的兩個N*K的矩陣上,我們定義不同的滑動窗口進行卷積操作。每一次卷積操作相當(dāng)于一個特診向量的提取,通過定義不同的滑動窗口,就可以提取出不同的特征向量。
(3)池化層
池化層可以采用1-Max池化,即為從每個滑動窗口產(chǎn)生的特征向量中篩選出一個最大的特征,然后將這些特征拼接起來構(gòu)成向量表示。也可以選用K-Max池化(選出每個向量中最大的K個特征),或者平均池化等,達到的效果是將不同長度的句子通過池化得到一個定長的向量表示。
(4)輸出層
得到文本的向量表示之后,后面的網(wǎng)絡(luò)結(jié)構(gòu)就和具體任務(wù)相關(guān)了。文本分類是接入全連接層,并使用SoftMax激活函數(shù)輸出每個類別的概率。
3.TextRNN
傳統(tǒng)文本處理任務(wù)中丟失了輸入的文本序列中每個單詞的順序,兩個單詞之間的長距離依賴關(guān)系還是很難學(xué)習(xí)到。循環(huán)神經(jīng)網(wǎng)絡(luò)卻能很好地處理文本數(shù)據(jù)變長并且有序的輸入序列。常用的循環(huán)神經(jīng)網(wǎng)絡(luò)有RNN,雙向RNN,LSTM,GRU等。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是將網(wǎng)絡(luò)隱藏層的輸出重新連接到隱藏層形成閉環(huán)。它模擬了人閱讀一篇文章的順序,將前面有用的信息編碼到狀態(tài)變量中,從而有一定的記憶能力。典型結(jié)構(gòu)為:
循環(huán)神經(jīng)網(wǎng)絡(luò)是采用BPTT(Back Propagation Through Time,基于時間的反向傳播)求解的,然后使用BPTT學(xué)習(xí)的循環(huán)神經(jīng)網(wǎng)絡(luò)不能成功捕捉到長距離的依賴關(guān)系,由于sigmoid函數(shù)具有飽和性,在進行大量訓(xùn)練之后,就會出現(xiàn)梯度消失問題。如果計算矩陣的最大特征值大于1,隨著訓(xùn)練,每層的梯度大小會呈指數(shù)增長,導(dǎo)致梯度爆炸;反之,如特征值小于1,則出現(xiàn)梯度消失。因此,LSTM,GRU是通過加入門控機制來彌補梯度上的損失。
長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)是循環(huán)神經(jīng)網(wǎng)絡(luò)的擴展,由于循環(huán)神經(jīng)網(wǎng)絡(luò)有梯度消失和梯度爆炸的問題,學(xué)習(xí)能力有限,LSTM可以對有價值的信息進行長期記憶,從而減少循環(huán)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)難度。LSTM是一組記憶塊(memory blocks)的循環(huán)子網(wǎng)構(gòu)成,每一個記憶塊包含了一個或多個自連接的記憶細胞及三個乘法控制單元-輸入門、輸出門、遺忘門,提供著讀、寫、重置的功能。
輸入門控制當(dāng)前計算的新狀態(tài)以多大程度更新到記憶單元;當(dāng)信息經(jīng)過輸入單元激活后會和輸入門進行相乘,以確定是否寫入當(dāng)前信息;
輸出門控制著當(dāng)前的輸出有多大程度上取決于當(dāng)前的記憶單元;其與當(dāng)前細胞記憶信息進行相乘,以確定是否輸出信息;
遺忘門控制著前一步記憶單元中的信息有多大程度被遺忘掉;其與細胞之前的記憶信息進行乘法運算,以確定是否保留之前的信息;
記憶塊的結(jié)構(gòu):
其中,σ是sigmoid函數(shù),tanh是tanh函數(shù),是相乘,是相加。
第1個部分,通過一個sigmoid函數(shù),決定丟棄的信息,第2部分,在生成候選記憶時,使用了雙曲線正切函數(shù)Tanh作為激活函數(shù),確定更新信息,第3部分,更新了細胞狀態(tài),第4 部分是將結(jié)果進行輸出并傳遞給下一個記憶塊。
參考:
《百面機器學(xué)習(xí)》——諸葛越
《深度學(xué)習(xí)實戰(zhàn)》——楊云
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Datawhale-零基础入门NLP-新闻文本分类Task05的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFTFNT模板
- 下一篇: 使用BMfont制作含有中文图片的.fn