国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Text CNN模型的文本分類算法應(yīng)用

2022-06-28 08:51萬林浩
數(shù)碼影像時代 2022年1期
關(guān)鍵詞:池化矢量卷積

萬林浩

數(shù)據(jù)準(zhǔn)備

此處使用亞馬遜評論數(shù)據(jù)集,數(shù)據(jù)集包含3.6M的文本評論內(nèi)容及其標(biāo)簽,數(shù)據(jù)格式分為Review和Label(取值為Label1與Label2)兩部分,即為二分類文本。其Github來源為:https://gist.github.com/kunalj101/ad1d9c58d338e20d09ff26bcc06c4235。

模型理論

模型選取

此處選取Text CNN模型作為深度學(xué)習(xí)模型,傳統(tǒng)的CNN算法通常應(yīng)用于CV領(lǐng)域,尤其是計算機(jī)視覺方向的工作。Yoon Kim在2014年 “Convolutional Neural Networks for Sentence Classification” 論文中提出Text CNN(利用卷積神經(jīng)網(wǎng)絡(luò)對文本進(jìn)行分類的算法),進(jìn)而人們在文本分類時也運(yùn)用了卷積神經(jīng)網(wǎng)絡(luò)這一算法,為了能夠更好的獲得局部相關(guān)性,CNN利用多個不同的kernel提取數(shù)據(jù)集文本中的關(guān)鍵信息。

與圖像當(dāng)中CNN的網(wǎng)絡(luò)相比,Text CNN 最大的不同便是在輸入數(shù)據(jù)的不同,圖像是二維數(shù)據(jù),圖像的卷積核是從左到右,從上到下進(jìn)行滑動來進(jìn)行特征抽取。

而自然語言是一維數(shù)據(jù), 因此對詞向量做從左到右滑動來進(jìn)行卷積沒有意義。(如: “今天”對應(yīng)的向量[0, 0, 0, 0, 1], 按窗口大小為 1* 2 從左到右滑動得到[0,0], [0,0], [0,0], [0, 1]這四個向量, 對應(yīng)的都是“今天”這個詞匯,這種滑動沒有幫助。)

模型原理

如圖1所示,Text CNN的核心思想是抓取文本的局部特征:首先通過不同尺寸的卷積核來提取文本的N-gram信息,其次由最大池化層來篩選每個卷積操作所提取的最關(guān)鍵信息,經(jīng)過拼接后在全連接層中進(jìn)行特征組合,最后通過多分類損失函數(shù)來訓(xùn)練模型。

圖2即為CNN在文本分類中的應(yīng)用流程,假設(shè)對當(dāng)前數(shù)據(jù)集要實(shí)施文本分析,句子中所有單詞都是由N維詞矢量所構(gòu)成的,也就是說輸入矩陣大小都是m*n,這里的m是指句子寬度。如果CNN要對輸入樣本實(shí)施卷積運(yùn)算,針對文字信息,filter將不再側(cè)向滑移,而僅僅向下移動,類似于n-gram在提取數(shù)字和單詞之間的局部關(guān)聯(lián)時。圖中共有三個策略,依次是二,3,4,每種步長上都有兩種filter。在各種詞窗上使用各種filter,最后獲得了六個卷積后的詞向量。接著,對每一矢量執(zhí)行最大化池化操作并拼接所有池化值,以獲取單個句子的特征后,將此矢量傳送到分類器上執(zhí)行分組,從而實(shí)現(xiàn)了整個過程。

Text CNN模型的組成部分如下:

(1)輸入:自然語言輸入為一句話,例如:wait for the video and don’t rent it。

(2)數(shù)據(jù)預(yù)處理:首先將一句話拆分為多個詞,例如將該句話分為9個詞語,分別為:wait, for, the, video, and, don’t, rent, it,接著將詞語轉(zhuǎn)換為數(shù)字,代表該詞在詞典中的詞索引。

(3)嵌入層: 通過word2vec或者GLOV 等embedding方法,把各個詞成對反映到某個低維空間中,實(shí)質(zhì)上就是特征提取器,可以在特定層次中編碼語義層次特性。例如用長度為6的一維向量來表示每個詞語(即詞向量的維度為6),wait可以表示為[1,0,0,0,0,0,0],以此類推,這句話就可以用9*6的二維向量表示。

