黃麗婷
(泉州信息工程學(xué)院軟件學(xué)院,福建 泉州 326000)
深度學(xué)習(xí)經(jīng)歷長(zhǎng)時(shí)間的發(fā)展而孕育出各種各樣的人工神經(jīng)網(wǎng)絡(luò)技術(shù)[1]。就像人類(lèi)要想成為一個(gè)好的決策者可以通過(guò)經(jīng)驗(yàn)進(jìn)行學(xué)習(xí),人工神經(jīng)網(wǎng)絡(luò)也可以通過(guò)對(duì)數(shù)據(jù)的學(xué)習(xí)而成為一個(gè)好的分類(lèi)器。
在深度學(xué)習(xí)中,雖然人工神經(jīng)網(wǎng)絡(luò)看起來(lái)很復(fù)雜,其節(jié)點(diǎn)、層數(shù)和參數(shù)的數(shù)量繁多,但神經(jīng)網(wǎng)絡(luò)的核心組件只有層、模型、損失函數(shù)和優(yōu)化器這四個(gè)部分。此外,在深度學(xué)習(xí)實(shí)際項(xiàng)目中,為了讓人工神經(jīng)網(wǎng)絡(luò)模擬人類(lèi)的學(xué)習(xí)行為,需要提供大量數(shù)據(jù)樣本。在此之前,還需要對(duì)數(shù)據(jù)樣本進(jìn)行預(yù)處理工作,這一系列的前置工作必不可缺[2]。
深度學(xué)習(xí)領(lǐng)域的技術(shù)框架主要為Keras和PyTorch,其中Keras是Python中的高級(jí)深度神經(jīng)網(wǎng)絡(luò)API,它基于Tensorflow、CNTK或Theano框架運(yùn)行[3]。而另一種主流的深度學(xué)習(xí)框架Pytorch雖然晚于Keras出現(xiàn),但其發(fā)展十分迅速。PyTorch 1.0版本不但優(yōu)化了原有內(nèi)容,并且整合了Caffe2而成為十分熱門(mén)的深度學(xué)習(xí)框架[4]。
近年來(lái),深度學(xué)習(xí)中的各類(lèi)人工神經(jīng)網(wǎng)絡(luò)模型已被大規(guī)模應(yīng)用于人臉檢測(cè)、物體檢測(cè)、語(yǔ)音識(shí)別、機(jī)器翻譯、自動(dòng)駕駛等各種各樣復(fù)雜的任務(wù)[1],而深度學(xué)習(xí)在醫(yī)療領(lǐng)域的應(yīng)用也是日新月異。隨著可用于機(jī)器學(xué)習(xí)的醫(yī)療領(lǐng)域數(shù)據(jù)(如WHO全球衛(wèi)生觀察站數(shù)據(jù))被大量公開(kāi)于網(wǎng)絡(luò),大量醫(yī)療數(shù)據(jù)都可以通過(guò)網(wǎng)絡(luò)下載而獲取,這為醫(yī)療領(lǐng)域的深度學(xué)習(xí)模型研究開(kāi)發(fā)提供了必要的大數(shù)據(jù)基礎(chǔ)。
在對(duì)醫(yī)學(xué)數(shù)據(jù)分析和疾病的識(shí)別與預(yù)測(cè)上,深度學(xué)習(xí)的計(jì)算模型也具有十分重要的應(yīng)用意義,例如:對(duì)于骨質(zhì)增生、椎間盤(pán)突出、脊椎滑脫等具有大量患者的骨科疾病,深度學(xué)習(xí)的計(jì)算模型可以為這些疾病的分類(lèi)、識(shí)別和預(yù)測(cè)提供高效的參考信息。
機(jī)器學(xué)習(xí)中的人工神經(jīng)網(wǎng)絡(luò)(ANN)是模仿人腦的生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來(lái)進(jìn)行構(gòu)建,它具有節(jié)點(diǎn)且節(jié)點(diǎn)間具有內(nèi)部連接的計(jì)算網(wǎng)絡(luò)。其中的節(jié)點(diǎn)被編程為具有相似于真實(shí)神經(jīng)元的表現(xiàn),因而被稱(chēng)為人工神經(jīng)元。[1]
深度學(xué)習(xí)則是在機(jī)器學(xué)習(xí)的基礎(chǔ)上建立一套更為復(fù)雜的人工神經(jīng)網(wǎng)絡(luò)模型,其中的一種經(jīng)典模型叫作前饋神經(jīng)網(wǎng)絡(luò)(feedforward neural network)[5],它可以讓計(jì)算機(jī)通過(guò)較為簡(jiǎn)單的概念來(lái)構(gòu)建復(fù)雜的模型。前饋神經(jīng)網(wǎng)絡(luò)的本質(zhì)是一種數(shù)學(xué)函數(shù),它能將一組輸入數(shù)據(jù)映射成輸出數(shù)據(jù),這樣復(fù)雜的函數(shù)是由許多較簡(jiǎn)單的函數(shù)復(fù)合而成[4]。
例如,有三個(gè)函數(shù) ,他們復(fù)合在一起形成如下函數(shù)。

