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

?

基于深度學習的文本情感分析并行化算法

2019-07-11 07:09:16翟東海侯佳林劉月
西南交通大學學報 2019年3期
關(guān)鍵詞:數(shù)據(jù)量個數(shù)向量

翟東海 ,侯佳林 ,劉月

(西南交通大學信息科學與技術(shù)學院,四川 成都 611756)

文本情感分析是利用計算機技術(shù)對“人們關(guān)于產(chǎn)品、服務(wù)、事件等實體的評論”等文本進行分析處理以獲得其表達的主觀情感信息的過程.其主要包括:情感信息分類、情感信息抽取、情感分析技術(shù)應(yīng)用等[1-3].傳統(tǒng)的情感分析方法包括支持向量機、條件隨機場、信息熵等,且均采用詞袋模型.如文獻[4]采用SVM (support vector machine)對句子進行情感識別及分類.但這種淺層模型在處理海量數(shù)據(jù)時通常存在著數(shù)據(jù)稀疏性以及數(shù)據(jù)維度高等問題.Geoffrey Hinton 等[5-6]于2006年提出的深度學習模型為解決這些問題提供了新思路.當前,在文本情感分析任務(wù)上應(yīng)用較多的神經(jīng)網(wǎng)絡(luò)模型有卷積神經(jīng)網(wǎng)絡(luò)(CNN)、基于序列的模型(RNN)和樹型結(jié)構(gòu)模型(RAE)等.如文獻[7]采用CNN 進行情感極性分類;文獻[8]采用雙向序列模型(BLSTM)進行中文文本分類研究.因樹形結(jié)構(gòu)模型(如深度學習中的遞歸自編碼算法)在文本特征提取、情感分析中表現(xiàn)優(yōu)異,受到了學者們的廣泛關(guān)注,如文獻[9-11]都是遞歸自編碼算法的典型應(yīng)用范例.

神經(jīng)網(wǎng)絡(luò)模型雖然能夠極大程度地學習到文本內(nèi)容所隱含的語義信息,顯著提高分類的準確率,但深度神經(jīng)網(wǎng)絡(luò)在訓練時耗時、收斂慢的問題也逐漸受到了研究者們的關(guān)注.文獻[12]通過開發(fā)新的計算框架DistBelief 來實現(xiàn)大規(guī)模神經(jīng)網(wǎng)絡(luò)的訓練;文獻[13]中使用GPU 來訓練深度玻爾茲曼機,但GPU因受內(nèi)存所限,數(shù)據(jù)量大時效果也不太理想.

隨著并行計算的興起,在處理大規(guī)模數(shù)據(jù)、復雜計算時,研究人員往往向其尋求幫助.Berkeley AMP lab 的Spark[14]、谷歌的TensorFlow[15]、微軟的Dryad[16]以及谷歌的MapReduce[17]都是該領(lǐng)域內(nèi)的佼佼者.而MapReduce 框架以其較強的可擴展性、良好的可用性、較好的容錯能力,成為研究者關(guān)注的熱點[18].在諸多MapReduce 的實現(xiàn)中,Apache Hadoo 因良好的開源性深受業(yè)界青睞.因此,利用Apache Hadoop中的MapReduce 并行計算框架對神經(jīng)網(wǎng)絡(luò)進行優(yōu)化加速也吸引了諸多學者的研究興趣.神經(jīng)網(wǎng)絡(luò)的并行化加速是在分布式集群上,用多個集群節(jié)點同時對一個神經(jīng)網(wǎng)絡(luò)進行并行化處理,以提高此網(wǎng)絡(luò)的訓練速度.網(wǎng)絡(luò)的并行化方式分為兩種:節(jié)點并行化和數(shù)據(jù)并行化.但由于開發(fā)者對MapReduce 框架的底層實現(xiàn)并不清楚,因此開發(fā)者不能明確地將某項任務(wù)交由某個節(jié)點處理.且對海量數(shù)據(jù)集的節(jié)點并行化處理會使得I/O 開銷過大.因此,在MapReduce 框架中采用的是數(shù)據(jù)并行方式來加速網(wǎng)絡(luò)訓練.文獻[19-21]皆是基于Hadoop 中的MapReduce 所做的不同并行化處理的例子,證明了利用MapReduce可以有效加快網(wǎng)絡(luò)訓練速度,從而大大縮短神經(jīng)網(wǎng)絡(luò)的訓練時間.