(4)卷積層:和一般圖像處理的卷積計算核有所不同的是,所有通過詞矢量表示的文字都是一維數(shù)據(jù),所以在Text中CNN詞卷積用的就是一維卷積。Text CNN卷積核的長寬與詞矢量的角度相等,高度可以自行設(shè)置。以將卷積核的大小設(shè)置為[2,3]為例,由于設(shè)置了2個卷積核,所以將會得到兩個向量,得到的向量大小分別為T1:8*1和T2:7*1,向量大小計算過程分別為(9-2-1)=8,(9-3-1)=7,即(詞的長度-卷積核大小-1)。

(5)池化層:通過不同高度的卷積核卷積之后,輸出的向量維度不同,采用1-Max-pooling將每個特征向量池化成一個值,即抽取每個特征向量的最大值表示該特征。池化完成后還需要將每個值拼接起來,得到池化層最終的特征向量,因此該句話的池化結(jié)果就為2*1。

(6)平坦層和全連接層:與CNN模型一樣,先對輸出池化層輸出進(jìn)行平坦化,再輸入全連接層。為了防止過擬合,在輸出層之前加上dropout防止過擬合,輸出結(jié)果就為預(yù)測的文本種類。

模型建立

Word Embedding 分詞構(gòu)建詞向量

模型的第一層為Embedding層,預(yù)訓(xùn)練的詞嵌入可以利用其他語料庫得到更多的先驗知識,經(jīng)過模型訓(xùn)練后能夠抓住與當(dāng)前任務(wù)最相關(guān)的文本特征。

Text CNN 首先將 “今天天氣很好,出來玩”分詞成“今天/天氣/很好/, /出來/玩”, 通過Word2vec的embedding 方式將每個詞成映射成一個5維(維數(shù)可以自己指定)詞向量, 如 “今天” -> [0,0,0,0,1], “天氣” ->[0,0,0,1,0], “很好” ->[0,0,1,0,0]等等。見圖3。

這樣做的好處主要是將自然語言數(shù)值化,方便后續(xù)的處理。從這里也可以看出不同的映射方式對最后的結(jié)果是會產(chǎn)生巨大的影響, 在構(gòu)建完詞向量后,將所有的詞向量拼接起來構(gòu)成一個6*5的二維矩陣,作為最初的輸入。

Convolution 卷積

第二層為卷積層,在CV中常見的卷積尺寸通常是正方形,而本文的卷積形式與之不同,本文的卷積寬度等于文本Embedding后的維度,保持不變,因為每個詞或字相當(dāng)于一個最小的單元,不可進(jìn)一步分割。而卷積核的高度可以自定義,在向下滑動的過程中,通過定義不同的窗口來提取不同的特征向量。見圖4。

feature_map 也就是經(jīng)過卷積后的數(shù)據(jù),利用卷積方法可以把輸入的6*5矩陣映射為一個3*1的矩陣,由于這種映射過程與特征提取的結(jié)果很類似,因此人們便把最后的輸出稱作feature map。一般來說在卷積之后會跟一個激活函數(shù),在這里為了簡化說明需要,我們將激活函數(shù)設(shè)置為f(x) = x

Channel 卷積核

在CNN 中常常會提到一個詞channel, 圖5 中Channel1與Channel2便構(gòu)成了兩個Channel,統(tǒng)稱為卷積核, 從圖中可觀察到,Channel 不必嚴(yán)格一致, 每個4*5 矩陣與輸入矩陣做一次卷積操作得到一個feature map。

Max-pooling 池化層

最大特性池化層,即是在從各個滑動窗口所生成的特性矢量中過濾出一些較大的特性,而后再把它們特性拼接在一起形成矢量表達(dá)式。我們也能夠使用K-Max池化(選出各個特性矢量中較大的K個特點(diǎn)),或者說平均值池化(將特性矢量中的每一維取平均數(shù))等,所達(dá)成的成效一般都是把不同長度的語句,經(jīng)過池化就能得出某個定長的特性矢量代表。在短文本劃分場景中,每一條文本里都會有若干對類型來說無用的信息,而最大平均值池化方法就能夠突出最主要的關(guān)鍵詞,以幫助模型更容易找出相應(yīng)的文章類目。見圖6。

Softmax k分類

Pooling的結(jié)果拼接出來,再輸入到Softmax中,可以得出不同類型的概率。在練習(xí)流程中,此時會通過預(yù)計label與實(shí)際label來估算損失函數(shù), 計算出softmax 函數(shù),max-pooling 函數(shù), 激活函數(shù)以及卷積核函數(shù)當(dāng)中參數(shù)需要更新的梯度, 并依次更新函數(shù)中的參數(shù),完成一輪訓(xùn)練。若是預(yù)測的過程,Text CNN的流程在此結(jié)束。見圖7。

