張園園,楊 露,鄒 耀,周靜軒,劉治坤,鄒 靜
(1.國網(wǎng)湖北省電力有限公司技術(shù)培訓(xùn)中心,武漢 430027;2.湖北工業(yè)大學(xué) 電氣與電子工程學(xué)院,武漢 430068)
處理生產(chǎn)線上分類問題時(shí),由于產(chǎn)品貴重、不宜長時(shí)間存放以及缺陷樣本比例低等原因,廠家只能提供少量缺陷樣本,導(dǎo)致訓(xùn)練的模型分類準(zhǔn)確率不高。此外訓(xùn)練的模型無法適應(yīng)生產(chǎn)過程中因?yàn)閰?shù)變化、批次品質(zhì)變化等產(chǎn)生的樣本特征變化,造成模型識別的穩(wěn)定性不足。針對該問題,本文提出在生產(chǎn)過程中不停采集并補(bǔ)充新樣本,并通過動態(tài)訓(xùn)練更新模型。實(shí)驗(yàn)證明該方法不僅能夠?yàn)閺S家節(jié)省采集成本和時(shí)間,而且通過采集和訓(xùn)練的迭代過程有效解決分類準(zhǔn)確率低和穩(wěn)定性問題。
通過生成對抗網(wǎng)絡(luò)(GAN)[1]生成缺陷樣本可以解決樣本不足問題,該網(wǎng)絡(luò)由Ian Goodfellow提出,是當(dāng)前深度學(xué)習(xí)中研究的熱點(diǎn),例如天文圖像、[2]手寫數(shù)字圖像、[3]裂縫圖像[4]等的生成。GAN的起源來自二人零和博弈,包含一個(gè)生成模型和一個(gè)判別模型,基本構(gòu)架由圖1可見。生成模型的任務(wù)是希望生成的樣本能夠欺騙判別模型,而判別模型的任務(wù)則是希望識別出假的樣本,兩者通過相互促進(jìn)在不斷地對抗中來更新網(wǎng)絡(luò)模型并生成可以以假亂真的數(shù)據(jù)樣本。過程如下:首先生成模型G接收到隨機(jī)噪聲Z,生成假的樣本;然后將生成的樣本和原始真實(shí)的樣本作為判別模型D的輸入判斷真假;將結(jié)果返回給G和D讓兩個(gè)模型更新參數(shù),G生成新一批的樣本來欺騙D,而D更新參數(shù)來更準(zhǔn)確的區(qū)分真假;兩個(gè)網(wǎng)絡(luò)模型相互促進(jìn)更新,直到最后D生成的樣本與真實(shí)樣本有相同分布,G也無法再區(qū)分生成樣本與真實(shí)樣本的真假。
圖1 GAN基本構(gòu)架
實(shí)驗(yàn)表明將傳統(tǒng)GAN方法應(yīng)用于小龍蝦樣本生成,生成的樣本只有26.7%可以使用,其余73.3%的樣本都是不規(guī)則的,不能用于后續(xù)的圖像分類,這種現(xiàn)象稱為模式崩潰。為解決該問題,本文在LeNet[5]基礎(chǔ)上結(jié)合AlexNet、[6]GoogleNet[7]和ResNet[8]模型改進(jìn)GAN的判別模型,提高GAN模型特征提取能力。
GAN模型的生成模型和判別模型是相互促進(jìn),相互競爭的關(guān)系,當(dāng)判別模型能夠準(zhǔn)確地識別真實(shí)數(shù)據(jù)樣本時(shí),生成模型才能不斷地更新生成更加真實(shí)的樣本,從而提高生成樣本的可使用率,解決GAN模型崩潰的問題。因此本文提出采用有監(jiān)督方式預(yù)訓(xùn)練判別模型,然后再以GAN模型的訓(xùn)練方式交替訓(xùn)練生成模型和更新判別模型,該方法減少了GAN模型的訓(xùn)練時(shí)間,提高了生成模型生成樣本質(zhì)量。
為解決GAN模型存在的模型崩潰和難以訓(xùn)練的問題,根據(jù)已有的數(shù)據(jù)樣本,結(jié)合多種模型優(yōu)點(diǎn)設(shè)計(jì)了改進(jìn)LeNet模型做為GAN模型的判別模型。該模型包括9層卷積層,3層池化層和1層全連接層。基于改進(jìn)LeNet的判別模型結(jié)構(gòu)圖由圖2可見,主要改進(jìn)如下:
圖2 判別模型
使用LeakyReLU激活函數(shù)替換Sigmoid。在CNN中常用的激活函數(shù)有Sigmoid,[9]ReLU,[10]LeakyReLU[11]等,Sigmoid可以將輸出映射到0和1之間,適應(yīng)于二分類問題,但是反向傳播過程中容易出現(xiàn)梯度消失問題;ReLU是最常用的激活函數(shù),屬于非飽和函數(shù)。反向傳播過程中當(dāng)輸入為正數(shù)時(shí)導(dǎo)數(shù)始終為1,可以用來解決梯度消失的問題并且運(yùn)算速度快,但是當(dāng)輸入為負(fù)數(shù)時(shí),導(dǎo)數(shù)始終為0,容易造成神經(jīng)元死亡并不再參與訓(xùn)練的問題;LeakyReLU函數(shù)是ReLU函數(shù)的拓展,保留了ReLU函數(shù)的優(yōu)點(diǎn)并且在負(fù)區(qū)間其導(dǎo)數(shù)不為0,能夠解決神經(jīng)元死亡的問題,但是訓(xùn)練時(shí)間相對增加??紤]到改進(jìn)LeNet不僅需要在已有圖像上有好的分類效果而且還要用來識別生成的樣本,訓(xùn)練過程中應(yīng)該盡量保留神經(jīng)元,所以選擇LeakyReLU作為改進(jìn)LeNet的激活函數(shù)。
使用兩個(gè)3*3卷積替換5*5卷積。堆疊含有小尺寸卷積核的卷積層來代替具有大尺寸的卷積核的卷積層,能夠使得感受野大小不變,而且多個(gè)3x3的卷積核比一個(gè)大尺寸卷積核有更多的非線性。在一定程度上提升了卷積升級網(wǎng)絡(luò)的提取特征能力。同時(shí),使用兩個(gè)3*3卷積核所用的參數(shù)更少,減少了過擬合。
在每個(gè)卷積操作后加入Batchnorm[12]層。CNN的任務(wù)主要是學(xué)習(xí)訓(xùn)練樣本的分布,而在每一次訓(xùn)練過程中包含的樣本分布都不一樣,模型的訓(xùn)練比較困難。Batchnorm層將幾乎所有數(shù)據(jù)映射到激活函數(shù)的非飽和區(qū)(線性區(qū)),僅利用到了線性變化能力,從而降低了神經(jīng)網(wǎng)絡(luò)的表達(dá)能力,提升了訓(xùn)練的穩(wěn)定性。
通過1*1卷積疊加[13]增加模型深度和改變維度。從而減少過擬合和提高識別準(zhǔn)確率。
為了減少在卷積層之間傳遞信息時(shí)存在梯度消失和難以訓(xùn)練的問題,加入圖3所示殘差結(jié)構(gòu)。該結(jié)構(gòu)以跳層連接的形式實(shí)現(xiàn),即將單元的輸入直接與單元輸出加在一起,然后再激活。因此殘差網(wǎng)絡(luò)通過微分特性保護(hù)了信息的完整性,只需要學(xué)習(xí)輸入,輸出差別的部分,簡化了學(xué)習(xí)目標(biāo)和難度。
圖3 殘差結(jié)構(gòu)圖
為了提高生成圖片的質(zhì)量,設(shè)計(jì)了反卷積網(wǎng)絡(luò)做為GAN模型的生成模型,模型結(jié)構(gòu)圖由圖4可見,主要改進(jìn)如下:
圖4 生成模型
(1)除了輸出層保留GAN模型的tanh[14]激活函數(shù),其他層使用ReLU,使用有界限的激活函數(shù)可以允許模型更快地學(xué)習(xí)達(dá)到飽和;
(2)輸入層外每層都添加Batchnorm,將特征層的輸出歸一化到一起,增加模型的穩(wěn)定性;
(3)加入反卷積模塊,圖像分類問題是輸入圖片,經(jīng)過卷積層提取特征,最終得到圖片類別的概率。而生成圖片則是將該過程反過來,輸入隨機(jī)噪聲,經(jīng)過反卷積層構(gòu)建圖像信息,最終生成圖片。
為加快改進(jìn)GAN訓(xùn)練過程以及生成高質(zhì)量圖片,提出對判別模型采用有監(jiān)督訓(xùn)練方法預(yù)訓(xùn)練,然后再以GAN對抗方式訓(xùn)練生成模型和更新判別模型,主要步驟如下:
以已有圖像數(shù)據(jù)為樣本數(shù)據(jù),按照有監(jiān)督方法訓(xùn)練判別模型,使用梯度下降算法更新模型參數(shù),直到模型收斂并且有良好的分類準(zhǔn)確率,讓判別模型對已有圖像的特征有足夠的敏感度。
訓(xùn)練生成模型。從噪聲分布中隨機(jī)選取一批次的樣本,然后使用梯度下降算法更新生成模型的參數(shù),訓(xùn)練50步之后保存當(dāng)前生成的圖片。
隨機(jī)從真實(shí)樣本中抽取一批次圖片與生成的圖片共同作為訓(xùn)練好的判別模型的輸入,采用梯度下降算法更新判別模型的參數(shù)。
重復(fù)步驟2和3訓(xùn)練20000步完成訓(xùn)練。
隨著產(chǎn)品批次變化,最開始為產(chǎn)品分類訓(xùn)練的模型逐漸難以適應(yīng),需要通過重新訓(xùn)練模型解決。本文基于改進(jìn)GAN和Deep Q-Learning(DQN)強(qiáng)化設(shè)計(jì)一種自動模型調(diào)整方法,可有效解決模型動態(tài)適應(yīng)性問題。
強(qiáng)化學(xué)習(xí)是處理動態(tài)問題的重要算法,基本原理如圖5所示。智能體通過動作與周圍環(huán)境進(jìn)行交互,環(huán)境會返回一個(gè)評分和產(chǎn)生新的狀態(tài)。如此循環(huán)下去,智能體與環(huán)境不斷地交互從而產(chǎn)生很多數(shù)據(jù)。強(qiáng)化學(xué)習(xí)算法利用產(chǎn)生的數(shù)據(jù)修改自身的動作策略并再與環(huán)境交互。經(jīng)過多次迭代學(xué)習(xí)后,智能體能最終學(xué)到完成相應(yīng)任務(wù)的最優(yōu)動作。DQN強(qiáng)化學(xué)習(xí)算法處理任務(wù)時(shí),通過神經(jīng)網(wǎng)絡(luò)得到Q函數(shù),然后通過訓(xùn)練不斷更新Q函數(shù)來得到最優(yōu)狀態(tài)。
圖5 強(qiáng)化學(xué)習(xí)原理圖
動態(tài)算法任務(wù)的設(shè)計(jì)是動態(tài)算法的重要基礎(chǔ),任務(wù)設(shè)計(jì)的準(zhǔn)確性直接影響后續(xù)算法的設(shè)計(jì)。由前面強(qiáng)化學(xué)習(xí)算法原理可知,任務(wù)的設(shè)計(jì)主要是循環(huán)系統(tǒng)的設(shè)計(jì),即包括智能體、環(huán)境、狀態(tài)空間、動作空間以及評分機(jī)制的循環(huán)體設(shè)計(jì)。本文根據(jù)實(shí)際情況將上述元素設(shè)計(jì)為:
智能體:改進(jìn)LeNet算法。
環(huán)境:通過GAN算法可以產(chǎn)生新標(biāo)簽樣本,同時(shí)質(zhì)檢員每天進(jìn)行現(xiàn)場抽檢和對GAN新樣本評判可以得到有標(biāo)簽新樣本。通過對比智能體的判別和新產(chǎn)生的有標(biāo)簽樣本,可以得到環(huán)境的獎勵。
狀態(tài)空間:由每一張圖片構(gòu)成的樣本空間。
動作空間:0和1,即小龍蝦的兩個(gè)類別,0代表需要自動剔除的壞質(zhì)量龍蝦,1代表需要保留的好質(zhì)量龍蝦。
評分機(jī)制:分類正確得分+1分,分類錯(cuò)誤得分-1分。
動態(tài)算法框架如圖6所示。通過智能體改進(jìn)LeNet和產(chǎn)生樣本圖片的環(huán)境不斷交互,不斷的學(xué)習(xí)并自動更新改進(jìn)LeNet的網(wǎng)絡(luò)參數(shù),直到最后得到最優(yōu)策略和最優(yōu)狀態(tài)-動作值函數(shù),此時(shí)可以獲得更優(yōu)的分類網(wǎng)絡(luò)。
圖6 動態(tài)算法框架
通過不斷增加樣本數(shù)量來模擬生產(chǎn)線上動態(tài)過程,由圖7可見。以9000張圖像為例,將它們分為三個(gè)相等的部分,為動態(tài)過程的仿真做準(zhǔn)備。隨機(jī)選擇其中一個(gè)3000張作為第一個(gè)實(shí)驗(yàn)的數(shù)據(jù)集,然后將第一個(gè)數(shù)據(jù)集與第二個(gè)數(shù)據(jù)集合并形成6000張圖像作為第二個(gè)實(shí)驗(yàn)的數(shù)據(jù)集。最后,將所有三部分?jǐn)?shù)據(jù)集合并形成9000張圖像作為第三次實(shí)驗(yàn)的數(shù)據(jù)集。沒有將數(shù)據(jù)集直接分為3000、6000和9000,而是逐漸添加圖像,可以更加準(zhǔn)確地模擬數(shù)據(jù)的逐漸增加過程。選用3000個(gè)數(shù)據(jù)增量作為一檔是因?yàn)榧僭O(shè)選取增量數(shù)太小會造成實(shí)驗(yàn)差異太小,無法準(zhǔn)確判定動態(tài)算法是否有效。
圖7 動態(tài)模擬過程圖
通過結(jié)合改進(jìn)LeNet和DQN來處理動態(tài)數(shù)據(jù)集,將圖像分類問題視為一個(gè)可以自動調(diào)整模型參數(shù)以對圖像進(jìn)行分類學(xué)習(xí)的環(huán)境。在不斷產(chǎn)生樣本的環(huán)境中,改進(jìn)LeNet任務(wù)是識別圖像內(nèi)容。一開始改進(jìn)LeNet隨機(jī)選擇對圖像進(jìn)行分類的動作,環(huán)境給改進(jìn)LeNet反饋一張圖片作為更新參數(shù)后的輸入和一個(gè)評分,分類正確得分增加1,分類錯(cuò)誤得分減1。改進(jìn)LeNet的目標(biāo)是通過不斷與環(huán)境互動來提高得分,最后當(dāng)分?jǐn)?shù)高于一定水平時(shí),改進(jìn)LeNet已經(jīng)完成了識別圖像任務(wù)。動態(tài)算法的具體步驟如圖8所示。
圖8 動態(tài)算法框架圖
步驟1:讀取圖像樣本作為輸入數(shù)據(jù)集。
步驟2:初始化容器D,該容器可以存儲模型參數(shù)和評分,可保存N條數(shù)據(jù)。
步驟3:隨機(jī)初始化改進(jìn)LeNet的權(quán)重獲得函數(shù)。
步驟4:從數(shù)據(jù)集中隨機(jī)選擇一張圖片作為此時(shí)的狀態(tài),隨機(jī)選擇動作1和0。動作1和0是好的小龍蝦圖片和壞的小龍蝦圖片對應(yīng)的標(biāo)簽。在動作下,環(huán)境向改進(jìn)LeNet返回了評分和一個(gè)狀態(tài)即下一張圖片。
步驟5:根據(jù)評分更新改進(jìn)LeNet權(quán)重參數(shù)得到一個(gè)新的改進(jìn)LeNet。
步驟6:將環(huán)境反饋的圖像輸入到新的改進(jìn)LeNet。
步驟7:重復(fù)步驟4-6,直到完成一次迭代為止。通過遍歷數(shù)據(jù)集的所有圖像,保存得分和改進(jìn)LeNet權(quán)重參數(shù)并傳遞給D。
步驟8:經(jīng)過50次迭代,D包含50套相應(yīng)的權(quán)重和評分,選擇的得分最高的改進(jìn)LeNet作為當(dāng)前最優(yōu)模型。
步驟9:使用當(dāng)前的最優(yōu)模型繼續(xù)與環(huán)境互動以產(chǎn)生新的分?jǐn)?shù)和模型參數(shù)。
步驟10:每50次迭代記錄得分,直到訓(xùn)練完成。
通過廠家測試現(xiàn)場采集的龍蝦數(shù)據(jù)集圖片樣本包含4300張圖,但是為了能夠更加準(zhǔn)確地剔除有問題的小龍蝦,4300張圖片訓(xùn)練模型是不夠的。因此本文選擇改進(jìn)GAN來生成一些小龍蝦圖片,不僅能夠減少廠家的成本而且有利于實(shí)施后續(xù)的分類檢測任務(wù)。
實(shí)驗(yàn)環(huán)境由表1可見,實(shí)驗(yàn)步驟如下:首先在已有小龍蝦圖片數(shù)據(jù)集上,對比LeNet模型改進(jìn)前后準(zhǔn)確率,驗(yàn)證改進(jìn)LeNet作為改進(jìn)GAN判別模型的可行性;然后通過對比GAN改進(jìn)前后生成小龍蝦圖片樣本的可使用率來驗(yàn)證改進(jìn)GAN的有效性;最后通過圖像分割實(shí)驗(yàn)將生成的小龍蝦圖片做處理得到可以直接用于后續(xù)分類的樣本。
表1 實(shí)驗(yàn)環(huán)境表
選擇4300張龍蝦圖片作為樣本,樣本分為兩類,一類為bads(黑蝦和受損的蝦等),另一類為goods(好的龍蝦),對應(yīng)的標(biāo)簽分別為0和1。將改進(jìn)LeNet和LeNet應(yīng)用于已有小龍蝦樣本的分類,訓(xùn)練10000步結(jié)果圖如圖9所示。相比LeNet,改進(jìn)LeNet訓(xùn)練集準(zhǔn)確率提高14%,測試集準(zhǔn)確率提高19%。GAN模型中包含一個(gè)判別模型和生成模型,兩者之間是相互競爭、相互促進(jìn)的關(guān)系,只有當(dāng)判別模型能夠準(zhǔn)確判斷圖像的真假時(shí)才能促進(jìn)生成模型生成更真實(shí)的圖片。改進(jìn)LeNet模型分類準(zhǔn)確率可達(dá)到99%,對已有小龍蝦圖像的特征有一定的分辨能力,驗(yàn)證了使用改進(jìn)LeNet模型作為判別模型的可行性。
(a) LeNet準(zhǔn)確率圖 (b)改進(jìn)LeNet準(zhǔn)確率圖圖9 準(zhǔn)確率對比圖
實(shí)驗(yàn)按類別生成對應(yīng)的樣本,而不是直接將所有的樣本進(jìn)行一次訓(xùn)練,將Goods類作為第一次實(shí)驗(yàn)樣本用來生成對應(yīng)好的龍蝦圖片,將Bads類作為第二次實(shí)驗(yàn)樣本用來生成壞的龍蝦樣本。為后續(xù)再分類節(jié)省數(shù)據(jù)整合時(shí)間。
(a)GAN生成的圖片 (b)改進(jìn)GAN生成的圖片圖10 Goods樣本結(jié)果對比圖
將GAN和改進(jìn)GAN分別生成類別為Goods的小龍蝦圖像50張圖片,每張包括64張小龍蝦樣本,生成的Good部分樣本結(jié)果對比由圖10可見。其中黑色框標(biāo)記了可用的小龍蝦圖片,GAN生成的小龍蝦樣本,可使用率為12.5%;改進(jìn)GAN生成的樣本可使用率為46.8%。
(a)GAN生成的圖片 (b) 改進(jìn)GAN生成的圖片圖11 Bad樣本結(jié)果對比圖
將GAN和改進(jìn)GAN分別用于生成壞的小龍蝦樣本,同樣生成50張圖片,每張包括64個(gè)小龍蝦樣本。生成的Bads部分樣本結(jié)果由圖11可見,GAN生成壞的小龍蝦樣本可使用率不足25%;而改進(jìn)GAN生成的樣本可使用率為57.8%,單張圖片的可使用率提高了32.8%。
后續(xù)圖像分類任務(wù)中需要小龍蝦圖像單獨(dú)成為一張圖片,因此需要將整體圖片分割,具體步驟如下。
步驟1:讀取文件夾圖片,并灰度化。
步驟2:根據(jù)全局閾值分割算法將小龍蝦與背景分開,并得到含有小龍蝦和臟污的區(qū)域。
步驟3:將區(qū)域做連通操作。
步驟4:根據(jù)面積大小選出只含有小龍蝦的區(qū)域。
步驟5:將區(qū)域從左往右,從上往下進(jìn)行排序,并記錄區(qū)域的個(gè)數(shù)number。
步驟6:設(shè)置索引i來表示小龍蝦的序號,i從1開始一直到number。當(dāng)i=1時(shí)執(zhí)行以下操作:根據(jù)序號選擇小龍蝦區(qū)域;找到該區(qū)域的中心點(diǎn)坐標(biāo);根據(jù)中心點(diǎn)坐標(biāo)生成一個(gè)矩形框;從原圖中剪切出矩形框,即剪切出單張小龍蝦。直到i=number,得到number個(gè)單張小龍蝦。
步驟7:將單張小龍蝦保存到文件夾中完成一張圖片的分割處理。
步驟8:遍歷文件夾圖片獲得所有單張圖片。
經(jīng)過篩選后GAN模型生成的總體可使用的圖片為1711張,總體可使用率為26.7%;改進(jìn)GAN模型生成的總體可使用的圖片為3125張,總體可使用率為48.8%,相比GAN模型提升了22.1%。
將改進(jìn)LeNet應(yīng)用于動態(tài)小龍蝦數(shù)據(jù)集分類問題中,三組實(shí)驗(yàn)的結(jié)果如圖12所示,其中的橫坐標(biāo)表示迭代步數(shù)、縱坐標(biāo)表示分類準(zhǔn)確率,實(shí)線表示訓(xùn)練集準(zhǔn)確率,虛線表示測試集準(zhǔn)確率。比較三組實(shí)驗(yàn),當(dāng)數(shù)據(jù)集中包含6000張圖時(shí)訓(xùn)練集和測試集的準(zhǔn)確率最高,可以達(dá)到99%左右;但是當(dāng)數(shù)據(jù)集為3000時(shí),由于樣本過少不能獲取更多的特征而導(dǎo)致測試集準(zhǔn)確率低于90%;當(dāng)數(shù)據(jù)集為9000時(shí),訓(xùn)練集和測試集準(zhǔn)確率均小于90%,無法準(zhǔn)確分類。
圖12 改進(jìn)LeNet三次實(shí)驗(yàn)的結(jié)果圖
由實(shí)驗(yàn)結(jié)果可以看出單獨(dú)使用卷積神經(jīng)網(wǎng)絡(luò)處理動態(tài)數(shù)據(jù)集分類問題時(shí),數(shù)據(jù)集中包含的圖像樣本特征變化導(dǎo)致模型適應(yīng)性差。如果使用CNN來解決動態(tài)問題即增加分類準(zhǔn)確性,則需要手動調(diào)整CNN的參數(shù)和結(jié)構(gòu),修改后的模型也許能夠同時(shí)適應(yīng)本文的3組實(shí)驗(yàn),但是不能保證能適應(yīng)后續(xù)的小龍蝦特征,且需消耗大量時(shí)間。所以需要設(shè)計(jì)自動調(diào)整參數(shù)的動態(tài)算法來適應(yīng)變化的數(shù)據(jù)集,節(jié)省調(diào)試時(shí)間,提高準(zhǔn)確率,保證生產(chǎn)效率。
為讓模型適應(yīng)產(chǎn)品的批次品質(zhì)變化,進(jìn)行了模型的參數(shù)動態(tài)調(diào)整實(shí)驗(yàn)。將上述改進(jìn)GAN實(shí)驗(yàn)中最終整合得到的9000張小龍蝦圖像樣本分成3份,每份3000張,逐漸增加樣本,第一個(gè)數(shù)據(jù)集3000張,第二個(gè)6000張,第三個(gè)9000張,并根據(jù)不同的數(shù)據(jù)集設(shè)計(jì)了相應(yīng)的訓(xùn)練迭代次數(shù)。具體的訓(xùn)練集和測試集圖像數(shù)量分布,相應(yīng)的迭代次數(shù)如表2所示。
表2 數(shù)據(jù)集分布和迭代次數(shù)
實(shí)驗(yàn)編程環(huán)境采用Keras框架,該框架比Tensorflow編程框架包含的庫少,但是編寫強(qiáng)化學(xué)習(xí)算法程序簡單,而且強(qiáng)化學(xué)習(xí)算法的程序訓(xùn)練過程緩慢,使用Keras編寫動態(tài)分類算法更簡單,更節(jié)省時(shí)間。
動態(tài)算法的三組實(shí)驗(yàn)結(jié)果如圖所示,其中橫坐標(biāo)表示迭代步數(shù),縱坐標(biāo)代表得分,紅色曲線表示訓(xùn)練集得分,虛線表示測試集得分。為了將改進(jìn)LeNet與動態(tài)算法進(jìn)行比較,首先需要將得分轉(zhuǎn)換為準(zhǔn)確率,轉(zhuǎn)換方法如公式(1)所示,準(zhǔn)確率等于最終分?jǐn)?shù)除以數(shù)據(jù)集包含的圖像樣本數(shù)量。
圖13 動態(tài)算法三次實(shí)驗(yàn)的結(jié)果圖
結(jié)合表2中訓(xùn)練集和測試集的分布,以及圖9中得分,通過公式(1)計(jì)算出動態(tài)分類算法的準(zhǔn)確率如表3所示。
表3 動態(tài)算法準(zhǔn)確率結(jié)果
準(zhǔn)確率=最終分?jǐn)?shù)/數(shù)據(jù)集數(shù)量
(1)
由表3可知動態(tài)分類算法的三組實(shí)驗(yàn)訓(xùn)練集和測試集準(zhǔn)確率均高于為99%,與單獨(dú)使用卷積神經(jīng)網(wǎng)絡(luò)相比,動態(tài)分類算法在數(shù)據(jù)集為3000時(shí),測試集準(zhǔn)確率高出10%左右,當(dāng)數(shù)據(jù)集為9000時(shí),實(shí)驗(yàn)中的訓(xùn)練集和測試集準(zhǔn)確率提高了約10%,驗(yàn)證了動態(tài)分類算法在處理動態(tài)數(shù)據(jù)集分類問題時(shí)的優(yōu)勢。 在三組動態(tài)算法實(shí)驗(yàn)中,訓(xùn)練集準(zhǔn)確率之間的差異不超過0.2%,測試集準(zhǔn)確率之間的差異不超過0.3%,驗(yàn)證了動態(tài)算法處理在動態(tài)的數(shù)據(jù)集時(shí)的穩(wěn)定性。
從實(shí)驗(yàn)結(jié)果可以看出,動態(tài)分類算法通過調(diào)整參數(shù)自適應(yīng)數(shù)據(jù)集變化,能適應(yīng)生產(chǎn)線上不斷變化的產(chǎn)品品質(zhì)變化,最終獲得最優(yōu)模型和最高分?jǐn)?shù)。相比單獨(dú)使用卷積神經(jīng)網(wǎng)絡(luò)分類動態(tài)數(shù)據(jù)集,準(zhǔn)確率更高、更穩(wěn)定。
本文在融合LeNet及多種算法基礎(chǔ)上,提出了一種GAN改進(jìn)與分類動態(tài)訓(xùn)練算法,實(shí)驗(yàn)證明,通過GAN算法改進(jìn)能有效增加樣本數(shù)量。提出的分類動態(tài)訓(xùn)練算法能有效減少生產(chǎn)線產(chǎn)品批次間品質(zhì)變化造成的分類準(zhǔn)確率不穩(wěn)定問題。