


摘 要:本文先介紹監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的概念,然后分析自編碼器的特點(diǎn)和結(jié)構(gòu),并設(shè)計(jì)自編碼網(wǎng)絡(luò)的結(jié)構(gòu),最后通過(guò)手術(shù)器械數(shù)據(jù)集SID-19對(duì)自編碼網(wǎng)絡(luò)進(jìn)行訓(xùn)練和結(jié)果分析。運(yùn)行結(jié)果表明,自編碼器是深度學(xué)習(xí)中的一種非常重要的無(wú)監(jiān)督學(xué)習(xí)方法,能夠從大量無(wú)標(biāo)簽的數(shù)據(jù)中自動(dòng)學(xué)習(xí),得到蘊(yùn)含在手術(shù)器材數(shù)據(jù)集中器材的有效特征
關(guān)鍵詞:自編碼;深度學(xué)習(xí);無(wú)監(jiān)督學(xué)習(xí);手術(shù)器材識(shí)別算法
深度學(xué)習(xí)領(lǐng)域主要有兩種訓(xùn)練模式:一種是監(jiān)督學(xué)習(xí),即不僅有樣本,還有對(duì)應(yīng)的標(biāo)簽;另一種是非監(jiān)督學(xué)習(xí),即只有樣本沒(méi)有標(biāo)簽。對(duì)于監(jiān)督學(xué)習(xí)的訓(xùn)練任務(wù)來(lái)說(shuō),為已有樣本準(zhǔn)備對(duì)應(yīng)的標(biāo)簽是一項(xiàng)很繁重的工作,因此,非監(jiān)督學(xué)習(xí)就顯得簡(jiǎn)單的多,因?yàn)槿绻茏尵W(wǎng)絡(luò)直接使用樣本進(jìn)行訓(xùn)練而不需要再準(zhǔn)備標(biāo)簽,是更高效的事情。
本文接下來(lái)介紹的自編碼器是深度學(xué)習(xí)中的一種非常重要的無(wú)監(jiān)督學(xué)習(xí)方法,能夠從大量無(wú)標(biāo)簽的數(shù)據(jù)中自動(dòng)學(xué)習(xí),得到蘊(yùn)含在手術(shù)器材數(shù)據(jù)集中的有效特征。1986年Rumelhart提出自動(dòng)編碼器的概念,顧名思義,即可以使用自身的高階特征編碼自己。自編碼器(autoencoder, AE)是一類在半監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)中使用的人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks, ANNs),其功能是通過(guò)將輸入信息作為學(xué)習(xí)目標(biāo),對(duì)輸入信息進(jìn)行表征學(xué)習(xí)(representation learning)。自動(dòng)編碼器基本上可以分為三個(gè)不同的組件:編碼器、瓶頸和解碼器。
一、自編碼器的特點(diǎn)
人平時(shí)看一幅圖像,并不是象電腦那樣去逐個(gè)去掃描,一般是看一眼就大致能得到所需要的信息,比如圖像的大小,形狀、色彩和特征等。自編碼器也有類似這樣的功能,它是非監(jiān)督學(xué)習(xí)領(lǐng)域的一種,可以自動(dòng)地從無(wú)標(biāo)注的原始數(shù)據(jù)中學(xué)習(xí)到特征,是一種以重構(gòu)輸入信號(hào)為目標(biāo)的神經(jīng)網(wǎng)絡(luò),它可以得出比原始數(shù)據(jù)更好的特征描述,具有較強(qiáng)的特征學(xué)習(xí)能力,通常在深度學(xué)習(xí)中常用自編碼網(wǎng)絡(luò)生成的特征來(lái)取代原始數(shù)據(jù),以得到更好的特征提取效果。目前,自編碼器的應(yīng)用主要有兩個(gè)方面,第一是數(shù)據(jù)去噪,第二是為進(jìn)行可視化而降維。
自動(dòng)編碼器是神經(jīng)網(wǎng)絡(luò)的一種,經(jīng)過(guò)訓(xùn)練后能嘗試將輸入復(fù)制到輸出,換句話說(shuō),就是使輸入的內(nèi)容和輸出的內(nèi)容一樣。自動(dòng)編碼器內(nèi)部有一個(gè)隱含層 h,可以產(chǎn)生編碼來(lái)表示輸入。該網(wǎng)絡(luò)可以看成有兩部分組成:一個(gè)編碼器 h = f( x )和一個(gè)生成重構(gòu)的解碼器 r = g( x ), 使得x約等于g(f( x ))。
二、自編碼器的結(jié)構(gòu)
自編碼器(Auto-Encoder,AE)網(wǎng)絡(luò)是輸入等于輸出的一種深度學(xué)習(xí)無(wú)監(jiān)督學(xué)習(xí)網(wǎng)絡(luò),最基本的模型可以是三層的神經(jīng)網(wǎng)絡(luò),即輸入層、隱藏層和輸出層。其中,輸入層的樣本在訓(xùn)練中會(huì)充當(dāng)輸出層的標(biāo)簽角色。也就是說(shuō),自編碼網(wǎng)絡(luò)是一種盡可能復(fù)現(xiàn)輸入信號(hào)的神經(jīng)網(wǎng)絡(luò)。具體的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。
圖1中,從輸入到中間狀態(tài)的過(guò)程叫做編碼,從中間狀態(tài)再回到輸出的過(guò)程叫做解碼。訓(xùn)練后的自編碼器可以在隱藏層得到代表輸入數(shù)據(jù)的特征,類似于PCA算法(主成分分析),即找到可以代表原信息的主要成分。
自編碼器要求輸出盡可能等于輸入,并且其隱藏層必須滿足一定的稀疏性,這是通過(guò)將隱藏層中的神經(jīng)元個(gè)數(shù)比前一層神經(jīng)元個(gè)數(shù)少的方式來(lái)實(shí)現(xiàn)其稀疏效果的。相當(dāng)于隱藏層對(duì)輸入進(jìn)行了壓縮,并在輸出層中進(jìn)行解壓縮。盡管整個(gè)過(guò)程中會(huì)有信息的丟失,但通過(guò)對(duì)模型的優(yōu)化能使丟失的信息盡可能減少,從而最大化地保留其主要特征。其實(shí)自編碼器和PCA比較類似,如果激活函數(shù)不使用Sigmoid,而是使用線性函數(shù),那么就成了PCA模型。
全連接層神經(jīng)網(wǎng)絡(luò)組成的最簡(jiǎn)單的自編碼器只有三層結(jié)構(gòu),中間的隱藏層才是我們所需要關(guān)注的地方,以隱藏層為界限,左邊為編碼器 (encoder),右邊為解碼器(decoder)。
很明顯,如果自編碼器只是單純的將輸入復(fù)制到輸出中,那么他沒(méi)有用處。所以實(shí)際上,希望通過(guò)訓(xùn)練自編碼器將輸入復(fù)制到輸出中,使隱藏層擁有有用的屬性。自編碼器其實(shí)也是一種神經(jīng)網(wǎng)絡(luò),它的輸入和輸出是一致的,它借助稀疏編碼的思想,目標(biāo)是使用一些高階特征重新組合來(lái)重構(gòu)自己,即對(duì)所有的自編碼器來(lái)講,目標(biāo)都是樣本重構(gòu)。自編碼器首先通過(guò)編碼層,將高維空間的向量壓縮成低維的向量(潛在變量),然后通過(guò)解碼層將低維向量解壓重構(gòu)出原始樣本。
假如我們通過(guò)一組數(shù)據(jù)訓(xùn)練出了我們的自編碼器,然后我們拆掉自編碼器的解碼器(decoder),就可以用剩下的編碼器(encoder)來(lái)表征我們的數(shù)據(jù)了。隱藏層的神經(jīng)元數(shù)目遠(yuǎn)低于輸入層,那么就相當(dāng)于我們用更少的特征(神經(jīng)元)去表征我們的輸入數(shù)據(jù),從而達(dá)到降維壓縮的功能。
從以上分析得出,自編碼器是一種無(wú)監(jiān)督的學(xué)習(xí)算法,主要用于數(shù)據(jù)的降維或者特征的抽取,
三、自編碼器的設(shè)計(jì)思想及代碼實(shí)現(xiàn)
本節(jié)我們將通過(guò)一個(gè)提取手術(shù)器材圖片特征并利用提取的特征還原圖片的實(shí)例來(lái)說(shuō)明自編碼器在手術(shù)器材數(shù)據(jù)集中的應(yīng)用及代碼實(shí)現(xiàn)效果。
(一)設(shè)計(jì)思想。自編碼器可以看作是對(duì)輸入數(shù)據(jù)的壓縮編碼,將高維的原始數(shù)據(jù)用低維的向量表示,使壓縮后的低維向量能保留輸入數(shù)據(jù)的典型特征,從而能夠較為方便地恢復(fù)原始數(shù)據(jù)。這里需要注意的是,在對(duì)數(shù)據(jù)進(jìn)行編碼和解碼時(shí),使用的是同一個(gè)參數(shù)矩陣W。衡量W的訓(xùn)練效果方法是,編碼后的數(shù)據(jù)能夠較為容易地通過(guò)解碼恢復(fù)成原始數(shù)據(jù),我們則認(rèn)為W較好的保留了數(shù)據(jù)信息。
(二)手術(shù)器械數(shù)據(jù)集SID-19。本文采用的SID-19手術(shù)器材數(shù)據(jù)集由19個(gè)類組成,包含3800張圖像,即每個(gè)類包含200張圖像,數(shù)據(jù)集中的所有圖像都是由高精度拍攝相機(jī)獲取,分辨率為3456*3456,從而能更好地驗(yàn)證算法的有效性。
(三)創(chuàng)建自編碼網(wǎng)絡(luò)。下面通過(guò)構(gòu)建一個(gè)六層的自編碼網(wǎng)絡(luò),將SID-19數(shù)據(jù)集中的各個(gè)類別手術(shù)器材進(jìn)行訓(xùn)練及特征提取,再通過(guò)自編碼器把這些特征重建SID-19數(shù)據(jù)集。
(1)加載SID-19數(shù)據(jù)集,提取所有數(shù)據(jù),把數(shù)據(jù)分為訓(xùn)練和測(cè)試兩個(gè)數(shù)據(jù)集,分別是3000和800張打亂的手術(shù)器材圖片,不設(shè)定訓(xùn)練集和測(cè)試集標(biāo)簽。
(2)定義自編碼網(wǎng)絡(luò)結(jié)構(gòu)。本文采用一個(gè)六層的深度學(xué)習(xí)自編碼網(wǎng)絡(luò),先將原始圖片處理為512*512的圖片,再把處理后的圖片轉(zhuǎn)換展平成262144的一維數(shù)據(jù)作為輸入數(shù)據(jù),通過(guò)第二層降維到16384,然后再降到4096,最后再以同樣的方式經(jīng)過(guò)4096,再經(jīng)過(guò)16384,最后還原成262144的圖片并輸出結(jié)果進(jìn)行對(duì)比。網(wǎng)絡(luò)結(jié)構(gòu)變化如表1所示。
(3)訓(xùn)練網(wǎng)絡(luò)
設(shè)置訓(xùn)練的參數(shù),epochs=30,batch_size=512,learnning_rate=0.005。然后定義編碼和解碼函數(shù),損失函數(shù)采用均方差,優(yōu)化器采用MSGD。編碼和解碼的部分核心代碼如下:
# 編碼
def encoder(x):
layer_1=tf.nn.sigmoid(tf.add(tf.matmul(x,weights['encoder_h1']),
biases['encoder_b1']))
layer_2=tf.nn.sigmoid(tf.add(tf.matmul(layer_1,
weights['encoder_h2']),biases['encoder_b2']))
return layer_2
# 解碼
def decoder(x):
layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']),biases['decoder_b1']))
layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1,
weights['decoder_h2']),biases['decoder_b2']))
return layer_2
#輸出的節(jié)點(diǎn)
encoder_out = encoder(x)
pred = decoder(encoder_out)
# 損失函數(shù)為平方差
cost = tf.reduce_mean(tf.pow(y - pred, 2))
optimizer = tf.trainMsgdOptimizer(learning_rate).minimize(cost)
(4)測(cè)試模型
通過(guò)SID-19數(shù)據(jù)集中的測(cè)試集測(cè)試訓(xùn)練后的模型準(zhǔn)確度,訓(xùn)練結(jié)果如下所示。
Epoch: 0001 cost= 0.56
Epoch: 0006 cost= 0.41
Epoch: 0011 cost= 0.32
Epoch: 0016 cost= 0.21
Epoch: 0021cost= 0.09
Epoch: 0026 cost= 0.05
訓(xùn)練完成!
Accuracy:1.0
從上述信息可以得到,經(jīng)過(guò)30個(gè)epochs訓(xùn)練后的效果非常好,準(zhǔn)確率達(dá)到了100%。
(5)圖像還原
接下來(lái)我們抽取部分還原圖片的信息進(jìn)行顯示,圖像還原結(jié)果如圖2所示,從圖中看出,使用自編碼網(wǎng)絡(luò)能較好的提取圖片特征和識(shí)別。
四、總結(jié)
該文首先介紹傳統(tǒng)自編碼器的特點(diǎn)與基本結(jié)構(gòu),分析自編碼器的一般處理框架。然后,通過(guò)SID-19數(shù)據(jù)集進(jìn)行自編碼器的編程訓(xùn)練、測(cè)試和結(jié)果輸出。從運(yùn)行的結(jié)果來(lái)看,該網(wǎng)絡(luò)能比較好的進(jìn)行了手術(shù)器材圖片的還原。說(shuō)明在深度學(xué)習(xí)中用自編碼網(wǎng)絡(luò)生成的特征來(lái)取代原始數(shù)據(jù),可以取得較好的特征提取效果。
參考文獻(xiàn):
[1] 張文凱.基于細(xì)粒度的圖像分類的外科手術(shù)器材識(shí)別研究[D],2021.
[2] 苗宇宏等.基于深度卷積自編碼網(wǎng)絡(luò)的圖像融合[J],計(jì)算機(jī)應(yīng)用研究,2020(6).
[3] 王曉華. TensorFlow 2.0卷積神經(jīng)網(wǎng)絡(luò)實(shí)戰(zhàn) [M]. 清華大學(xué)出版社出版社,2020
作者簡(jiǎn)介:馮蓉珍(1970—),女,漢族,本科,副教授,研究方向:物聯(lián)網(wǎng)技術(shù),嵌入式系統(tǒng)。翟高粵(1975—),男,漢族,碩士,副教授,研究方向:軟件理論,人工智能。
基金項(xiàng)目:蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院橫向課題-基于物聯(lián)網(wǎng)技術(shù)的手術(shù)器械加工設(shè)備控制系統(tǒng)研發(fā)(項(xiàng)目編號(hào):JMHX202306)