模型驗證及評估

模型驗證

(1)數(shù)據(jù)預(yù)處理

首先讀取數(shù)據(jù),通過觀察數(shù)據(jù)集label標(biāo)簽(其取值為label1與label2),將其替換為0-1分類變量,其結(jié)果如圖8所示。

(2)訓(xùn)練集、測試集劃分

首先通過分詞函數(shù)將句子劃分為向量,之后通過Tokenizer函數(shù)將單個詞轉(zhuǎn)化為正整數(shù)。此時單個句子便變?yōu)榱擞蓴?shù)字組成的向量。最后,再將進(jìn)行預(yù)處理后的數(shù)據(jù)結(jié)果集中進(jìn)行劃分為練習(xí)集與試驗集,其比例約為7:3。其訓(xùn)練集數(shù)據(jù)格式如圖9所示。

(3)模型訓(xùn)練及驗證

將數(shù)據(jù)預(yù)處理后,即開始構(gòu)建Text CNN模型的各個組成部分,將label進(jìn)行熱編碼處理以便于計算,為獲得較好的訓(xùn)練結(jié)果,將epochs參數(shù)設(shè)定為15,進(jìn)行多次訓(xùn)練。其訓(xùn)練輸出結(jié)果如圖10所示。

此處選取Loss損失函數(shù)及預(yù)測準(zhǔn)確率Accuracy對模型進(jìn)行評估,通過建模、訓(xùn)練以及最后在測試集上進(jìn)行驗證,得到如表1的Loss以及Accuracy。

模型評估

模型優(yōu)點(diǎn)

(1)Text CNN模型的網(wǎng)絡(luò)結(jié)構(gòu)簡單,在CNN模型網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上進(jìn)行改進(jìn)后,依舊具有較為簡單的結(jié)構(gòu),相比于CNN并沒有明顯的復(fù)雜度提升。

(2)由于網(wǎng)絡(luò)結(jié)構(gòu)簡化使得參數(shù)種類較小,運(yùn)算量小,訓(xùn)練速率較快,并且有較強(qiáng)的可推廣性。

模型缺點(diǎn)

由于模式可理解型不強(qiáng),在調(diào)優(yōu)建模過程的同時,很難按照訓(xùn)練的效果去有效的調(diào)節(jié)其中的特性,同時由于在TextCNN中缺乏對特性重要程度的定義,從而很難去評價各種特性的意義并加以比較。

總結(jié)

本文通過建立Text CNN模型,對亞馬遜評論數(shù)據(jù)集進(jìn)行了分類實(shí)戰(zhàn)。在實(shí)際操作中,首先通過數(shù)據(jù)預(yù)處理對數(shù)據(jù)集進(jìn)行了清洗以及分詞劃分,之后通過Keras構(gòu)建了Text CNN模型的各個部分,如Embedding、Convolution、Max Polling、以及Softmax。最后進(jìn)行調(diào)參以及模型驗證評估,得到了評估準(zhǔn)確率較高的模型以及參數(shù)設(shè)定組合,通過Loss與Accuracy指標(biāo)的評估,本文建立的Text CNN模型具有較好的性能。

猜你喜歡
池化矢量卷積
面向神經(jīng)網(wǎng)絡(luò)池化層的靈活高效硬件設(shè)計
基于Sobel算子的池化算法設(shè)計
基于3D-Winograd的快速卷積算法設(shè)計及FPGA實(shí)現(xiàn)
從濾波器理解卷積
基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識別研究
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
基于矢量最優(yōu)估計的穩(wěn)健測向方法
一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識別方法
色料減色混合色矢量計算
明光市| 新疆| 瓦房店市| 昌宁县| 保山市| 松阳县| 湘西| 九龙坡区| 昌黎县| 谷城县| 洛浦县| 卢湾区| 丹寨县| 新乐市| 五莲县| 惠来县| 弥勒县| 高阳县| 溧阳市| 麻城市| 庐江县| 松原市| 抚松县| 府谷县| 漳平市| 耿马| 怀化市| 绍兴县| 白玉县| 万荣县| 宣恩县| 闽清县| 宝鸡市| 西华县| 横山县| 保德县| 敦煌市| 宝应县| 湖州市| 淮北市| 太原市|