本文針對Socher 等提出的Semi-Supervised 文本情感分析算法[9],使用開源Hadoop 中的MapReduce并行框架提出并行優(yōu)化策略,綜合利用集群節(jié)點的計算資源,使其在處理大規(guī)模文本時更加高效.

1 相關(guān)工作

1.1 MapReduce

Google 提出的MapReduce 以其優(yōu)越的整合計算節(jié)點的能力所著稱,此處對其做簡要介紹.MapReduce 采用“分而治之”的思想,通過主節(jié)點調(diào)度,將任務(wù)分配到其下的子節(jié)點中,并行處理后輸出最終結(jié)果.總的來說,MapReduce 是通過用戶編寫Map 函數(shù)和Reduce 函數(shù)來實現(xiàn)結(jié)果計算的,用戶只需關(guān)注這兩個函數(shù)的編寫,其他的問題,諸如容錯、負載均衡、調(diào)度都交給框架處理.在MapReduce中,一個任務(wù)首先被分成許多輸入鍵值對<kin,vin>,然后在Map 函數(shù)作用下生成中間結(jié)果<kmid,vmid>,這些中間結(jié)果存放于內(nèi)存之中.接著,這些中間結(jié)果將作為Reduce 函數(shù)的輸入,根據(jù)Reduce 中的用戶邏輯輸出最終結(jié)果<kout,vout>.其流程如圖1所示,圖中:M為數(shù)據(jù)存儲數(shù);m為中間結(jié)果鍵值對數(shù)目.

圖1 MapReduce 工作流程Fig.1 Workflow chart of MapReduce

1.2 Semi-Supervised RAE 文本情感分析

1.2.1 用詞向量表示詞語

不同于以往的詞袋模型[22],Semi-Supervised RAE用詞向量表示詞語并作為神經(jīng)網(wǎng)絡(luò)的輸入,如(0,1,0,0)表示“大學生”,(1,1,0,1)表示“教師”.若一個句子x含m個詞,則第k個詞為xk,1 ≤k≤m.將詞xk以標準正態(tài)分布的形式映射到n維實向量空間上,可表示為xk∈Rn.所有詞的詞向量存儲在一個詞嵌入矩陣L∈Rn×|V|中,V為詞匯表的大小.則xk的向量表示為

式中:bk為一個維度為詞表大小、值為0 或1 的二值向量,除了第k個索引之外的所有位置都是0.

1.2.2 有監(jiān)督遞歸自編碼

在獲取句子的低維向量表示時,傳統(tǒng)的自編碼方法需要將句子的樹形結(jié)構(gòu)作為先驗知識,這種編碼方法稱為有監(jiān)督遞歸自編碼.假設(shè)一個句子用向量表示為x= (x1,x2,···,xm),已知子節(jié)點c1、c2的輸入詞向量為x1、x2,則父節(jié)點pi的計算方法為

式中:i=1 ,2,···;C= [c1;c2]表示c1、c2的詞向量拼接矩陣;f(·)為 網(wǎng)絡(luò)的激活函數(shù);wfi和bfi分別為計算父節(jié)點時的權(quán)重和偏置參數(shù).

為了測試父節(jié)點對子節(jié)點的表示能力,在各父節(jié)點上添加其對應(yīng)子節(jié)點的重構(gòu)層(圖2),根據(jù)原始節(jié)點與重構(gòu)節(jié)點的差值來表示誤差.

圖2 有監(jiān)督遞歸自編碼結(jié)構(gòu)Fig.2 Structure of supervised RAE

重構(gòu)節(jié)點計算方法為

