王新哲,于澤沛,時 斌,包致成,錢華山,趙永俊
1(中國石油大學(華東) 計算機科學與技術學院,青島 266580)
2(青島海爾空調電子有限公司,青島 266103)
3(北京超算科技有限公司,北京 100089)
隨著信息技術的發展,各領域涌現出大量的數據碎片.然而,大數據呈現“大數據、小樣本”的問題,即數據重復性較高,某些樣本數據量較少.大數據處理方法是建立在充足數據的基礎上,小樣本數據會帶來信息不完全、不完備問題,使得算法精度較差,很難滿足實際應用要求[1].因此,我們需要通過數據生成技術生成較為接近真實數據的虛擬數據,豐富小樣本數據,從而提高大數據處理算法的準確率[2].
在實際工業領域中,機械設備的整個生命周期大多處于正常狀態,很難采集到故障數據[3].數據驅動的故障診斷方法建立在充足的數據基礎上,小樣本問題很難概括數據的整體信息,使得相關機器學習及深度學習算法精度下降[4].
在工業領域中,針對故障數據小樣本問題,最直接的方法是重新獲取更多的故障數據,常用的方法包括數據采樣和數據生成.數據采樣包括欠采樣[5-7]、過采樣[8,9].欠采樣與過采樣會造成信息的丟失或過擬合.數據生成方法包括模擬采樣[10]和生成式對抗網絡(Generative Adversarial Networks,GAN)[11].模擬采樣[10]通過獲取數據的概率分布p(x),并通過計算機模擬隨機采樣過程獲取生成數據.該類方法需要獲取較為準確的數據概率分布,構造合理的轉移概率函數,且不能保證生成的數據多樣性.而基于深度學習方法的生成式對抗網絡可以有效解決概率分布函數的獲取問題,降低了數據生成難度.然而GAN 需要大量的數據支持,小樣本數據不足以支撐GAN的訓練,且GAN 方法學習速度較慢.
近年來,小樣本學習[12-15]取得了長足發展.小樣本學習試圖在有限樣本條件下實現分類或擬合任務,其中基于優化方法的元學習[14]旨在學習一組元分類器,并在新任務上微調實現較好的性能.文獻[15]提出了一種模型無關的元學習(Model-Agnostic Meta-Learning,MAML)方法,該算法能在面對新任務時,僅通過少步迭代更新就可取得較好的性能.
因此,本文將元學習和生成式對抗網絡相結合,提出一種基于元學習的生成式對抗網絡(Generative Adversarial Networks based on Meta-Learning,ML-GAN).MLGAN 利用元學習訓練方式搜尋最優初始化參數得到一個較好的初始化模型,而后在初始化模型的基礎上通過少量某種類別樣本快速學習當前任務的數據特性,獲得能夠生成某種類別數據的特異性GAN.ML-GAN可以有效減少對樣本的需求量,同時通過微調還能增強生成數據的多樣性,實現了對于小樣本數據的生成擴充.
受益于計算設備的發展,學習觀測樣本的概率密度并隨機生成新樣本的生成式對抗網絡成為熱點.文獻[16]首次提出生成式對抗網絡,但該方法采用KL散度容易導致模式崩潰.文獻[17]針對模式崩潰問題,將Wasserstein 距離代替KL 散度,并采用Lipschitz約束限制梯度,基本解決了模式崩潰問題.文獻[18]與文獻[19]提出了CGAN 與info-GAN,該方法可以控制數據生成的類別,但需要大量的數據支撐.
在工業領域數據生成中,文獻[20] 提出MADGAN 數據增強技術用以生成工業水處理數據,MADGAN 通過優化噪聲生成較為真實的數據,但該方法僅能保證最優噪聲附近的數據生成質量,小樣本數據不足以支撐整個噪聲空間的訓練,難以保證除最優噪聲之外的噪聲的數據生成質量.文獻[21]利用先驗知識將正常齒輪箱運轉數據轉化為粗故障數據,而后利用GAN 將粗故障數據轉化為較為真實的故障數據,但該方法沒有充分利用噪聲的隨機性,生成的故障數據多樣性較差.文獻[22]提出一種將GAN和疊加去噪自編碼器相結合的方法,該方法在小樣本情況下具有良好的生成效果,但該方法無法控制生成的數據類別.文獻[23]利用生成式對抗網絡進行多場景電力數據生成,但該方法需要大量數據支持,不適用于小樣本數據.
針對GAN 方法不適用于小樣本數據的問題,本文將元學習學會學習特性引入到生成式對抗網絡中,通過元學習的訓練策略得到最優初始化模型,并通過元學習的基學習器快速學習,從而實現小樣本的數據生成工作.
MAML是一種與模型無關的元學習算法,它利用元任務之間的內在知識優化網絡初始化參數,使得網絡在新任務上僅需通過較少樣本和少步梯度更新便可取得較好的性能,達到快速學習的效果.MAML 網絡包括多個基學習器和一個元學習器,其學習策略是每個基學習器學習當前元任務,得到一組適合當前任務的模型參數,元學習器學習多個基學習器之間的通用知識策略,得到一組適合所有任務的模型通用初始化參數.
MAML 網絡模型記為f,并由參數θ 進行描述,即fθ.MAML 任務分布記為P(T),隨機選取batch_size個元任務Ti用于基學習器的學習,元任務Ti由支持集和查詢集組成Ti=每個基學習器在元任務的支持集上進行梯度更新,假設梯度更新一次,其梯度為其中L為損失函數,更新后的網絡參數記為θi′:

