紀(jì)睿哲,程艷云
(南京郵電大學(xué) 自動(dòng)化學(xué)院 人工智能學(xué)院,江蘇 南京 210042)
近年來隨著技術(shù)的發(fā)展,出現(xiàn)了一種通過上傳圖片從而自動(dòng)批閱小學(xué)生口算題的應(yīng)用程序。數(shù)學(xué)表達(dá)式識(shí)別(RME),作為與該自動(dòng)批閱系統(tǒng)密切相關(guān)的領(lǐng)域已被研究數(shù)十年[1,2]。
隨著編碼器-解碼器模型的提出,并派生出一種利用CNN對(duì)圖片進(jìn)行特征提取并進(jìn)行整體識(shí)別的方法,被廣泛引用于手寫識(shí)別領(lǐng)域[3,4],并在RME領(lǐng)域中發(fā)揮重要作用。RME可以分為印刷體數(shù)學(xué)表達(dá)式(PME)識(shí)別和手寫數(shù)學(xué)表達(dá)式(HME)識(shí)別。相對(duì)而言,HME更具難度與挑戰(zhàn)性。編碼器-解碼器模型在此依然發(fā)揮巨大作用,有學(xué)者嘗試將CRNN[5]引入HME領(lǐng)域并取得了較好的效果。隨著Attention[6]模型的提出,Zhang等[7]將其引入編碼器-解碼器模型并提出WAP模型,在HME領(lǐng)域獲得極佳的效果。此后,為解決普通CNN對(duì)特征提取不足的問題,通過引入Densenet[8]以增強(qiáng)WAP模型的性能[9]。同時(shí),在HME領(lǐng)域中也存在其它方案[10]。
由于小學(xué)生口算題同時(shí)存在手寫體和印刷體字符,而過往的研究大都集中在單一字符,且未考慮到手寫字符存在大量不規(guī)范的情況。本文利用編碼器-解碼器模型對(duì)口算題進(jìn)行整體識(shí)別,并提出了一種多分支改進(jìn)的Densenet進(jìn)行特征提取以適應(yīng)多變的字符。本文亦對(duì)聯(lián)合CTC-Attention模型進(jìn)行多分支改進(jìn)。同時(shí),文中還提出一種生成口算題樣本的方法以解決真實(shí)樣本存在的數(shù)量不足、分布不均的問題。
本文提出的改進(jìn)后的編碼器-解碼器模型以Densenet網(wǎng)絡(luò)和聯(lián)合CTC-Attention模型為基礎(chǔ),通過LSTM編碼器-解碼器框架組成。主要流程是首先通過Densenet網(wǎng)絡(luò)對(duì)輸入的圖像特征進(jìn)行提取,將提取出的特征交由基于聯(lián)合CTC-Attention模型的LSTM編碼器-解碼器模型進(jìn)行編解碼,以得到對(duì)應(yīng)的LaTeX格式輸出。
由于本文擬對(duì)同時(shí)擁有印刷體字符和手寫體字符的口算題進(jìn)行整體識(shí)別,且小學(xué)生的手寫體字符之間差異較大且可能存在不規(guī)范的情況。在這種情況下,采用傳統(tǒng)的單分支CNN網(wǎng)絡(luò)對(duì)其進(jìn)行特征提取所得到的特征可能不足以適應(yīng)這種復(fù)雜情況。本文受到FPN(feature pyramid networks)[11]網(wǎng)絡(luò)的啟發(fā),擬對(duì)Densenet網(wǎng)絡(luò)做多分支結(jié)構(gòu)的改進(jìn)以盡可能多提取出字符的多種特征。如圖1所示。
圖1 Densenet網(wǎng)絡(luò)的結(jié)構(gòu)
與此同時(shí),由于多分支結(jié)構(gòu)的改進(jìn),Densenet將會(huì)擁有3個(gè)不同尺寸的特征。為充分對(duì)這些特征進(jìn)行解析,本文引入了聯(lián)合CTC-Attention模型,其在被Zuo等[12]引入自然場(chǎng)景下的文本識(shí)別,取得了極佳的效果。文本亦將針對(duì)該模型中的CTC部分與Attention部分的特性做不同的調(diào)整,使其可以充分利用多分支網(wǎng)絡(luò)的輸出,如圖2所示。對(duì)于CTC部分?jǐn)M采用FPN網(wǎng)絡(luò)所提出的方法做上采樣并進(jìn)行橫向連接的方法,而對(duì)于Attention部分,本文則針對(duì)多尺度特征做相關(guān)改進(jìn)。
圖2 基于聯(lián)合CTC-Attention模型的LSTM網(wǎng)絡(luò)結(jié)構(gòu)
本方法擬選用具有3個(gè)Dense Block的Densenet網(wǎng)絡(luò)作為基本架構(gòu)。在該網(wǎng)絡(luò)結(jié)構(gòu)中,所有網(wǎng)絡(luò)層都是直接相互連接的,每一層的輸入均由在此之前所有層的特征圖中接收。此外,每個(gè)輸出將被傳遞到每個(gè)后續(xù)層,以最大程度的確保每層之間的信息傳輸網(wǎng)絡(luò)。例如,lth層的輸出xl計(jì)算如下
xl=Hl([x0;x1;…;xl-1])
(1)
由于考慮到需要同時(shí)對(duì)小學(xué)生口算題中的手寫體字符和印刷體字符進(jìn)行整體識(shí)別,且小學(xué)生的手寫體字符可能會(huì)存在差異較大且不規(guī)范的情況。相對(duì)于普通Densenet網(wǎng)絡(luò)僅擁有的一個(gè)高維輸出而言,低維特征與之相比則具有更多的位置信息,受到FPN網(wǎng)絡(luò)的啟發(fā),本文擬將高維特征與低維特征結(jié)合可以更有助于解析輸入的圖像。此改進(jìn)主要是在傳統(tǒng)Densenet結(jié)構(gòu)的每個(gè)平均池化層之前擴(kuò)展一個(gè)分支以輸出當(dāng)前特征,從而使其輸出可以盡可能涵蓋高維特征和低維特征。通過上述的多分支結(jié)構(gòu),編碼器將輸出3種不同的分辨率特征,如圖1所示。
1.2.1 CTC模型的多分支改進(jìn)
CTC模型的特點(diǎn)在于假定所有標(biāo)簽彼此之間獨(dú)立,并采用貝葉斯定理計(jì)算預(yù)測(cè)序列的后驗(yàn)概率分布,如下式所示
(2)
此式中的p(zt|X)表示從已知輸入特征所獲得的隱藏變量的概率, 而p(zt|zt-1,S)則為依據(jù)前一時(shí)刻隱藏變量輸出所預(yù)測(cè)的隱藏變量的條件概率。
對(duì)于聯(lián)合模型中的CTC部分,本擬對(duì)多尺度Densenet所得到的3個(gè)特征做FPN網(wǎng)絡(luò)的相同操作,即針對(duì)F1做4x upsample得到F1′,對(duì)F2做2x upsample得到F2′,使得F1′,F(xiàn)2′和F3擁有相同的尺寸,再對(duì)F1′,F(xiàn)2′和F3做橫向連接以獲得特征F3′。
其次,還需要對(duì)F3′做一定的預(yù)處理以使其適應(yīng)LSTM網(wǎng)絡(luò)的輸入格式。以F3′為例,其為一個(gè)尺寸為4H*4W*C` ` `的三維數(shù)組,本文需要將其轉(zhuǎn)換成一個(gè)尺寸為16L*C` ` `的二維數(shù)組。其中,16L=4H*4W,fi則代表了C` ` `維向量。如式(3)所示
F3′={f1,f2,f3,…,f16L},fi∈RC ` ` `
(3)
隨后,將預(yù)處理后的F3′輸入LSTM編碼器進(jìn)行編碼,再將其結(jié)果導(dǎo)入CTC模型進(jìn)行解碼。
1.2.2 Attention模型的多分支改進(jìn)
考慮到Attention部分在聯(lián)合CTC-Attention模型中對(duì)識(shí)別所起到的作用相對(duì)較高,即針對(duì)Attention模型進(jìn)行更進(jìn)一步的多尺度改進(jìn)顯得尤為重要。直接將通過上采樣并橫向連接后的特征交由普通Attention模型進(jìn)行處理未必能充分發(fā)揮出多分支Densenet模型所提取到的多分支特征的優(yōu)勢(shì)。為此,本文針對(duì)多分支Densenet模型提出一種Attention模型的多分支改進(jìn)。除多尺度改進(jìn)外,本方法亦將Coverage vector引入Attention模型中,以避免對(duì)已分析內(nèi)容的重復(fù)關(guān)注。
該改進(jìn)后的模型需要將多分支Densenet模型所提取出的特征F1,F(xiàn)2和F3直接分別輸入LSTM網(wǎng)絡(luò)進(jìn)行編碼。此處亦需要對(duì)其進(jìn)行預(yù)處理操作,使其變?yōu)閷?duì)應(yīng)的二維數(shù)組,并依次命名為A,B和E。
(4)
在此式中,yt-1代表先前輸入的值,而st-1也是一個(gè)初始化參數(shù)。
接下來需要計(jì)算的是coverage值Covt,ai在步驟t條件下的能量eti以及Attention概率αti,可以通過以下公式計(jì)算
(5)
(6)
(7)
此處的αl代表了此前已獲得的Attention概率,Q是隨網(wǎng)絡(luò)訓(xùn)練而更新的隨機(jī)初始化矩陣。eti主要取決于ai,其亦與網(wǎng)絡(luò)的先前隱藏狀態(tài)的值ht-1以及Covt的第ith個(gè)向量Cti有關(guān)。αti則由eti與t步驟的全部能量計(jì)算得到。
最終,cAt可通過先前得到的ai與αti計(jì)算得到,如式(8)所示
(8)
但由于編碼器采用了多分支架構(gòu),因此將得到3個(gè)不同的輸出。本方法擬分別獲得其結(jié)果,并使之連接在一起,命名為ct。最終,該ct將被交由LSTM解碼器來得到狀態(tài)st,如下式所示
ct=[cAt;cBt;cEt]
(9)
(10)
1.2.3 聯(lián)合預(yù)測(cè)
聯(lián)合CTC-Attention解碼方法主要利用了初始階段CTC的對(duì)齊更加準(zhǔn)確的特點(diǎn),以避免Attention模型在解碼時(shí)由噪聲引起的位錯(cuò)問題。為實(shí)現(xiàn)聯(lián)合預(yù)測(cè),本方法擬設(shè)置CTC模型與Attention模型聯(lián)合預(yù)測(cè)的最大化聯(lián)合概率為
(11)
此處的λ是一個(gè)取值區(qū)間為0≤λ≤1的可變參數(shù),本文將在后續(xù)實(shí)驗(yàn)部分對(duì)λ的取值做深入分析。
由于目前難以找到相關(guān)開源數(shù)據(jù)集,因此文中提出收集私有數(shù)據(jù)集以用于模型的訓(xùn)練與測(cè)試。該數(shù)據(jù)集包含從合作小學(xué)收集的真實(shí)樣本以及通過本文所提出的樣本生成方法所得到的一些生成樣本。
2.1.1 真實(shí)樣本
真實(shí)樣本主要來自于合作小學(xué)收集的各類數(shù)學(xué)試卷。對(duì)收集得到的真實(shí)試卷進(jìn)行了手工剪切與標(biāo)記即可以得到真實(shí)樣本。但是,此類樣本卻存在數(shù)量少與相似度高的問題。相似度高的問題是由相同底卷將被派發(fā)給不同學(xué)生,導(dǎo)致相同問題的打印體部分幾乎相同造成的。對(duì)于此類樣本,本方法擬控制相同底卷的出現(xiàn)次數(shù)和同一學(xué)生的出現(xiàn)次數(shù)。最終,獲得了11 980個(gè)真實(shí)樣本,在這些樣本中將隨機(jī)抽取出80%的樣本進(jìn)行訓(xùn)練,其余樣本則進(jìn)行測(cè)試。
由于小學(xué)生的手寫字體可能存在不規(guī)范的問題,在某些情況下的真實(shí)樣本字符可能會(huì)出現(xiàn)粘連或交疊的情況。此外,過于接近的無關(guān)相鄰字符亦可能導(dǎo)致裁剪過后的樣本中出現(xiàn)噪音,如圖3所示。本方法并未刪除此類有問題的樣本,而是將其添加到訓(xùn)練樣本及測(cè)試樣本中一同訓(xùn)練。
圖3 真實(shí)樣本的一部分
2.1.2 生成樣本
為了解決真實(shí)樣本存在的數(shù)量少與相似度高的問題,本方法提出了一種樣本生成方法。其首先需要收集打印體字符和手寫體字符,為了確保打印體字符符合實(shí)際錄入情況,擬將所需的字符打印在紙張上后,執(zhí)行掃描與切割操作后再錄入,并從不同的打印字體中收集字符。同時(shí),對(duì)手寫字符亦有一些限制,如:避免收集隨機(jī)抽選的作為測(cè)試樣本的口算題中出現(xiàn)的手寫字體。
該生成方法首先根據(jù)口算題的格式生成其運(yùn)算部分,并將其細(xì)分為數(shù)字部分,運(yùn)算符部分與等號(hào)部分。對(duì)于數(shù)字部分,該方法擬生成一個(gè)滿足指定需求的隨機(jī)數(shù),具體體現(xiàn)為:隨機(jī)數(shù)為浮點(diǎn)數(shù)形式還是整數(shù)形式,以及是否會(huì)導(dǎo)致過分復(fù)雜的運(yùn)算等。運(yùn)算符部分則交由隨機(jī)函數(shù)在常見運(yùn)算符中隨機(jī)選擇。最終將等號(hào)添加到已生成的內(nèi)容中,即可獲得運(yùn)算部分的內(nèi)容。
其次,由先前生成的運(yùn)算部分內(nèi)容可以輕松計(jì)算出其相應(yīng)答案部分。對(duì)于最終生成的樣本,為盡可能模擬真實(shí)情況,該方法將在生成答案部分時(shí)適當(dāng)旋轉(zhuǎn)并縮放相關(guān)手寫字符。此外,該方法亦使用相關(guān)算法實(shí)現(xiàn)部分手寫字符之間的粘連和交疊情況,如圖4所示。
圖4 生成樣本的一部分
為最大化符號(hào)預(yù)測(cè)的概率,該模型選用交叉熵作為目標(biāo)函數(shù)
L=λLCTC+(1-λ)LAtt
(12)
此公式中LCTC表示為CTC模型的損失函數(shù),LAtt表示為Attention模型的損失函數(shù),λ則為一個(gè)取值為0≤λ≤1的可變參數(shù),用于表示該聯(lián)合模型中CTC模型和Attention模型的權(quán)重。
該模型應(yīng)用了較小的學(xué)習(xí)率,并將其初始化置為0.0001,以便于模型的訓(xùn)練。在優(yōu)化過程中,該模型選用自適應(yīng)學(xué)習(xí)率,即可以依據(jù)學(xué)習(xí)結(jié)果自動(dòng)更新學(xué)習(xí)率?;趦?nèi)存容量,利用率與收斂速度的考慮,該模型將batch size設(shè)置為18。相關(guān)工作[13]的實(shí)驗(yàn)數(shù)據(jù)表明,設(shè)置LSTM的hidden units數(shù)為256可以取得更好的結(jié)果。
對(duì)于訓(xùn)練完成的模型,本方法將使用WER Loss來衡量其性能并保存性能最佳的模型作為最終模型。與此同時(shí),本方法亦選用數(shù)學(xué)領(lǐng)域中常用的LaTeX格式作為輸出格式。
本文擬使用單詞錯(cuò)誤率(word error rate,WER)作為評(píng)估標(biāo)準(zhǔn)。該評(píng)估標(biāo)準(zhǔn)是通過計(jì)算預(yù)測(cè)序列校正為標(biāo)準(zhǔn)順序所需的字符替換,刪除或插入操作的數(shù)量總數(shù)除以標(biāo)準(zhǔn)序列總字符數(shù)而獲得的百分比,計(jì)算公式如下
(13)
此處,S為替換的字符個(gè)數(shù),D為刪除的字符個(gè)數(shù),I為插入的字符個(gè)數(shù),而N則為標(biāo)簽字符的總個(gè)數(shù)。
對(duì)比實(shí)驗(yàn)首先驗(yàn)證了λ在不同取值情況下訓(xùn)練的模型性能。由于λ是一個(gè)從0到1的可變參數(shù),這意味著當(dāng)λ取值為0時(shí),模型將僅使用多分支改進(jìn)后的Attention模型。反之,在λ取值為1時(shí),模型將僅采用CTC模型。同時(shí),當(dāng)λ取值為浮點(diǎn)數(shù)時(shí),意味著CTC和Attention在聯(lián)合模型中以不同權(quán)重相互作用。本實(shí)驗(yàn)將選用6個(gè)不同的λ值分別為:0.2、0.4、0.6、0.8、0和1進(jìn)行對(duì)比實(shí)驗(yàn)。
接下來,為了驗(yàn)證模型多分支改進(jìn)的有效性,本方法比較了編碼器部分為傳統(tǒng)Densenet網(wǎng)絡(luò)的單分支CTC模型和單分Attention模型的性能。此外,本方法擬將λ取值為0.2的傳統(tǒng)聯(lián)合CTC-Attention模型引入對(duì)比實(shí)驗(yàn),相關(guān)文獻(xiàn)驗(yàn)證在該模型中此λ值較其它λ值擁有更佳的效果。最終,考慮到本文提出的訓(xùn)練樣本生成方法,亦對(duì)比了僅由真實(shí)樣本訓(xùn)練的模型與增加了生成樣本訓(xùn)練的模型的性能,以驗(yàn)證此生成方法的有效性。
從表1與表2中可以發(fā)現(xiàn),無論在訓(xùn)練過程中是否追加生成的樣本,在較低λ值的條件下,文本所提出的多分支聯(lián)合模型的性能均優(yōu)于單一CTC模型與單一Attention模型。此外,亦可以關(guān)注到當(dāng)λ取值為0.2時(shí),模型可以獲得更好的性能。這是因?yàn)槁?lián)合CTC-Attention模型采用CTC對(duì)Attention進(jìn)行空間約束,進(jìn)而降低了Attention模型存在的偏移問題,提高了識(shí)別率。與此同時(shí),對(duì)比表1與表2亦可以注意到,無論采用何種模型,追加生成樣本所訓(xùn)練的模型性能均優(yōu)于直接采用真實(shí)樣本訓(xùn)練的模型性能,這也驗(yàn)證了樣本生成方法的有效性。顯然,多分支結(jié)構(gòu)無論是對(duì)于CTC模型、Attention模型或是聯(lián)合CTC-Attention模型,都擁有比單分支結(jié)構(gòu)更好的性能。
表1 不同模型在真實(shí)樣本訓(xùn)練條件下的WER Loss
表2 不同模型在生成樣本訓(xùn)練條件下的WER Loss
在接下來的部分中,本文還設(shè)置了一組新的對(duì)比實(shí)驗(yàn)以評(píng)估不同模型的收斂速度。在該實(shí)驗(yàn)中,訓(xùn)練集均采用已追加生成樣本的訓(xùn)練集。訓(xùn)練過程中將每隔指定批次,通過真實(shí)樣本測(cè)試集測(cè)試并輸出其精度。對(duì)于聯(lián)合CTC-Attention模型選擇了WER Loss較低的λ取值為0.2的模型,并將其收斂速度與一些目前較為先進(jìn)的模型以及λ取值為0和1的模型進(jìn)行比較,結(jié)果如圖5所示。
圖5 不同模型的收斂速度
從圖5中可以看出,本文所提出的模型在λ取值為0.2的情況下收斂速度以及準(zhǔn)確度亦優(yōu)于常見的一些模型。盡管λ取值為1的模型(多尺度改進(jìn)后的CTC模型)在訓(xùn)練過程中收斂速度更快,但其準(zhǔn)確性不如λ取值為0的模型(多尺度改進(jìn)后的Attention模型)。相反,在收斂的前提下,λ取值為0的模型的準(zhǔn)確度優(yōu)于λ取值為1模型,但其在訓(xùn)練過程中存在收斂速度慢的問題。因此,引入聯(lián)合CTC-Attention模型可以在確保識(shí)別性能的同時(shí)提高Attention模型的收斂速度,達(dá)到平衡收斂速度和準(zhǔn)確性的效果。
為解決小學(xué)生口算題中存在的問題以提高識(shí)別率。本文以基于Densenet網(wǎng)絡(luò)與基于聯(lián)合CTC-Attention模型的LSTM編碼器-解碼器結(jié)構(gòu)作為基礎(chǔ)提出一些改進(jìn)。該模型相比既有模型擁有更強(qiáng)的特征提取能力,以適應(yīng)字符復(fù)雜多變的情況。主要是針對(duì)傳統(tǒng)Densenet網(wǎng)絡(luò)做了多分支改進(jìn),并對(duì)CTC模型與Attention模型進(jìn)行改進(jìn),使聯(lián)合模型可以充分利用多分支結(jié)構(gòu)以提升識(shí)別效果,最終結(jié)果將以LaTeX格式輸出。為解決真實(shí)樣本數(shù)量少與相似度高的問題,本文提出一種樣本生成方法。最終,在這些因素的共同作用下,通過實(shí)驗(yàn)驗(yàn)證了該方法具有優(yōu)越的性能。