式中:j=1 ,2,···;C′=[c′1;c′2]為c1、c2的重構(gòu)節(jié)點c′1、c′2的詞向量拼接矩陣;brj為偏置項;wrj為權(quán)重參數(shù)矩陣.

詞向量采用歐式距離計算重構(gòu)誤差,即

1.2.3 無監(jiān)督遞歸自編碼

通常情況下,句子的樹形結(jié)構(gòu)往往未知,這種需要自主學習樹形結(jié)構(gòu)的自編碼方法稱為無監(jiān)督遞歸自編碼.樹形結(jié)構(gòu)預測過程的優(yōu)化目標函數(shù)為

式中:Rθ(x)為句子x的最優(yōu)樹型結(jié)構(gòu)模型,θ為參數(shù)集;集合A(x)為句子x所有可能的樹形結(jié)構(gòu)集合;y為其中的一種結(jié)構(gòu);s為計算過程中非終端節(jié)點的三元結(jié)構(gòu)(由2 個子節(jié)點cs1、cs2和1 個父節(jié)點Ps組成);Cs=[cs1,cs2];T(y)為這種三元結(jié)構(gòu)的檢索函數(shù).

不同詞語對句子整體含義的貢獻度不同,為了體現(xiàn)這種差異在計算重構(gòu)誤差時給不同的詞語賦予不同的權(quán)重,

式中:n1、n2為當前子節(jié)點c1、c2下面的詞數(shù).

為了防止遞歸自編碼算法在不斷迭代減小重構(gòu)誤差時計算出的父節(jié)點過小,為后續(xù)計算造成不必要的麻煩,此處對式(2)進行歸一化處理:

1.2.4 半監(jiān)督遞歸自編碼

得到句子的向量表示后,為計算整體語句的情感傾向,在網(wǎng)絡(luò)結(jié)構(gòu)上增加softmax(·)分類器:

式中:l為當前的情感種類;wl為參數(shù)矩陣.

若有K種情感,則d∈RK,且分類層交叉熵誤差計算方法為

式中:t為標簽的分布;tk為第k種情感的標簽分布;dk為條件概率,且

因此,半監(jiān)督遞歸自編碼在數(shù)據(jù)集上的優(yōu)化目標函數(shù)為

式中:N為訓練數(shù)據(jù)集大??;λ為L2正則項系數(shù);

并且,此時每個非終端節(jié)點的誤差變?yōu)橹貥?gòu)誤差與交叉熵誤差的加權(quán)和為

式中:α為權(quán)衡重構(gòu)誤差和交叉熵誤差的調(diào)節(jié)參數(shù).

采用L-BFGS (limited-memory Broyden-Fletcher-Goldfarb-Shanno)算法求解優(yōu)化目標函數(shù)式(11)的最優(yōu)解,其中所用的梯度為

式中:θ= {wfi,bfi,wrj,brj,wl,L}.

2 Semi-Supervised RAE 模型的并行化

在使用Semi-Supervised RAE 算法進行文本情感分析時,往往需要先根據(jù)訓練數(shù)據(jù)集,訓練出較好的模型,然后再將此模型應(yīng)用于情感分析.因此,針對Semi-Supervised RAE 模型的并行化也將分為兩步:首先是針對大量訓練數(shù)據(jù)集的并行化研究,當模型訓練好后,利用其并調(diào)用相應(yīng)的并行化算法,進行測試數(shù)據(jù)集的文本情感分析.

2.1 大量訓練數(shù)據(jù)集情況下

在Semi-Supervised RAE 的訓練階段,通過貪心算法構(gòu)建句子的最優(yōu)樹結(jié)構(gòu)以獲得該語句的向量編碼,接著通過優(yōu)化目標函數(shù)式(11)迭代得到最優(yōu)的參數(shù)集,為獲得最佳文本情感分析結(jié)果做好準備.