當多個基學習器學習完成后,元學習器在基學習器的基礎上進行再次學習,獲取一組適用于所有元任務的初始化參數:

式(2)中,α與 β為學習率.
GAN的基本思想源自博弈論的二人零和博弈,其模型結構如圖1所示,由一個生成器G和一個判別器D構成,其中,生成器G將從噪聲分布采樣得到的數據z映射到樣本數據空間中,判別器D則對生成數據G(z)和真實數據x進行判斷.兩模型對抗訓練,當判別器無法準確判斷輸入的真偽時,即達到納什平衡,此時可認為生成器學習到了原始數據的分布.

圖1 GAN 模型結構圖
GAN的目標函數:

式(3)中p(x)表示真是樣本分布,p(z)表示噪聲分布.其中,判別器的目標函數為:

生成器的目標函數為:

數據生成模型GAN 能夠以無監督的形式實現訓練,然而該類方法需要大量的數據支持;MAML 算法適用于小樣本學習,能夠學習到各項元任務之間可轉移的內在表征.因此,本文將元學習引入到GAN 中,提出一種適用于小樣本問題的數據生成算法ML-GAN.
ML-GAN 通過不斷優化搜尋最優的初始化參數,以期在新任務(小樣本數據生成任務)上快速收斂,得到針對新任務的特異性GAN,實現對于小樣本數據的生成擴充.ML-GAN 模型由生成器G與鑒別器D組成,并以基學習器與元學習器交替訓練的方法進行.實際上,ML-GAN是希望找到一組對于任務變化敏感的GAN 模型參數,使得參數的微小變化就可以很大程度上提高新任務的GAN 模型的表現性能.
本章節將在3.1 節描述ML-GAN的任務設置,在3.2 節與3.3 節描述基學習器與元學習器的訓練流程,并在3.4 節描述ML-GAN 整體訓練流程.
ML-GAN 以任務為訓練數據進行訓練,每一組GAN 任務Ti都由支持集Tis和查詢集Tiq構成,支持集、查詢集均由真實數據與生成數據組成:

其中,真實數據來自真實數據集,即x∈X,生成數據由生成器生成,其噪聲來自噪聲分布,即z∈Z.
基學習器繼承自元學習器,其模型由生成器G和鑒別器D構成.生成器是噪聲z到數據x的映射,判別器是數據x到真假類別的映射.生成器參數為θG,生成器表示為GθG,鑒別器參數為θD,鑒別器表示為DθD.
基學習器的生成器和鑒別器在一組元任務Ti={Tis,Tiq}上訓練,鑒別器目標是能夠對輸入數據進行真假判別,其目標函數為:

生成器目標是在有限的訓練樣本和迭代輪次內生成盡量真實的數據,其目標函數為:

基學習器會根據當前任務損失進行生成器和鑒別器的迭代更新,生成器參數會由 θG更新為,鑒別器模型參數會由θD更新為.假設模型在新任務上進行k次梯度更新,以一次梯度更新為例:

上述參數更新公式中,αD與 αG分別為學習率.
基學習器僅能學習到當前任務的數據特性,不適合其他任務.元學習器的目的是平衡各基學習器的學習效果,找到適合于所有任務的最優初始化模型,從而在面對新任務時僅需少量數據便可取得較好的生成效果.
元學習器在查詢集Tiq上通過各元任務最優參數對應的梯度更新初始化參數,其判別器目標函數為:

生成器目標函數為:


ML-GAN 以任務為數據進行學習,其中基學習器重點學習當前任務的數據特性,其目標是生成接近于當前任務的真實數據;元學習器學習基學習器的學習結果,其目標是找到適合所有任務的最優初始化模型.兩者在訓練時交替進行,基學習器繼承元學習器,并利用任務數據進行梯度更新;元學習器通過各基學習器的最優參數對應的梯度更新初始化參數,平衡各基學習器的學習效果.
ML-GAN 算法流程如算法1.

算法1.ML-GAN 算法1) 隨機初始化 ML-GAN的元學習器;2) while not done do:3)初始化基學習器參數為元學習器;Ti 4)隨機選取任務 ;Ti 5)for all do:TiLT siD 6)計算任務的鑒別器損失 ;TiLT siG 7)計算任務的生成器損失 ;θT siG θT siD 8)更新基學習器參數和;9)end for∑Ti~P(T)(θT siD )10) 計算所有任務的鑒別器損失 ;LTqiD(θT siG )11) 計算所有任務的生成器損失 ;∑LTq iG 12) 更新元學習器參數和;13)end while Ti~P(T)θD θG
ML-GAN 整體訓練流程如圖2所示,首先初始化元學習器,并利用元學習器的模型參數初始化各基學習器模型參數.各基學習器利用各自任務支持集的數據進行GAN的對抗訓練更新,其損失函數和梯度更新公式如式(7)、式(8)和式(9)所示.由于更新后的基學習器僅適合于當前任務,具有較強的特異性,不適合作為初始化模型,因此再利用式(10)和式(11)在查詢集上計算損失,并通過式(12)更新元學習器參數.

圖2 ML-GAN 算法流程圖
本章節將對ML-GAN 進行深入研究,詳細描述其基學習器損失和元學習器損失的變化形式.為了展示ML-GAN 優異的生成性能,本文通過海爾水冷磁懸浮數據進行每種故障的數據生成實驗,并利用生成數據與真實數據進行故障分類器的訓練,驗證生成數據的有效性.
由第2 節可知,ML-GAN 算法得到的是一個最優初始化模型,還需要通過基學習器的快速學習微調模型,獲取到生成某種特定類別數據的特異性GAN.本文在4.2 節與4.3 節詳細闡述ML-GAN 最優初始化模型和特異性模型的訓練過程.
實驗數據集選取自海爾水冷磁懸浮機組數據.海爾水冷磁懸浮機組數據包括蒸發器側進水溫度(℃)、蒸發器側出水溫度(℃)、冷凝器側進水溫度(℃)、冷凝器側出水溫度(℃),壓縮機吸氣溫度(℃)、壓縮機排氣溫度(℃)、壓縮機負荷(%)、故障類別等19 維向量.經過PCA 降維[24]分析,由表1結果可知前四維數據蘊含的信息量約為91%,故選取前四維及故障類作為數據集.海爾數據共包含17 327 條,由表2可知,故障數據類型共占6.3%,其中電機軸承故障數據最少,為121 條數據.

