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