式中,f(1)代表深度前饋網(wǎng)絡(luò)的輸入層;f(2)代表深度前饋網(wǎng)絡(luò)的隱藏層;f(3)代表深度前饋網(wǎng)絡(luò)的輸出層。這個(gè)例子描述了一個(gè)最簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)模型,而更為復(fù)雜的前饋神經(jīng)網(wǎng)絡(luò)往往具有多個(gè)隱藏層,這些隱藏層的維度決定了神經(jīng)網(wǎng)絡(luò)的寬度。
一個(gè)多維的前饋神經(jīng)網(wǎng)絡(luò)往往由輸入層xi、隱藏層hnj和輸出層yk構(gòu)成(其中hnj的下標(biāo)n為隱藏層數(shù)量,而下標(biāo)j為第n隱藏層的神經(jīng)元數(shù)量)。在前饋神經(jīng)網(wǎng)絡(luò)中,其隱藏層和輸出層的輸入張量都需要通過(guò)線性函數(shù)來(lái)進(jìn)行計(jì)算。對(duì)于第n隱藏層的第j個(gè)神經(jīng)元來(lái)說(shuō),假設(shè)其輸入張量的數(shù)量為i,那么其相應(yīng)的輸入線性函數(shù)f(nj)(x)如下所示。

該函數(shù)f(nj)(x)是典型的線性回歸函數(shù)[6],其中xi為輸入層張量,而wij則代表不同層神經(jīng)元之間的連接權(quán),wij也是模型需要通過(guò)訓(xùn)練來(lái)學(xué)習(xí)的參數(shù)。然而,在計(jì)算該神經(jīng)元的輸出值時(shí),前饋神經(jīng)網(wǎng)絡(luò)則采用非線性函數(shù)來(lái)進(jìn)行計(jì)算。在隱藏層和輸出層中,所有的神經(jīng)元都必須采用非線性的激活函數(shù)來(lái)計(jì)算其輸出值。例如,對(duì)于第n層隱藏層上的第j個(gè)神經(jīng)元,其激活函數(shù)可以表示為以下公式。

