菅朋朋 ,何 彬 ,王彥麗 ,夏 盟
(1.華中師范大學(xué)國家數(shù)字化學(xué)習(xí)工程技術(shù)研究中心,湖北 武漢430000;2.河南財經(jīng)政法大學(xué),河南 鄭州 450000)
自20世紀(jì)60年代起,自動解答一直是人工智能領(lǐng)域的研究熱點和研究難點[1-2]。它是機(jī)器最基本的智力能力,亦可作為其他智能的基礎(chǔ)。在初等教育方面,自動解答為智能導(dǎo)學(xué)系統(tǒng)提供了核心技術(shù)。通過以吳文俊和張景中院士為代表的一批學(xué)者的深入研究,我國的自動解答技術(shù)目前已處于國際領(lǐng)先水平,同時開發(fā)了一系列工具如專家系統(tǒng)、超級畫板等[3-5],并將其應(yīng)用于實際的教學(xué)和學(xué)習(xí)中。自動解答對人工智能和教育信息化的發(fā)展均具有重要的意義。
電路題目的自動解答作為自動解答的一個分支,面臨著自然語言理解、電路圖形識別與分析以及關(guān)系推理等困難。Ahmed等人[6]提出電路題目的解答必須結(jié)合圖形和文本的理解,但他們并未真正實現(xiàn)自動化圖文理解的方法。Weyten等人[7]開發(fā)了一個基于Web的電路題目訓(xùn)練系統(tǒng),通過預(yù)先存儲電路題目、解答模型和知識庫等內(nèi)容,對學(xué)生進(jìn)行解答訓(xùn)練。隨后,Weyten等人[8]又提出了基于符號表達(dá)式驗證的方法對電路進(jìn)行分析。Paramita等人[9]提出了分層量化的方法來實現(xiàn)電路圖形中電路符號和連接關(guān)系的識別。Shi等人[10]提出了一種基于圖形構(gòu)建的圖對決策樹的方法對電路圖形進(jìn)行分析。然而,現(xiàn)有的方法均不能以端到端的方式實現(xiàn)電路題目的自動解答。因此,本文提出了一種基于圖文理解的電路題目自動解答方法。
本文的主要貢獻(xiàn)如下:
(1)提出了一種基于圖文理解的方法用于電路題目的自動解答;
(2)將題目理解抽象為一個從題目中抽取關(guān)系的過程,并用方程表示所抽取的關(guān)系;
(3)提出了一種句法語義模型用于抽取題目文本中的關(guān)系;
(4)提出了一種網(wǎng)孔搜索和卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的方法,用于抽取電路圖形中的關(guān)系。
在傳統(tǒng)的基于語義的題目理解方法中[11-12],通常使用語句的模板匹配來抽取題目文本中的信息,缺點在于需要設(shè)計大量的語義模板理解自然語言描述的復(fù)雜情景。通過對題目文本的觀察與分析發(fā)現(xiàn),題目文本通常包含語義部分和句法部分,而句法部分可以通過單詞的詞性來表示,如動詞“是”“為”的詞性可統(tǒng)一標(biāo)記為符號“/v”。如果將語義和句法相結(jié)合形成一套模型,勢必會大大減少語義模板的數(shù)量?;谠撍枷?,本文提出了一種基于句法語義模型的文本關(guān)系抽取方法。
對于電路題目的句法語義模型,句法部分是單詞的詞性標(biāo)簽,語義部分是學(xué)科領(lǐng)域內(nèi)的關(guān)鍵詞結(jié)構(gòu)。一個句法語義模型包括關(guān)鍵詞、詞性模式和對應(yīng)的電路實體之間的數(shù)學(xué)關(guān)系。句法語義模型可定義為一個三元組S=(K,P,E),其中K是文本中的關(guān)鍵詞,P是文本中的詞性模式,E是對應(yīng)實體之間的數(shù)學(xué)關(guān)系。通過構(gòu)建一個電路題目的句法語義模型池,可實現(xiàn)對題目文本中關(guān)系的抽取。其中,模型池結(jié)構(gòu)為:Σ={Si=(ki,pi,ei)|i=1,2,…,m}。
基于句法語義模型的關(guān)系抽取算法如算法1所示。該算法對題目文本進(jìn)行元數(shù)據(jù)構(gòu)建,即對文本進(jìn)行格式化處理形成統(tǒng)一的表達(dá)格式,然后使用自然語言處理工具[13]對文本進(jìn)行詞性標(biāo)注,再使用句子邊緣檢測對語句進(jìn)行分割,進(jìn)而構(gòu)建題目文本的元數(shù)據(jù)結(jié)構(gòu)。對于每一個分句,使用句法語義模型中的關(guān)鍵詞和詞性模式分別與該分句中的電路元素詞和加標(biāo)注的詞性標(biāo)簽進(jìn)行匹配。若兩者均相同,則模型與分句匹配成功,將模型中的數(shù)學(xué)關(guān)系實例化為一個電路方程并輸出;若兩者不同,則使用下一個模型進(jìn)行匹配,直至所有模型被匹配完為止。循環(huán)處理每一個分句,直至所有分句均被處理,然后輸出實例化后的電路方程到一個方程組中,從而實現(xiàn)題目文本中關(guān)系的抽取。
算法1:基于句法語義模型的題目文本關(guān)系抽取
輸入:電路題目文本,記為Xtext;
輸出:一組表示關(guān)系的方程組,記為Δ;
1:題目文本的元數(shù)據(jù)構(gòu)建,即格式化、詞性標(biāo)注和語句分割,記為Xtext(kn,pn);
2:初始化句法語義模型池S(km,pm,rm);
3:在題目文本中匹配關(guān)鍵詞k和詞性模式p,S(km,pm,rm)∩Xtext(kn,pn);
4:標(biāo)記匹配上的文本Xtext(kn,pn),并分配對應(yīng)的符號sm、值vm和單位um;
5:將模型S(km,pm,rm)中對應(yīng)的數(shù)學(xué)關(guān)系rm實例化為一個電路方程;
6:將電路方程存儲到Δ=Δ(rm,sm,vm,um)中,并循環(huán)3~6,直到抽取所有的關(guān)系為止。
針對一個電路圖形,直接抽取其中的關(guān)系非常困難,而識別電路圖形中的元件相對容易,然后根據(jù)識別的元件信息列寫對應(yīng)的關(guān)系表達(dá)式,即可實現(xiàn)電路圖形中的關(guān)系抽取。從電路圖形中抽取關(guān)系,需要先識別電路圖形,根據(jù)識別結(jié)果進(jìn)行電路分析獲取關(guān)系。由于部分電路圖形結(jié)構(gòu)復(fù)雜且元器件種類較多,而電路分析需要準(zhǔn)確的元器件分類信息和區(qū)域信息,因此本文采用一種深度卷積神經(jīng)網(wǎng)絡(luò)算法Faster-RCNN[14]對電路圖形進(jìn)行自動化識別。該方法既可對多種類別的電路元器件進(jìn)行分類檢測,又可獲得區(qū)域信息。根據(jù)電路圖形識別的結(jié)果,本文提出了一種網(wǎng)孔搜索算法對電路圖形中的關(guān)系進(jìn)行抽取。
Faster-RCNN是一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法,由Fast-RCNN[15]和RPN(Region Proposal Network)兩部分組成。由于RPN可生成特定對象的建議區(qū)域,并與Fast-RCNN共享卷積層特征,因此節(jié)省了整個檢測網(wǎng)絡(luò)的運行時間。此外,空間金字塔池化層(Spatial Pyramid Pooling)的使用,使得Faster-RCNN可以處理任意大小的圖片。
2.1.1 RPN網(wǎng)絡(luò)訓(xùn)練
RPN與Fast-RCNN共享卷積層對電路圖形進(jìn)行特征提取形成特征圖,然后使用滑動窗口對特征圖進(jìn)行滑動卷積,每個滑動窗口將特征圖映射到一個256維的向量(ZF-net含有256個維度);建議層在特征圖(寬高為w×h)上的每個像素位置采集k個初始區(qū)域,共可得到w×h×k個錨框的初始區(qū)域[16];使用區(qū)域分類層甄選出可能存在目標(biāo)的錨框,再通過區(qū)域回歸層修正錨框的邊界,得到目標(biāo)候選區(qū)域;最后將結(jié)果輸出到ROI(Region of Interest)層進(jìn)行池化。
在RPN網(wǎng)絡(luò)訓(xùn)練時,首先建議層會對生成的錨框做標(biāo)注,即以每個像素為中心點生成三種面積分別為128×128、256×256和512×512像素的錨框。對于產(chǎn)生的錨框采用IoU(Intersection over-Union)進(jìn)行正負(fù)樣本集的選擇,規(guī)則如表1所示。
表1 錨框標(biāo)注規(guī)則
標(biāo)注錨框后,RPN網(wǎng)絡(luò)采用梯度下降算法進(jìn)行反向傳播訓(xùn)練。損失函數(shù)由分類損失函數(shù)和回歸損失函數(shù)按照一定比例組成,總的損失函數(shù)為:
其中,i代表第i個錨框,L({pi})代表分類損失函數(shù),L({ti})代表回歸損失函數(shù),λ代表比例系數(shù)。
每個錨框后接有一個二分類的softmax,因此可定義每個錨框的分類概率。當(dāng)錨框為正樣本時,pi*=1;當(dāng)錨框為負(fù)樣本時,pi*=0。每個錨框后也接有一個用于計算預(yù)測窗口與標(biāo)定窗口之間損失的回歸函數(shù)。
當(dāng)RPN網(wǎng)絡(luò)獲取預(yù)測框的坐標(biāo)參數(shù)后,需要做回歸調(diào)整,使得預(yù)測框更接近目標(biāo)框,即通過計算ti和ti*確定目標(biāo)位置參數(shù),具體過程如下:獲取預(yù)測框,通過RPN網(wǎng)絡(luò)獲取預(yù)測區(qū)域的中心位置坐標(biāo)、寬和高;設(shè)定9個錨框,每個錨框?qū)?yīng)一個一定比例和寬高的預(yù)測窗口,從而確定每個預(yù)測窗口的中心點位置坐標(biāo)、寬和高;計算出目標(biāo)框位置,通過預(yù)測框和錨框預(yù)測窗口確定目標(biāo)框的位置,表達(dá)式為:
其中,x、y、w和h分別代表預(yù)測框的中心坐標(biāo)、寬和高;xa、ya、wa和ha分別代表錨框的中心坐標(biāo)、寬和高;x*、y*、w*和h*分別代表目標(biāo)框的中心坐標(biāo)、寬和高。
2.1.2 Fast-RCNN網(wǎng)絡(luò)訓(xùn)練
Fast-RCNN的網(wǎng)絡(luò)訓(xùn)練首先通過使用ZF-net生成特征圖,ZF-net網(wǎng)絡(luò)使用ReLu(Rectified Linear Units)作為激活函數(shù)應(yīng)用于所有的卷積層和全連接層進(jìn)行訓(xùn)練。由于ReLu是一個簡化的修正線性神經(jīng)元,訓(xùn)練速度更快,同時使用交叉熵代價函數(shù),可以保留更多的原始像素信息。在第5層卷積網(wǎng)絡(luò)中存在一個256×256的特征圖,將該特征圖中的所有特征串連成一個高維(4 096維)向量,再添加一個4 096維的特征層(FC6)形成FC7特征層。FC7層既可以計算出候選區(qū)域分類檢測的概率,又可以計算出候選區(qū)域?qū)?yīng)目標(biāo)的位置,最后可通過使用反向傳播算法對檢測網(wǎng)絡(luò)進(jìn)行微調(diào)。
2.1.3 RPN與Fast-RCNN共享卷積層及聯(lián)合調(diào)優(yōu)
通過使用ImageNet模型對RPN網(wǎng)絡(luò)進(jìn)行初始化,固定兩者共有的卷積層,再對RPN網(wǎng)絡(luò)中獨有層的參數(shù)進(jìn)行微調(diào),以達(dá)到兩個網(wǎng)絡(luò)共享卷積層的效果。保持共享卷積層不變,通過使用Fast-RCNN對上述共享卷積層的檢測結(jié)果進(jìn)行區(qū)域回歸,可得到每一個區(qū)域的邊界框和置信度,從而實現(xiàn)對檢測網(wǎng)絡(luò)的微調(diào)。這樣RPN與Fast-RCNN被合并成為一個統(tǒng)一的網(wǎng)絡(luò),并共享卷積特征。通過交替優(yōu)化,該統(tǒng)一網(wǎng)絡(luò)不僅提高了檢測效率,而且可獲取目標(biāo)的位置信息。
在基于Faster-RCNN的電路圖形識別中,電路元器件可通過分類檢測進(jìn)行有效識別,同時通過RPN網(wǎng)絡(luò)獲取元器件的區(qū)域信息。然而,單純的電路圖形識別并不能滿足圖形中關(guān)系的抽取。為此,本文在電路圖形識別的基礎(chǔ)上提出了一種網(wǎng)孔搜索算法,用于抽取電路圖形中的關(guān)系。
電路圖形理解是題目理解的重要組成部分,因為其中包含豐富的結(jié)構(gòu)信息,尤其是在題目文本無法表達(dá)模糊或復(fù)雜的電路時。從電路圖形中可根據(jù)電壓與電流關(guān)系(VCR)、基爾霍夫電流定律(KCL)和基爾霍夫電壓定律(KVL)抽取三類電路方程,即VCR方程、KCL方程和KVL方程[8,17]。通過研究發(fā)現(xiàn),VCR、KCL和LVL中的關(guān)系與電路網(wǎng)孔(即基本回路,如圖1中的m1、m2、m3)緊密相關(guān)。在一個電路網(wǎng)孔中,通常包含元器件、節(jié)點和連接線,又包含隱藏其中的電流和電壓,如圖1所示。
圖1 電路圖形示例
通過對元器件的識別可直接列寫其VCR方程。例如,識別到一個電阻R,可列寫對應(yīng)的方程R=U/I。通過對節(jié)點的識別,利用KCL列寫對應(yīng)的節(jié)點電流方程,如圖2所示。
然而,所有節(jié)點電流形成的KCL方程組具有線性相關(guān)性,可通過對該方程組的系數(shù)矩陣進(jìn)行初等變換,抽取電路圖形中線性無關(guān)的KCL方程組。
根據(jù)識別的節(jié)點與連接線對電路回路進(jìn)行搜索,可抽取電路圖形中的KVL方程組,如圖3所示。電路回路的搜索包含兩個步驟:一是使用深度優(yōu)先算法搜索電路圖形中所有的回路,并根據(jù)KVL將搜索到的回路實例化為電路方程組;二是對KVL方程組的系數(shù)矩陣進(jìn)行初等變換形成初等矩陣,并將初等矩陣恢復(fù)成線性無關(guān)的KVL方程組,其中每個KVL方程即代表一個電路網(wǎng)孔,如圖3中的m1、m2、m3。
圖2 電路節(jié)點分析
圖3 電路網(wǎng)孔分析
算法2:基于網(wǎng)孔搜索算法的圖形關(guān)系抽取
輸入:一個電路圖形,記為Xdiagram;
輸出:一組表示關(guān)系的電路方程組,記為Δ;
1:從電路圖形識別中分別提取元器件、節(jié)點和連接線集合,記為Xdiagram(Γ,Φ,Ψ);
2:初始化元器件集合Γ={τi|i=1,2,…,m}和節(jié)點集合Φ={φ1j|j=1,2,…,n},并置電源處節(jié)點為φ1、連接線集合Ψ={ψk|k=1,2,…,o},將存放回路的集合θ(l)置為θ(1);
提取VCR方程組:
3:fori=1 tomdo
4: 根據(jù)歐姆定律列寫VCR方程,并存于集合Δ中;
5:end for
提取KCL和KVL方程組:
6:forj=1 tondo
7: 根據(jù)KCL列寫節(jié)點電流方程,并存于集合 Δ′;
8: fork=1 toodo
9: 使用深度優(yōu)先算法,搜索從φ1j出發(fā)并回到φ1j的節(jié)點列表;
10: 將搜索到的節(jié)點列表存于θ(l)中;
11:l←l+1;
12: end for
13: 從Ψ中刪除連接線ψk;
14:end for
15:對Δ′中方程組的系數(shù)矩陣進(jìn)行初等變換形成初等矩陣;
16:將初等矩陣恢復(fù)成線性無關(guān)的KCL方程組,并存于Δ中;
17:根據(jù)KVL將θ(l)中的回路實例化為KVL方程組 Δ′′;
18:對Δ′′中方程組的系數(shù)矩陣進(jìn)行初等變換形成初等矩陣;
19:將初等矩陣恢復(fù)成線性無關(guān)的KVL方程組,并存于Δ中。
由于當(dāng)前沒有針對電路題目自動解答的先例,因此本文從題目文本理解、電路圖形理解和電路題目自動解答三個部分進(jìn)行實驗,分別驗證基于句法語義模型抽取題目文本關(guān)系的準(zhǔn)確率、基于Faster-RCNN和網(wǎng)孔搜索算法抽取圖形關(guān)系的準(zhǔn)確率以及基于圖文理解的方法求解電路題目的準(zhǔn)確率。
目前還沒有針對電路題目自動解答的公開數(shù)據(jù)集,因此本文從人教版初中物理課本中收集了45道電路題目作為實驗的測試數(shù)據(jù),其信息統(tǒng)計如表2所示。針對電路圖形的檢測實驗,本文從歷年中考題目和互聯(lián)網(wǎng)上收集并建立了一個1 056張電路圖形的數(shù)據(jù)集作為訓(xùn)練樣本,其中包含10類8 968個元器件、節(jié)點和連線等電路元件。Faster-RCNN的數(shù)據(jù)集按照3:1的比例隨機(jī)產(chǎn)生訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),即選取792張電路圖形作為訓(xùn)練數(shù)據(jù),264張電路圖形作為測試數(shù)據(jù)。
表2 電路題目數(shù)據(jù)集的信息統(tǒng)計
為驗證句法語義模型抽取題目文本中關(guān)系的準(zhǔn)確率,本文采用完全抽取、部分抽取和沒有抽取三個層次表示關(guān)系抽取的程度。如果方程中的表達(dá)式、符號、數(shù)值和單位均抽取無誤,則稱為關(guān)系的完全抽?。蝗绻匠讨械姆柡蛦挝徊糠殖槿∮姓`,則稱為部分抽??;如果方程中的表達(dá)式抽取錯誤,則稱為沒有抽取。本文選擇文獻(xiàn)[12]中提出的方法作為基線方法,因為該方法是與本文方法最相近且用于題目文本的理解。基線方法是一種基于語義分析的方法,通過使用語義模板將題目文本轉(zhuǎn)化為數(shù)學(xué)關(guān)系。
如表3所示,本文方法在抽取文本關(guān)系時,完全抽取和部分抽取的準(zhǔn)確率分別為93.5%和6.5%,基線方法的準(zhǔn)確率分別為90.7%和9.3%,且兩種方法均實現(xiàn)了文本關(guān)系的抽取,沒有抽取關(guān)系的準(zhǔn)確率為0。本文方法與基線方法在文本關(guān)系抽取的準(zhǔn)確率方面基本相當(dāng),然而本文方法的模板數(shù)卻遠(yuǎn)遠(yuǎn)少于基線方法,原因在于基線方法是使用語義模板匹配來抽取文本中的關(guān)系,而本文方法是使用句法模式代替大量的語義描述,再與部分關(guān)鍵語義相結(jié)合來抽取關(guān)系,其模板數(shù)量要遠(yuǎn)少于基線方法。
表3 基線方法和本文方法在文本關(guān)系抽取的結(jié)果
為驗證基于Faster-RCNN的電路圖形識別的準(zhǔn)確率,本文對電路圖形中的元件進(jìn)行分類檢測。實驗在Caffe框架上運行,操作系統(tǒng)采用Ubuntu 16.04,CPU為Intel(R) Core(TM) i7-4790k@4.00GHz,GPU為GeForce GTX Titan Black,32 GB內(nèi)存。
電路圖形的識別結(jié)果,如表4所示。相比于其他電路元件,電阻的識別準(zhǔn)確率最高,達(dá)到89.36%,其次是滑動變阻器。元件檢測的平均準(zhǔn)確率達(dá)到了82.41%,表明Faster-RCNN在目標(biāo)檢測中能夠取得較好的識別效果。但是,由于一些元件的訓(xùn)練樣本不足,如電容、燈泡等,導(dǎo)致訓(xùn)練時特征提取不足,識別時產(chǎn)生區(qū)域漏檢或錯檢等問題,這是下一步需要優(yōu)化的地方。由于實驗中使用的電路圖形是純電阻電路或者簡單的非純電阻電路,且兩個網(wǎng)絡(luò)的卷積特征共用,使得區(qū)域建議和檢測時間在平均24.82 ms內(nèi)完成,可以忽略不計。
表4 基于Faster-RCNN的電路圖形識別結(jié)果
如2.2節(jié)所述,網(wǎng)孔搜索算法可以抽取三類電路方程,而實驗中通過正確抽取方程的數(shù)量來評估電路圖形理解的效率。如表5所示,68個VCR方程中60個被正確抽取、11個KCL方程中10個被正確抽取、26個KVL方程中21個被正確抽取,抽取正確率分別是88.2%、90.9%和80.7%,表明網(wǎng)孔搜索算法可以有效抽取電路圖形中的關(guān)系。此外,實驗中的錯誤主要集中在電路圖形的識別和網(wǎng)孔搜索上,下一步將會繼續(xù)優(yōu)化算法,以提高識別與搜索的精確度。
表5 基于網(wǎng)孔搜索算法的圖形關(guān)系抽取結(jié)果
本實驗通過正確解答電路題目的數(shù)量來評估所提出方法的有效性?;趫D文理解的電路題目自動解答的實驗結(jié)果,如表6所示。其中,針對文本題目,通過句法語義模型的理解可實現(xiàn)79.31%的解答準(zhǔn)確率;針對文本與圖形結(jié)合的題目,通過使用圖文理解的方法可實現(xiàn)68.75%的解答準(zhǔn)確率。最終,有75.56%的電路題目被正確解答,表明本文提出的基于圖文理解的電路題目自動解答方法是有效的。
表6 基于圖文理解的電路題目自動解答實驗結(jié)果
本文提出的方法有24.44%的解答錯誤率,其中13.33%來自文本題目、11.11%來自圖文結(jié)合題目。導(dǎo)致解答錯誤的主要原因有以下三點:(1)一些特殊的關(guān)系不在句法語義模型抽取的范圍之內(nèi),如比例關(guān)系;(2)非標(biāo)準(zhǔn)的文本表達(dá)形式,如符號下標(biāo)不規(guī)范等,導(dǎo)致符號匹配錯誤;(3)電路圖形中元件的分類識別錯誤,并導(dǎo)致回路搜索錯誤。這些存在的問題將是下一步需要改進(jìn)的方向。
本文提出了一種基于圖文理解的電路題目自動解答方法,將題目理解的過程抽象為一個從題目中抽取關(guān)系的過程,并使用方程表示所抽取的關(guān)系,進(jìn)而提出一種句法語義模型來抽取題目文本中的關(guān)系。同時,本文提出一種網(wǎng)孔搜索算法,并與Faster-RCNN算法相結(jié)合來提取電路圖形中的關(guān)系。最后,通過對電路題目自動解答過程的實驗,證明了本文所提方法的可行性和有效性。