本文采用MapReduce 并行框架來加快訓練速度以便解決原模型在大數(shù)據(jù)量的情況下訓練時間過長的問題.首先對總的訓練數(shù)據(jù)集進行分塊,并將每一個數(shù)據(jù)塊分派給不同的Map 節(jié)點.利用這些數(shù)據(jù)塊,Map 節(jié)點依次計算相應(yīng)數(shù)據(jù)塊中每一個句子x的最優(yōu)樹結(jié)構(gòu),并計算相應(yīng)句子的誤差,直至數(shù)據(jù)塊中所有語句誤差計算完畢并暫存在緩沖區(qū).Reduce階段,節(jié)點累加緩沖區(qū)的塊誤差來計算得到這個數(shù)據(jù)集的誤差和并利用L-BFGS 算法求出最優(yōu)參數(shù)集.算法整體流程如圖3所示.該算法的主要計算量集中于Map 階段,為了克服并行化后神經(jīng)網(wǎng)絡(luò)出現(xiàn)弱化現(xiàn)象[19],集群只設(shè)置了一個Reduce 節(jié)點如圖3所示,圖中Nt為訓練數(shù)據(jù)集合塊數(shù).

2.2 大量測試數(shù)據(jù)集情況下

當模型訓練好后,本文針對測試數(shù)據(jù)集較大情況下測試結(jié)果輸出慢的特點,也設(shè)計了相應(yīng)的并行化算法.首先,將測試數(shù)據(jù)集分塊,用訓練階段得到的最優(yōu)參數(shù)集來初始化節(jié)點.在Map 階段,求出每條語句的向量表示,并輸出到緩沖區(qū).在Reduce 階段,softmax(·)分類器利用每條語句的向量表示輸出句子ID 及其情感標簽,算法流程如圖4所示,圖中,Nc為測試數(shù)據(jù)集合塊數(shù).

圖3 大量訓練集并行化算法Fig.3 Parallel Computing based on a big training dataset

圖4 大量測試集并行化算法Fig.4 Parallel Computing based on a big test datasets

3 實驗結(jié)果與分析

實驗中用到的節(jié)點皆為AMD 雙核2.5 GHz 處理器,內(nèi)存4 GB.節(jié)點操作系統(tǒng)為Ubuntu14.04,Hadoop版本為1.0.2,Java 版本為1.6.0_33.此次實驗中,詞向量選用100 維,算法最大迭代次數(shù)為1 000,權(quán)衡重構(gòu)誤差和交叉熵誤差的調(diào)節(jié)參數(shù)α設(shè)為0.2.

為了克服現(xiàn)有的情感分析語料庫數(shù)據(jù)量較小[23-24]的問題,本文采用爬蟲程序從美國亞馬遜購物網(wǎng)站上抓取了12 萬條商品評論數(shù)據(jù),構(gòu)建了兩個語料庫AmazonCorpus2 和AmazonCorpus10,用以測試并行化后的加速效果.此外,Movie Reviews(MR)[25]數(shù)據(jù)集也用于本文實例驗證中,以分析算法分類準確率時與原算法作對比(如表1所示).

表1 語料庫信息Tab.1 Corpus information

根據(jù)商品質(zhì)量的優(yōu)劣,美國亞馬遜購物網(wǎng)站將用戶對商品的評分設(shè)置為1~5 級.為了便于情感分析與模型訓練,在本文制作的語料庫中將1~5 級轉(zhuǎn)化為負面、中性、正面3 類評價,轉(zhuǎn)換規(guī)則如下:1~2 級評分為負面評價記為-1,3 級評分為中性評價記為0,4~5 級評分為正面評價記為1.

MR 數(shù)據(jù)集僅被分為兩類,即正面評價記為1,和負面評價記為 -1.詳情如表2、3 所示.

表2 AmazonCorpus 語料庫樣例Tab.2 Samples of the AmazonCorpus

表3 MR 語料庫樣例Tab.3 Samples of the MR corpus

3.1 算法分類精確度分析