如該公式所示,隱藏層上的任何一個(gè)神經(jīng)元的輸入值為:f(nj)(x)與閾值θnj之間的差值,該差值將作為變量被代入激活函數(shù)中來(lái)計(jì)算其輸出值,例如,第n層隱藏層上的第j個(gè)神經(jīng)元的輸出值也正是其激活函數(shù)的計(jì)算結(jié)果。
而輸出層yk上的神經(jīng)元,采用與隱藏層神經(jīng)元類(lèi)似的算法來(lái)對(duì)其輸入值和輸出值進(jìn)行計(jì)算。就前饋神經(jīng)網(wǎng)絡(luò)的分類(lèi)器而言,輸出層神經(jīng)元的輸出值y=f(*)(x)代表著輸入層的張量通過(guò)前饋神經(jīng)網(wǎng)絡(luò)模型而被映射成某一個(gè)類(lèi)別y。
而在模型訓(xùn)練中,作為分類(lèi)器的前饋神經(jīng)網(wǎng)絡(luò)一般采用監(jiān)督學(xué)習(xí)的方式,即使用有標(biāo)簽的數(shù)據(jù)集來(lái)訓(xùn)練模型。在監(jiān)督學(xué)習(xí)的過(guò)程中,首先要設(shè)計(jì)深度學(xué)習(xí)的靜態(tài)結(jié)構(gòu),如構(gòu)建前饋神經(jīng)網(wǎng)絡(luò)模型、選擇訓(xùn)練需要的損失函數(shù)和優(yōu)化器等。在此基礎(chǔ)上,模型的訓(xùn)練還包括一系列動(dòng)態(tài)的實(shí)現(xiàn)過(guò)程,如預(yù)處理數(shù)據(jù)集、前向傳播、反向傳播和優(yōu)化模型等。
運(yùn)用前饋神經(jīng)網(wǎng)絡(luò)構(gòu)建分類(lèi)器時(shí),必須設(shè)計(jì)好以下靜態(tài)結(jié)構(gòu)。
(1)層(Layer):設(shè)計(jì)輸入層、隱藏層和輸出層的神經(jīng)元結(jié)構(gòu)。
(2)模型(Model):設(shè)計(jì)由層構(gòu)成的運(yùn)算模型,先設(shè)計(jì)好每一層的輸入線性函數(shù),也即預(yù)設(shè)連接權(quán)wij等的初始值;然后,選擇隱藏層hnj和輸出層的激活函數(shù);對(duì)于分類(lèi)器模型,softmax函數(shù)或是ReLU函數(shù)都可以作為激活函數(shù)。
(3)損失函數(shù)(Loss Function):用于計(jì)算模型的預(yù)測(cè)值與真實(shí)數(shù)據(jù)之間的誤差,如均方差函數(shù)和分類(lèi)交叉熵函數(shù);分類(lèi)器往往采用交叉熵函數(shù)計(jì)算損失;如基于N個(gè)樣本數(shù)量和M種輸出類(lèi)別,其交叉熵?fù)p失函數(shù)L如下所示。

