上一節(jié)課,我們講解了用深度學(xué)習(xí)進(jìn)行工區(qū)地震相預(yù)測(cè)的全過程。
但相比真實(shí)工程項(xiàng)目,前面使用的算法比較簡(jiǎn)單,處理的結(jié)果也太讓人滿意。
這次課程我們介紹幾個(gè)真實(shí)項(xiàng)目中常用的優(yōu)化方法,進(jìn)一步提升深度學(xué)習(xí)處理的能力。
01 項(xiàng)目概況
我們還是使用上節(jié)課的項(xiàng)目,使用荷蘭F3的數(shù)據(jù)。
下面介紹一下項(xiàng)目的地質(zhì)情況。項(xiàng)目工區(qū)在荷蘭北海區(qū)域,富含碳?xì)浠衔锍练e物。北海大陸架位于荷蘭海岸附近,被劃分為不同的地理區(qū)域,用不同字母來(lái)描述;在這些區(qū)域內(nèi)是標(biāo)有數(shù)字的較小區(qū)域。其中一個(gè)區(qū)域是尺寸為16km x 24km的矩形,稱為F3區(qū)塊,見圖。
根據(jù)區(qū)塊的層位和斷層解釋情況,對(duì)該區(qū)塊進(jìn)行了三維建模,最終的3D地質(zhì)模型如圖所示:
基本網(wǎng)絡(luò)模型情況
整個(gè)網(wǎng)絡(luò)的基本架構(gòu)是一個(gè)類似自編碼的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。其中編碼部分使用了卷積層Conv2d、批正則化層BatchNorm2d,激活函數(shù)Relu,2 2的最大池化層MaxPool2d。解碼部分使用了反卷積ConvTranspose2d,批正則化層BatchNorm2d,激活函數(shù)Relu,2 2的上采樣層MaxUnpool2d。
上節(jié)課使用的是Keras框架,這種框架使用簡(jiǎn)單,容易理解,方便快速上手運(yùn)行。但本節(jié)課選用了Pytorch深度學(xué)習(xí)架構(gòu)。Pytorch對(duì)比Keras要繁雜一些,但是在深入到網(wǎng)絡(luò)更細(xì)粒度的研究時(shí),如網(wǎng)絡(luò)調(diào)試、非標(biāo)準(zhǔn)結(jié)構(gòu)編寫等,Pytorch成為了更好的選擇。
另外,在大規(guī)模數(shù)據(jù)運(yùn)算場(chǎng)景下,GPU運(yùn)行是必不可少的。本程序強(qiáng)烈建議在GPU環(huán)境下運(yùn)行,如果使用CPU運(yùn)行,漫長(zhǎng)的訓(xùn)練過程會(huì)讓你失去耐心。比如本次實(shí)驗(yàn)運(yùn)行,如果使用GPU的話可能需要1天,但換為CPU至少需要1個(gè)月。建議大家配置好顯卡的CUDA驅(qū)動(dòng)后,下載安裝GPU版本的Pytorch庫(kù)文件來(lái)運(yùn)行。
02 武器1,數(shù)據(jù)增強(qiáng)
數(shù)據(jù)增強(qiáng)是一種人為增加訓(xùn)練集復(fù)雜性的技術(shù),有助于網(wǎng)絡(luò)更好地泛化測(cè)試數(shù)據(jù)。當(dāng)使用有限的訓(xùn)練數(shù)據(jù)訓(xùn)練大型網(wǎng)絡(luò)時(shí),這招非常有用。
我們使用簡(jiǎn)單的增強(qiáng)方法,包括將小塊數(shù)據(jù)隨機(jī)旋轉(zhuǎn)一定角度,進(jìn)行水平或垂直隨機(jī)翻轉(zhuǎn),添加高斯噪聲、拉伸、改變尺寸等方法。
使用數(shù)據(jù)增強(qiáng)方法,對(duì)于小尺寸數(shù)據(jù)(比如尺寸在128以下的數(shù)據(jù))的訓(xùn)練集尤其有效。經(jīng)過統(tǒng)計(jì)分析,對(duì)復(fù)雜模型的精度提升在10%以上。
數(shù)據(jù)增強(qiáng)3個(gè)常用方法的程序如下所示:
比如旋轉(zhuǎn):
水平翻轉(zhuǎn):
增加隨機(jī)噪聲:
03 武器2,網(wǎng)絡(luò)跳躍
對(duì)于神經(jīng)網(wǎng)絡(luò)模型,添加跳過連接可以改善結(jié)果,并加快訓(xùn)練速度。
在深度神經(jīng)網(wǎng)絡(luò)中,某一層網(wǎng)絡(luò)層的輸出通常作為輸入傳遞給網(wǎng)絡(luò)中的下一層。跳過連接允許將網(wǎng)絡(luò)層的輸出作為輸入傳遞到網(wǎng)絡(luò)后面的層,從而跳過中間層。這些連接是通過直接將反褶積網(wǎng)絡(luò)編碼器部分中各層的輸出,添加到解碼器中相應(yīng)層的輸入來(lái)實(shí)現(xiàn)的。跳過連接通過為計(jì)算梯度傳播到網(wǎng)絡(luò)的較低層提供“快捷方式”,幫助網(wǎng)絡(luò)克服消失梯度問題。
網(wǎng)絡(luò)跳躍在基于小塊的模型中提升效果尤其明顯。經(jīng)過統(tǒng)計(jì),在基于小塊的模型中,添加跳過連接可提高識(shí)別精度約1-2%。
更明顯的效果是這個(gè)方法還可以加快訓(xùn)練過程。使用跳過連接模型的收斂速度是基本模型的四倍。
主要的代碼是在建立網(wǎng)絡(luò)運(yùn)行流程中進(jìn)行了改造。通常情況網(wǎng)絡(luò)傳輸代碼是這樣的:
增了網(wǎng)絡(luò)跳躍的代碼后,是這樣的:
04 武器3,基于截面訓(xùn)練
傳統(tǒng)構(gòu)造訓(xùn)練集都會(huì)把大的訓(xùn)練數(shù)據(jù)切割為小塊,對(duì)于非常大的地震體數(shù)據(jù),這種方法比使用整個(gè)剖面進(jìn)行訓(xùn)練更可行。切割小塊數(shù)據(jù)的好處是對(duì)內(nèi)存壓力比較小,缺點(diǎn)是訓(xùn)練數(shù)量較多,耗時(shí)較久,數(shù)據(jù)多樣性容易缺乏。
另外一種訓(xùn)練方式是基于截面的訓(xùn)練。基于截面的訓(xùn)練方式是使用整個(gè)數(shù)據(jù)體的截面進(jìn)行訓(xùn)練。
這種方法對(duì)于儲(chǔ)層預(yù)測(cè)的優(yōu)點(diǎn)有兩個(gè)。
首先,由于訓(xùn)練數(shù)據(jù)是一個(gè)完整的剖面,模型可以很容易地了解不同巖石地層單元之間的關(guān)系,并且在標(biāo)記剖面時(shí)可以考慮深度信息。
其次,同時(shí)訓(xùn)練和測(cè)試整個(gè)剖面意味著可以非??焖俚赜?xùn)練網(wǎng)絡(luò),因?yàn)橹挥邢鄬?duì)較少的地震主測(cè)線和聯(lián)絡(luò)測(cè)線。
網(wǎng)絡(luò)使用全卷積架構(gòu)的一個(gè)優(yōu)點(diǎn)是:網(wǎng)絡(luò)輸入的大小不必固定。網(wǎng)絡(luò)的輸出大小隨著其輸入大小的變化而變化。因此,不同大小的主測(cè)線和聯(lián)絡(luò)測(cè)線不會(huì)對(duì)該網(wǎng)絡(luò)的訓(xùn)練造成任何問題。
當(dāng)然,基于截面的方法對(duì)內(nèi)存要求比較高。建議切割的訓(xùn)練數(shù)據(jù)體的剖面尺寸,不要超過內(nèi)存容量的極限。
05 實(shí)驗(yàn)效果
為了檢驗(yàn)上述提出方法的先進(jìn)性,我們通過定量和定性的實(shí)驗(yàn)來(lái)展示效果。
1.定量實(shí)驗(yàn)
量化指標(biāo)選擇:
為了客觀地評(píng)估兩個(gè)測(cè)試集上不同模型的性能,我們使用以下指標(biāo):像素精度(PA)、每個(gè)類別的類別精度(CA)、所有類別的平均類別精度(MCA)以及聯(lián)合上的頻率加權(quán)交叉(FWIU)。
以上指標(biāo)是來(lái)源于計(jì)算機(jī)視覺文獻(xiàn)中常用的一組評(píng)估指標(biāo)。如果我們將標(biāo)簽定義屬于i類的像素集表示為Gi,將實(shí)際計(jì)算結(jié)果中屬于i類的像素集表示為Fi。然后,實(shí)際計(jì)算結(jié)果中正確分類的像素集是Gi Fi。我們用|.|來(lái)表示一個(gè)集合中元素的數(shù)目。現(xiàn)在,我們可以定義以下指標(biāo):
像素精度 (PA)是所有類別中正確分類的像素百分比。
每個(gè)類別的類別精度 (CAi):是在i類中正確分類的像素百分比。
所有類別的平均類別精度 (MCA):所有類別的CA平均值。nc是類別的數(shù)量。
并集上的交點(diǎn)(IUi)是定義為Gi和Fi的交集的元素?cái)?shù)與其并集的元素?cái)?shù)之和:
該參數(shù)度量了兩個(gè)集合之間的重疊,當(dāng)且僅當(dāng)所有像素都正確分類時(shí),該度量應(yīng)為1。此外,當(dāng)我們對(duì)所有類別的IU求平均值時(shí),我們就得到了并集的平均交點(diǎn)(平均IU)。
為了防止這個(gè)指標(biāo)對(duì)小類過于敏感,通常會(huì)根據(jù)每個(gè)類的大小來(lái)衡量它們。得到的度量稱為聯(lián)合上的頻率加權(quán)交點(diǎn)(FWIU)。
下表展示了在兩個(gè)測(cè)試集上測(cè)試的所有模型的量化指標(biāo)結(jié)果。
綜合各類指標(biāo)來(lái)看,基于截面和網(wǎng)絡(luò)跳躍的方法取得了較好的效果。
2.定性實(shí)驗(yàn)
接下來(lái)通過圖片來(lái)觀察模型識(shí)別的精度。我們構(gòu)建了來(lái)自測(cè)試集#1的主測(cè)線200線上不同模型的識(shí)別結(jié)果。
同樣可以明顯地看出來(lái),基于截面和網(wǎng)絡(luò)跳躍的方法取得了最好的識(shí)別效果。
這次課程通過真實(shí)的工程案例,給大家介紹了3個(gè)比較實(shí)用的武器,相信有助于大家在實(shí)際工程項(xiàng)目中更好地發(fā)揮。如果對(duì)程序感興趣,歡迎聯(lián)系我交流,再見。
相關(guān)閱讀:
如何在地震勘探研究更上一層樓?帶你一起深度學(xué)習(xí)識(shí)別斷層
怎樣輕松入門地震勘探研究:先從地震數(shù)據(jù)處理開始
深度學(xué)習(xí)地震去噪實(shí)戰(zhàn):教你如何從0開啟地震深度學(xué)習(xí)科研之路