表1 前8 維度主成分占比(%)

表2 故障類型數據比例(%)
ML-GAN 超參數設置如下,內部學習率αD=0.001與αG=0.001,外部循環學習率為βD=0.01與 βG=0.01,序列長度SeqLen=30,支持集數據條數n=10,查詢集數據長度q=5,任務數meta_batch=4.由于ML-GAN 網絡是通過對抗方式進行訓練,基學習器循環迭代次數不宜設置較低,本實驗設置基學習器循環迭代次數inner_step=10.
ML-GAN 以任務形式訓練,每條任務包含支持集數據n條和查詢集數據q條,每條數據序列長度SeqLen=30.基學習器訓練時,利用隨機噪聲與支持集數據進行GAN的對抗訓練,其損失函數與梯度更新公式為式(7)、式(8)和式(9).基學習器僅適用于當前任務,具有特異性,還需進行元學習器優化平衡各基學習器學習效果.在本實驗中,元學習器訓練時利用meta_batch 項任務的q條查詢集數據進行訓練,其損失函數與梯度更新公式為式(10)、式(11)和式(12).
ML-GAN 基學習器損失是針對于特定任務的效果評價,基學習器迭代更新,目標是盡可能生成接近支持集的生成數據.如圖3(a)所示,基學習器進行快速學習,鑒別器損失快速下降,生成器損失快速上升,生成器會根據鑒別器損失快速學習到較為真實的數據形式,而后生成器損失下降判別器損失上升,呈現對抗狀態.
如圖3(b)所示,在訓練過程中,基學習器中出現了幾次生成器與鑒別器損失一起下降的現象,這是由于元學習器的前幾次訓練任務與當前任務類型的數據不同,其鑒別器與生成器具有一定的特定性,即鑒別器與生成器適合鑒別和生成之前任務的訓練數據,而當面對不同類型數據任務時,鑒別器將真實數據判斷為假可能性較大.由式(7)可知,鑒別器對于真實數據的鑒別損失較大,對于生成數據的鑒別損失較小,因此鑒別器損失初始值較大,由式(8)可知生成器生成數據不貼近當前任務類型數據,因此生成器損失值也較大.而當經過訓練之后,生成器與鑒別器性能均得到提升,鑒別器能夠有效識別真實數據,因此真實數據的鑒別損失下降幅度較大,而當前任務開始時,生成器生成數據較假,因此它在鑒別器的指導下生成性能提升,生成器損失繼續下降.因此,鑒別器與生成器損失整體呈現出下降狀態.

圖3 ML-GAN 基學習器損失圖
為了更詳細描述圖3(b)損失變化現象,圖4形象展示了基學習器學習邊界變化狀態,當前任務數據為數據類型3.開始時,元學習器之前幾次的訓練任務為數據類型1 與2,如圖4(a)所示基學習器邊界囊括了數據類型1 與2的邊界.在此狀態下,當任務數據類型為3 時,鑒別器將真實數據大部分判斷為假,生成數據部分判斷為假.在經過訓練后,基學習器邊接變化到圖4(b)狀態,此時真實數據少部分鑒別為假,生成數據開始貼近數據類型3.到訓練到圖4(c)時,基學習器邊接開始接近數據類型3,之后的訓練會呈現對抗狀態,圖3(b)的1、3 與4 損失圖在迭代次數為8 之后出現對抗狀態.這種現象之所以與常見GAN不同,是因為常見GAN不會出現將真實數據全部鑒別為假.而本文這種情況的出現也是由于前幾次迭代更新使用的是除數據類型3 以外的數據.

圖4 ML-GAN 基學習器邊界變化示意圖
元學習器損失變化如圖5所示,ML-GAN的生成器與鑒別器分別呈現出對抗的狀態,震蕩較大,在經過一段時間訓練后,震蕩逐漸變小,生成器與鑒別器損失值開始收斂.此時,鑒別器與生成器具有較好的性能,能夠適應與多項任務,適合作為最優初始化模型.