(4)優(yōu)化器(Optimizer):使損失函數(shù)誤差值最小化的算法,好的優(yōu)化器能迅速通過(guò)損失函數(shù)學(xué)習(xí)到適合的連接權(quán)w 和閾值θ ;常用的優(yōu)化器有隨機(jī)梯度下降算法(SGD)和自適應(yīng)優(yōu)化算法等[8]。
在實(shí)現(xiàn)前饋神經(jīng)網(wǎng)絡(luò)模型的過(guò)程中,還必須包括以下執(zhí)行步驟。
(1)預(yù)處理數(shù)據(jù)(Preprocess Data):載入相關(guān)數(shù)據(jù)集,根據(jù)評(píng)估方法對(duì)數(shù)據(jù)集進(jìn)行劃分,例如根據(jù)留出法(Holdout)將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。
(2)定義模型(Define Model):根據(jù)前饋神經(jīng)網(wǎng)絡(luò)的靜態(tài)結(jié)構(gòu)來(lái)逐層定義神經(jīng)元數(shù)量、激活函數(shù),以及輸出層神經(jīng)元對(duì)應(yīng)的預(yù)測(cè)分類(lèi)標(biāo)簽。
(3)構(gòu)建/編譯模型(Compile Model):根據(jù)所定義的模型,初始化連接權(quán)值,并指定損失函數(shù)、優(yōu)化器和評(píng)估度量。
(4)前向傳播(Forward Propagation):在將輸入值xi運(yùn)算成輸出值y 的過(guò)程中,數(shù)據(jù)在網(wǎng)絡(luò)上向前傳送;輸入值 xi提供初始數(shù)據(jù),并通過(guò)模型層層傳遞,經(jīng)過(guò)每一層隱藏層的運(yùn)算,最終在輸出層上輸出為預(yù)測(cè)類(lèi)型y。
(5)反向傳播(Back Propagation)[9]:也被稱(chēng)為誤差逆?zhèn)鞑ィ侵笇⑤敵鲋档恼`差反向傳遞給隱藏層的神經(jīng)元,這些誤差數(shù)據(jù)可以通過(guò)優(yōu)化器來(lái)幫助優(yōu)化隱藏層神經(jīng)元的相關(guān)參數(shù),優(yōu)化的內(nèi)容包括模型的連接權(quán)w和閾值θ。
(6)模型評(píng)估(Model Evaluation):對(duì)于已經(jīng)完成訓(xùn)練的分類(lèi)器模型,可以使用預(yù)先設(shè)置的測(cè)試數(shù)據(jù)集來(lái)對(duì)其進(jìn)行測(cè)評(píng),以測(cè)試分類(lèi)器的準(zhǔn)確率。
(7)可視化結(jié)果(Visualization):對(duì)于神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)、訓(xùn)練過(guò)程和評(píng)估結(jié)果,使用可視化工具以圖像的形式進(jìn)行展示。
本實(shí)驗(yàn)的開(kāi)發(fā)環(huán)境如下所述。
(1)操作系統(tǒng)為macOS Catalina 10.15.6系統(tǒng)。
(2)集成開(kāi)發(fā)環(huán)境為Anaconda Navigator 1.9.12中的Spyder 4.1.5。
(3)開(kāi)發(fā)框架為基于Tensorflow 2.0的Keras深度神經(jīng)網(wǎng)絡(luò)框架。
本實(shí)驗(yàn)所采用的骨科患者生物力學(xué)特征數(shù)據(jù)集的原始數(shù)據(jù)集來(lái)自UCI ML存儲(chǔ)庫(kù)(http://archive.ics.uci.edu/ml),其后經(jīng)Kesci數(shù)據(jù)平臺(tái)整理而形成CSV格式文件。
在該數(shù)據(jù)集中,每個(gè)患者的疾病特征由如下的骨盆和腰椎的形狀和方向(每個(gè)為一列)所派生出的6個(gè)生物力學(xué)屬性表示。
(1)pelvic incidence:骨盆入射角
(2)pelvic tilt:骨盆傾斜
(3)lumbar lordosis angle:腰椎前凸角度
(4)sacral slope:骶骨傾斜角
(5)pelvic radius:盆腔半徑
(6)grade of spondylolisthesis:脊椎前移的等級(jí)
在該數(shù)據(jù)集中,每個(gè)患者的疾病數(shù)據(jù)分類(lèi)則有以下三種情況。
(1)Hernia:椎間盤(pán)突出
(2)Spondylolisthesis:脊椎前移
(3)Normal:正常
基于以上前饋神經(jīng)網(wǎng)絡(luò)的理論,本文為具有6個(gè)輸入特征數(shù)據(jù)和3個(gè)輸出分類(lèi)數(shù)據(jù)的預(yù)測(cè)分類(lèi)器設(shè)計(jì)了如圖1所示的前饋神經(jīng)網(wǎng)絡(luò)模型。

圖1 分類(lèi)器模型
在該模型中,輸入層(xi)有6個(gè)輸入神經(jīng)元,對(duì)應(yīng)骨科疾病數(shù)據(jù)集中的6個(gè)生物力學(xué)屬性;而輸出層(yk)有3個(gè)輸出神經(jīng)元,對(duì)應(yīng)骨科疾病分類(lèi)。它們之間存在3層隱藏層(hnj),這3層隱藏層分別具有8個(gè)神經(jīng)元(h11~h18)、6個(gè)神經(jīng)元(h21~h26)和4個(gè)神經(jīng)元(h31~h34)。
在該模型中,所有的初始連接權(quán)在[-1,1]的范圍內(nèi)通過(guò)正態(tài)分布初始化獲取。其隱藏層的激活函數(shù)是ReLU函數(shù)(線性整流函數(shù)),而輸出層則采用softmax函數(shù)作為激活函數(shù),它們的具體公式和輸出值范圍如表1激活函數(shù)所示。

表1 激活函數(shù)
本文將通過(guò)實(shí)驗(yàn)來(lái)對(duì)該分類(lèi)器模型進(jìn)行訓(xùn)練,在實(shí)驗(yàn)中,將采用不同的優(yōu)化器來(lái)比較其反向傳播的收斂速度,并通過(guò)最終模型的準(zhǔn)確率來(lái)確定最高效的優(yōu)化器。
本實(shí)驗(yàn)具體實(shí)現(xiàn)方案如表2所示。

表2 實(shí)驗(yàn)方案設(shè)計(jì)
圖2、圖3和圖4分別展示了實(shí)驗(yàn)一、實(shí)驗(yàn)二和實(shí)驗(yàn)三的模型訓(xùn)練過(guò)程和評(píng)估模型時(shí)的準(zhǔn)確率。

圖2 SGD優(yōu)化器

圖3 Adagrad優(yōu)化器

圖4 Adam優(yōu)化器
從以上三張圖所示的實(shí)驗(yàn)數(shù)據(jù)可以看出,雖然收斂最快、最穩(wěn)定的優(yōu)化器是Adagrad,但是其評(píng)估(test)準(zhǔn)確率比訓(xùn)練(train)準(zhǔn)確率更低,而其中訓(xùn)練結(jié)果準(zhǔn)確率最高的優(yōu)化器是Adam。這兩種自適應(yīng)優(yōu)化器的效率都比沒(méi)有經(jīng)過(guò)參數(shù)精調(diào)的SGD優(yōu)化器更好。
使用這三種不同優(yōu)化器進(jìn)行模型訓(xùn)練后,在評(píng)估時(shí)的損失值和準(zhǔn)確率如表3所示。

表3 實(shí)驗(yàn)損失值和準(zhǔn)確率
從以上結(jié)果可以看出,在優(yōu)化該分類(lèi)器模型時(shí),Adam相比其他兩種優(yōu)化器的訓(xùn)練結(jié)果,其評(píng)估準(zhǔn)確率更高,達(dá)到83.87%,對(duì)于疾病分類(lèi)具有較鮮明的參考作用。
本文基于深度學(xué)習(xí)中的前饋神經(jīng)網(wǎng)絡(luò)理論,選取了骨科患者特征數(shù)據(jù)集來(lái)進(jìn)行分類(lèi)預(yù)測(cè)的實(shí)驗(yàn)。在實(shí)驗(yàn)中,本文設(shè)計(jì)出一種基于6個(gè)輸入神經(jīng)元和3個(gè)輸出神經(jīng)元的分類(lèi)器模型,該模型包含3層隱藏層。本文使用骨科患者特征數(shù)據(jù)集來(lái)對(duì)模型進(jìn)行訓(xùn)練,并對(duì)模型的分類(lèi)預(yù)測(cè)結(jié)果作出了評(píng)估。根據(jù)實(shí)驗(yàn)結(jié)果,最終確定使用Adam優(yōu)化器來(lái)進(jìn)行模型優(yōu)化,這為創(chuàng)建更高效的疾病分類(lèi)器提供了參考。
本文只針對(duì)骨科疾病數(shù)據(jù)進(jìn)行了預(yù)測(cè)分類(lèi)實(shí)驗(yàn),今后在此基礎(chǔ)上將根據(jù)不同領(lǐng)域的數(shù)據(jù)分類(lèi)需求而對(duì)分類(lèi)器模型提出多種設(shè)計(jì)并進(jìn)行對(duì)比實(shí)驗(yàn),將嘗試對(duì)比分析不同維數(shù)的前饋神經(jīng)網(wǎng)絡(luò)對(duì)于各領(lǐng)域數(shù)據(jù)分類(lèi)預(yù)測(cè)的準(zhǔn)確率。