此處選用MR 和AmazonCorpus2 兩個語料庫,將并行化算法與原始模型及兩個在情感分析任務(wù)上應(yīng)用較為廣泛的baseline 模型——CNN 和BLSTM做精確度對比試驗.試驗時,并行化訓練算法的Map節(jié)點設(shè)為3,Reduce 節(jié)點為1,試驗結(jié)果如表4所示.從表4中可看出,并行化算法和原始算法擁有幾乎相同的精確度(精確度 = 預測正確樣本量/樣本總量),均高于CNN 和BLSTM 模型,但并行化算法訓練時間遠小于其它算法的訓練時間.這是因為CNN雖然具有較強的捕獲局部特征的能力,但它忽略了文本的上下文語義及結(jié)構(gòu)特征,使得模型的訓練效果容易收斂到局部最小值而非全局最小值.而BLSTM通過一個正向LSTM 和一個反向LSTM 來學習文本的上下文語義特征的同時引入了較多的冗余特征信息,這些冗余信息會影響模型的精確度;且LSTM 內(nèi)部的門結(jié)構(gòu)和記憶單元使得模型的時間復雜度較大.

表4 算法精確度對比表Tab.4 Accuracy comparison of algorithms

3.2 算法執(zhí)行效率分析

對于并行化算法的執(zhí)行效率,此處分別針對并行化訓練算法和并行化測試算法進行分析.首先,用AmazonCorpus10 語料庫進行并行化訓練算法的仿真.集群節(jié)點個數(shù)分別為1、2 (1 個Mapper,1 個Reducer)、3 (2 個Mapper,1 個Reducer)、5 (4 個Mapper,1 個Reducer)、9 (8 個Mapper,1 個Reducer)、17(16 個Mapper,1 個Reducer),33 (32 個Mapper,1 個Reducer),節(jié)點個數(shù)為1 時,表示原始算法的訓練;其余集群中Reduce 節(jié)點個數(shù)均為1.實驗結(jié)果如圖5所示.

圖5 不同節(jié)點并行化訓練時間對比Fig.5 Parallel training time comparison among different nodes

從圖5可得,當集群中節(jié)點個數(shù)為2 時,并行化算法沒有原始算法效率高,其原因主要是節(jié)點初始化、任務(wù)調(diào)度及算法迭代時更新參數(shù)集均需要消耗一定量的時間.但隨著節(jié)點逐漸增多,耗時量幾乎線性下降,說明并行化算法效果良好.當節(jié)點增加到9 個以后,耗時量下降變緩,說明訓練時間受節(jié)點數(shù)量的制約開始減弱,此時算法瓶頸已不再為Map 節(jié)點個數(shù).

其次,利用上述AmazonCorpus10 語料庫的訓練得到的參數(shù)集來初始化“并行化測試算法”.測試集是在AmazonCorpus2 語料庫的基礎(chǔ)上,對其數(shù)據(jù)量作20、40、80、160 倍擴展的大數(shù)據(jù)集,即本次測試的數(shù)據(jù)量為40、80、160、320 萬條語句.針對這些數(shù)據(jù),分別選擇1、3、4、6、10、18,34 個節(jié)點對其做并行化,其中節(jié)點個數(shù)為1 表示原始算法,其余集群中Reduce 節(jié)點個數(shù)均為2,實驗結(jié)果如圖6所示.

圖6 不同數(shù)據(jù)量測試時間對比Fig.6 Test time comparison among different data volumes

從圖6可得出,當數(shù)據(jù)量增大時,并行化測試算法可大大縮短數(shù)據(jù)集的執(zhí)行時間,如在語句數(shù)據(jù)量為40 萬條時,34 個節(jié)點所需執(zhí)行時間約是原始算法的1/10.但數(shù)據(jù)量較大時,增加Map 節(jié)點個數(shù),算法加速效果逐漸變?nèi)?,這種情況在語句數(shù)據(jù)量為320 萬條時較為明顯.通過對集群節(jié)點計算量分析可知,此時影響算法效率的主要因素是Reduce 節(jié)點個數(shù).