圖5 ML-GAN 元學習器損失圖
ML-GAN 訓練的目標是找到適合與所有任務的最優初始化模型,4.2 節ML-GAN 訓練實驗已經找到一組最優參數作為初始化模型.本節實驗目的是在4.2 節實驗的最優初始化模型基礎上,利用ML-GAN的基學習器特異性訓練過程,通過少量數據和少步迭代獲取到多個生成不同類別數據的GAN.
基學習器訓練超參數如下,基學習器學習率αD=0.001與 αG=0.001,序列長度SeqLen=30,支持集數據條數n=30,任務數meta_batch=7,基學習器迭代次數inner_step=20.每個任務分別對應一種故障類型數據,即7 個任務會對應7 個故障類型得到7 種特異性GAN.
在數據快速生成實驗中,首先導入4.2 節實驗中的最優初始化模型作為元學習器,而后用元學習器初始化7 個基學習器,對應7 個故障類別.每個基學習器模型參數相同,不同的是輸入數據.7 個基學習器對應7 中故障類別的數據輸入,經過inner_step次迭代快速迭代更新,獲得7 個生成器.而后利用7 個生成器生成故障數據.
以基學習器1和基學習器2為例,其輸入的真實數據與生成數據如圖6所示,從上到下依次為吸氣壓力預警故障的真實數據與生成數據和電機軸承報警故障的真實數據與生成數據.生成數據基本貼近輸入數據,其變化趨勢也基本與真實數據相接近,故障類別與真實數據故障類型基本相同,表明ML-GAN 模型基學習器僅需要使用30 條支持集數據微調就可達到較好的數據生成效果,降低了GAN 模型對于數據集大小的需求,實現了小樣本數據的快速生成.

圖6 ML-GAN 快速生成實驗
為了驗證第3 節生成數據的有效性,本節實驗將第3 節生成的故障數據與真實數據進行混合,并利用實驗室已有模型進行訓練,驗證生成數據能夠提高分類器的分類性能.
實驗室已有分類器采用的是lightGBM,其超參數設置如下,學習率l=0.001,最大樹深度max_depth=8,最大葉子數num_leaves=64,bagging_fraction=0.8,lambda_l1=0.1,lambda_l2=0.2.訓練集中,每類數據分別有Num=100 條,序列長度SeqLen=30 包含有真實數據和生成數據.真實數據和生成數據的混合比例設置為0:1、3:7、5:5、7:3、1:0.
實驗結果如表3所示,由實驗結果可知,當正常數據與生成數據混合比例為7:3 時,分類準確率最高,較僅采用正常數據高2.7%.當混合比例超過3:7 時,分類準確率開始下降.僅采用生成數據時作為訓練數據的分類準確率最低為72.7%,說明生成數據不具有較為準確的分類邊界,但生成數據依然學習到了每種故障的數據特性.由實驗結果可知,少量生成數據可以提高分類準確率,當生成數據較多時將導致分類性能下降,這是由于生成數據不具有較為明顯的分類邊界,少量生成數據可以作為分類邊界的補充,大量生成數據將會模糊分類邊界,致使分類性能下降.

表3 LightGBM 分類準確率(%)
本文提出一種基于元學習的小樣本數據生成算法ML-GAN,該算法目標是在各數據生成任務上訓練一個通用的GAN 模型,確定模型最優初始化參數.由于訓練結果是一組最優初始化參數,因此可以利用少量樣本數據和較少的迭代次數微調通用模型,自適應輸入數據,從而獲取多個特異性生成器,增強數據的多樣性.該算法有效降低了GAN對數據集大小的要求,實現了小樣本數據的高質量生成.
ML-GAN 方法還存在著一些不足之處,例如噪聲的選擇與數據生成質量密切相關,又例如前后時間步數據的因果關系影響.未來我們將會對ML-GAN 進行下一步的優化工作,引入故障特征的時序性,控制噪聲生成更為真實的數據.