為了進一步探索Reduce 節(jié)點個數(shù)對加速效果的影響,此次在Map 節(jié)點為8、16、32 個時,通過增加Reduce 節(jié)點個數(shù),分別測量語句數(shù)據(jù)量為320、640、1 280 萬 條(AmazonCorpus2 語 料 庫 作160、320、640 倍擴展)時的并行化算法加速效果.實驗結(jié)果如圖7所示.

從圖7、8、9 中可明顯得出,當Map 節(jié)點達到一定量后,增加Reduce 節(jié)點個數(shù),可顯著提高算法執(zhí)行效率.如圖7中Map 節(jié)點為32 時,相同語句數(shù)據(jù)量Reduce 節(jié)點個數(shù)為5 時的測試時間約是2 時的一半,可見當Map 節(jié)點足夠多時,適當增加Reduce節(jié)點個數(shù)可以提高算法的執(zhí)行效率.

圖8 640 萬條語句數(shù)據(jù)量加速效果對比Fig.8 Acceleration effect comparison on 6.4 million data

圖9 1 280 萬條語句數(shù)據(jù)量加速效果對比Fig.9 Acceleration effect comparison on 12.8 million data

4 結(jié)束語

本文基于MapReduce 并行化可擴展計算框架提出了半監(jiān)督遞歸自編碼文本情感分析模型的優(yōu)化算法:針對模型在大訓練數(shù)據(jù)集上收斂速度緩慢的問題,本文優(yōu)化算法首先采用“分而治之”的思想對數(shù)據(jù)集做分塊處理后輸入Map 節(jié)點計算塊誤差,接著將塊誤差輸出到緩沖區(qū)中匯總,而Reduce 節(jié)點先利用塊誤差計算出優(yōu)化目標函數(shù),然后調(diào)用LBFGS 算法更新模型參數(shù)集,迭代上述訓練過程直至目標函數(shù)收斂,從而得到模型最優(yōu)參數(shù)集;針對模型在大測試數(shù)據(jù)集上測試結(jié)果輸出緩慢的問題,本文優(yōu)化算法在利用最優(yōu)參數(shù)集初始化模型后,在Map 節(jié)點中計算出各句子的向量表示,并存儲于緩沖區(qū)中.然后Reduce 節(jié)點中的分類器利用緩沖區(qū)中的向量表示計算各語句的情感標簽.從實驗結(jié)果可得出,本文算法明顯提高了原始算法的運行效率.然而本文算法也有不足之處,如在訓練階段,并行化算法中Reduce 節(jié)點一次最多只能運行一個,這將成為大規(guī)模并行訓練時算法的瓶頸;在測試階段,當數(shù)據(jù)量大時Reduce 節(jié)點個數(shù)的選擇也直接影響了算法的效率,此時急需一種有效的調(diào)節(jié)機制,能夠均衡當前集群中的Reduce 節(jié)點個數(shù),以上這些都將成為今后進一步研究的重點.

猜你喜歡
數(shù)據(jù)量個數(shù)向量
向量的分解
怎樣數(shù)出小正方體的個數(shù)
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
聚焦“向量與三角”創(chuàng)新題
高刷新率不容易顯示器需求與接口標準帶寬
寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
電子制作(2019年13期)2020-01-14 03:15:18
等腰三角形個數(shù)探索
怎樣數(shù)出小木塊的個數(shù)
怎樣數(shù)出小正方體的個數(shù)
英超| 婺源县| 彝良县| 灌云县| 洮南市| 林口县| 民和| 威信县| 长海县| 思南县| 娱乐| 义乌市| 始兴县| 云林县| 宜章县| 大余县| 江门市| 黔东| 科技| 务川| 日土县| 双辽市| 浮梁县| 逊克县| 铅山县| 隆尧县| 台北市| 思南县| 卫辉市| 五大连池市| 界首市| 白水县| 神农架林区| 资中县| 林西县| 永顺县| 桦甸市| 延津县| 汝城县| 博兴县| 株洲市|