免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
機(jī)器學(xué)習(xí)中的編碼器-解碼器結(jié)構(gòu)哲學(xué)

 SIGAI資源

《機(jī)器學(xué)習(xí)與應(yīng)用》勘誤和修改更新:

http://www.tensorinfinity.com/paper_78.html 

(登錄即可下載,感謝各位讀者的反饋)

資深專家解讀論文


導(dǎo)言

機(jī)器學(xué)習(xí)中體現(xiàn)著各種工程和科學(xué)上的哲學(xué)思想,大的有集成學(xué)習(xí),沒(méi)有免費(fèi)午餐,奧卡姆剃刀;小的有最大化類間差異、最小化類內(nèi)差異。對(duì)于很多問(wèn)題,存在著一類通行的解決思路,其中的一個(gè)典型代表就是“編碼器-解碼器”結(jié)構(gòu)。這一看似簡(jiǎn)單的結(jié)構(gòu),背后蘊(yùn)含的工程思想?yún)s非常值得我們學(xué)習(xí)和品味。


在這篇文章中,我們將各種算法中采用的這一思想貫通起來(lái)介紹,以更好的形成脈絡(luò)。限于篇幅,無(wú)法做非常詳細(xì)的介紹,本文所講的算法在《機(jī)器學(xué)習(xí)與應(yīng)用》,雷明著,清華大學(xué)出版社一書中大都有詳細(xì)的講解。其中PCA位于“第7章-數(shù)據(jù)降維”,自動(dòng)編碼器位于“第14章-深度學(xué)習(xí)概論”,全卷積網(wǎng)絡(luò)位于“第15章-卷積神經(jīng)網(wǎng)絡(luò)”,序列到序列學(xué)習(xí)位于“第16章-循環(huán)神經(jīng)網(wǎng)絡(luò)”。編碼器CNN-解碼器RNN位于“第16章-循環(huán)神經(jīng)網(wǎng)絡(luò)”,編碼器RNN-解碼器CNN位于“第17章-生成對(duì)抗網(wǎng)絡(luò)”。變分自動(dòng)編碼器在后續(xù)的版本中可能會(huì)加入,此書在持續(xù)優(yōu)化中,對(duì)于讀者提出的第一版存在的問(wèn)題,下一版會(huì)做大幅度的改進(jìn),敬請(qǐng)關(guān)注!

 

編碼器-解碼器結(jié)構(gòu)在我們的日常生活中并不陌生。電話就是最典型的例子,它將聲音信號(hào)編制成電信號(hào),經(jīng)過(guò)傳輸之后,在另外一端再將電信號(hào)恢復(fù)成聲音信號(hào)。這樣,對(duì)方就能在千里之外聽(tīng)到你的聲音。在這里,電信號(hào)是聲音信號(hào)的另外一種表示,這是物理上的變換,解碼和編碼通過(guò)硬件實(shí)現(xiàn)。


在機(jī)器學(xué)習(xí)中,很多問(wèn)題可以抽象出類似的模型:

機(jī)器翻譯。將一種語(yǔ)言的句子轉(zhuǎn)化成另外一種語(yǔ)言的句子。

自動(dòng)摘要。為一段文字提取出摘要。

為圖像生成文字解說(shuō)。將圖像數(shù)據(jù)轉(zhuǎn)化成文字?jǐn)?shù)據(jù)。

根據(jù)一段文字描述生成圖像。這是上面問(wèn)題的反過(guò)程,將文字轉(zhuǎn)化成圖像。

其它的例子我們就不一一列舉。在這些問(wèn)題中,我們需要將輸入數(shù)據(jù)轉(zhuǎn)化成另外一種輸出數(shù)據(jù),二者之間有概率關(guān)系。例如,對(duì)于機(jī)器翻譯來(lái)說(shuō),二者有相同的語(yǔ)義。


直接用一個(gè)函數(shù)完成這個(gè)轉(zhuǎn)化 y=f(x)可能會(huì)存在困難。例如對(duì)機(jī)器翻譯來(lái)說(shuō)輸入和輸出的長(zhǎng)度是不固定的,二者還可能不相等。因此我們需要曲線救國(guó),先將輸入數(shù)據(jù)x轉(zhuǎn)化成一種中間數(shù)據(jù)z,再?gòu)膠映射出y。這就是編碼器、解碼器結(jié)構(gòu)。就像我們無(wú)法將聲音直接傳送到很遠(yuǎn)的地方去一樣,借助于電信號(hào)這樣的中間表示,我們可以更好的完成任務(wù)。接下來(lái)將列舉出機(jī)器學(xué)習(xí)中一些典型的編碼器-解碼器結(jié)構(gòu)算法。

 

PCA說(shuō)起

主成分分析是一種經(jīng)典的無(wú)監(jiān)督數(shù)據(jù)降維算法。它將一個(gè)高維的向量x映射成一個(gè)低維的向量y,前提條件是y很好的保留了x的主要信息。在做數(shù)據(jù)降維時(shí),我們執(zhí)行如下變換

計(jì)算過(guò)程很簡(jiǎn)單,先減掉均值向量,然后左乘投影矩陣即可。其中m是樣本集的均值向量,W是投影矩陣,通過(guò)樣本集計(jì)算得到,具體的原理可以參考PCA的教程。這一投影過(guò)程的作用類似于編碼器,將高維向量x編碼成低維向量y。


有些時(shí)候,我們需要從降維后的向量y重構(gòu)出原始的向量x,這可以通過(guò)數(shù)據(jù)重構(gòu)算法實(shí)現(xiàn),計(jì)算公式很簡(jiǎn)單

這剛好和投影算法相反,是先左乘投影矩陣W的轉(zhuǎn)置, 然后加上均值向量。在這里,重構(gòu)算法可以看作是解碼器,從降維后的向量解碼出原始的信號(hào)。

 

自動(dòng)編碼器

自動(dòng)編碼器(Auto-Encoder,簡(jiǎn)稱AE)是一種特殊的神經(jīng)網(wǎng)絡(luò),用于特征提取和數(shù)據(jù)降維絡(luò)。最簡(jiǎn)單的自動(dòng)編碼器由一個(gè)輸入層,一個(gè)隱含層,一個(gè)輸出層組成。隱含層的映射充當(dāng)編碼器,輸出層的映射充當(dāng)解碼器。


訓(xùn)練時(shí)編碼器對(duì)輸入向量進(jìn)行映射,得到編碼后的向量;解碼器對(duì)編碼向量進(jìn)行映射,得到重構(gòu)后的向量,它是對(duì)輸入向量的近似。編碼器和解碼器同時(shí)訓(xùn)練,訓(xùn)練的目標(biāo)是最小化重構(gòu)誤差,即讓重構(gòu)向量與原始輸入向量之間的誤差最小化,這與PCA非常類似。因此樣本x的標(biāo)簽值就是樣本自身。


訓(xùn)練完成之后,在預(yù)測(cè)時(shí)只使用編碼器而不再需要解碼器,編碼器的輸出結(jié)果被進(jìn)一步使用,用于分類,回個(gè)等任務(wù)。


下圖是自動(dòng)編碼器的一個(gè)例子。輸入數(shù)據(jù)是6維向量,因此輸入層有6個(gè)神經(jīng)元;隱含層有3個(gè)神經(jīng)元,對(duì)應(yīng)編碼后的向量;輸出層有6個(gè)神經(jīng)元,對(duì)應(yīng)重構(gòu)后的向量。

訓(xùn)練時(shí)先經(jīng)過(guò)編碼器得到編碼后的向量,再通過(guò)解碼器得到解碼后的向量,用解碼后的向量和原始輸入向量計(jì)算重構(gòu)誤差。如果編碼器的映射函數(shù)為h,解碼器的映射函數(shù)為g,訓(xùn)練時(shí)優(yōu)化的目標(biāo)函數(shù)為:

這里采用了歐氏距離損失。其中l(wèi)為訓(xùn)練樣本數(shù),θθ是分別是編碼器和解碼器要確定的參數(shù)。

 

變分自動(dòng)編碼器

變分自動(dòng)編碼器(Variational Auto-Encoder,簡(jiǎn)稱VAE)[1]是一種深度生成模型,用于生成圖像,聲音之類的數(shù)據(jù),類似于生成對(duì)抗網(wǎng)絡(luò)(GAN)。雖然也叫自動(dòng)編碼器,但和標(biāo)準(zhǔn)的自動(dòng)編碼器有很大的不同,二者用于完全不同的目的。


現(xiàn)在考慮數(shù)據(jù)生成問(wèn)題,如寫字,最簡(jiǎn)單的是寫出MNIST數(shù)據(jù)集這樣的手寫數(shù)字

如果我先收集一些訓(xùn)練樣本,然后讓算法原樣輸出它們,當(dāng)然也可以完成寫字,但這樣生成的樣本完全就沒(méi)用多樣性了。因此一般的解決思路是先生成一些隨機(jī)數(shù),然后對(duì)其進(jìn)行變換,生成我們想要的復(fù)雜的樣本數(shù)據(jù)。這一過(guò)程如下圖所示

問(wèn)題是,這個(gè)簡(jiǎn)單的隨機(jī)數(shù),該怎么生成呢,應(yīng)該服從何種概率分布?它們可以代表筆畫特征,字體寬度,清晰角度,字體類型等信息,但如果這樣人工設(shè)計(jì),一是費(fèi)時(shí)費(fèi)力,二是具有局限性。因此我們會(huì)想到:能不能從文字圖像中先學(xué)習(xí)中這些特征,然后對(duì)這些特征進(jìn)行隨機(jī)擾動(dòng),生成新的樣本?變分自動(dòng)編碼器就采用了這種思路。其結(jié)構(gòu)如下圖所示

這里的隱變量可以看做是從圖像中學(xué)習(xí)得到的特征。同樣的,編碼器和解碼器同時(shí)訓(xùn)練,訓(xùn)練時(shí)的目標(biāo)是下面方程的右端

由于原理較為復(fù)雜,在這里我們不做深入的講解。訓(xùn)練完成之后,預(yù)測(cè)階段可以直接生成樣本。具體做法是,從正態(tài)分布z~N(0,I)產(chǎn)生一個(gè)隨機(jī)數(shù),然后送入解碼器中,得到預(yù)測(cè)結(jié)果,即為生成的樣本。此時(shí)已經(jīng)不再需要編碼器,另外需要強(qiáng)調(diào)的是,也不需要對(duì)隨機(jī)數(shù)進(jìn)行均值和方差變換。

 

密集預(yù)測(cè)-全卷積網(wǎng)絡(luò)

圖像分割的目標(biāo)是確定圖像中每個(gè)像素屬于什么物體,即對(duì)所有像素進(jìn)行分類,是一個(gè)逐像素預(yù)測(cè)的密集預(yù)測(cè)問(wèn)題。卷積網(wǎng)絡(luò)在進(jìn)行多次卷積和池化后會(huì)縮小圖像的尺寸,最后的輸出結(jié)果無(wú)法對(duì)應(yīng)到原始圖像中的每一個(gè)像素,卷積層后面接的全連接層將圖像映射成固定長(zhǎng)度的向量,這也與分割任務(wù)不符。針對(duì)這兩個(gè)問(wèn)題設(shè)計(jì)出了全卷積網(wǎng)絡(luò)(FCN)[2][3],它全掉了卷積神經(jīng)網(wǎng)絡(luò)中的全連接層,全部用卷積代替,為了從前面的卷積特征圖像得到與原始輸入圖像尺寸相等的輸出圖像,采用了反卷積運(yùn)算。


這種模型從卷積特征圖像預(yù)測(cè)出輸入圖像每個(gè)像素的類別。網(wǎng)絡(luò)能夠接受任意尺寸的輸入圖像,并產(chǎn)生相同尺寸的輸出圖像,輸入圖像和輸出圖像的像素一一對(duì)應(yīng)。這種網(wǎng)絡(luò)支持端到端、像素到像素的訓(xùn)練。


FCN的前半部分是卷積層和池化層,充當(dāng)編碼器,從輸入圖像中提取特征。網(wǎng)絡(luò)的后半部分是反卷積層,充當(dāng)解碼器,從特征中解碼出結(jié)果圖像。典型的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示

文獻(xiàn)[3]提出的SegNet語(yǔ)義分割網(wǎng)絡(luò)更為復(fù)雜。網(wǎng)絡(luò)的前半部分是編碼器,由多個(gè)卷積層和池化層組成。網(wǎng)絡(luò)的后半部分為解碼器,由多個(gè)上采樣層和卷積層構(gòu)成。解碼器的最后一層是softmax層,用于對(duì)像素進(jìn)行分類。


編碼器網(wǎng)絡(luò)的作用是產(chǎn)生有語(yǔ)義信息的特征圖像;解碼器網(wǎng)絡(luò)的作用是將編碼器網(wǎng)絡(luò)輸出的低分辨率特征圖像映射回輸入圖像的尺寸,以進(jìn)行逐像素的分類。整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)如下圖所示

 

序列到序列學(xué)習(xí)

有些問(wèn)題輸入序列的長(zhǎng)度和輸出序列不一定相等,而且我們事先并不知道輸出序列的長(zhǎng)度。以機(jī)器翻譯為例,將一種語(yǔ)言的句子翻譯成另外一種語(yǔ)言之后,句子的長(zhǎng)度即包括的單詞數(shù)量一般是不相等的。


英文句子“what's your name”是3個(gè)單詞組成的序列,翻譯成中文為“你叫什么名字”,由4個(gè)漢字詞組成。標(biāo)準(zhǔn)的RNN無(wú)法處理這種輸入序列和輸出序列長(zhǎng)度不相等的情況,解決這類問(wèn)題的一種方法是序列到序列學(xué)習(xí)(Sequence to Sequence Learning,簡(jiǎn)稱seq2seq)技術(shù)[4]。


seq2seq由兩個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)組成,它能實(shí)現(xiàn)從一個(gè)序列到另外一個(gè)序列的映射,兩個(gè)序列的長(zhǎng)度可以不相等。seq2seq框架包括兩部分,分別稱為編碼器和解碼器,它們都是循環(huán)神經(jīng)網(wǎng)絡(luò)。這里要完成的是從一個(gè)序列到另外一個(gè)序列的預(yù)測(cè):

前者是源序列,后者是目標(biāo)序列,二者的長(zhǎng)度可能不相等。


用于編碼器的網(wǎng)絡(luò)接受輸入序列x1,...,xT,最后T時(shí)刻產(chǎn)生的隱含層狀態(tài)值hT作為序列的編碼值,它包含了時(shí)刻1到T輸入序列的所有信息,在這里我們將其簡(jiǎn)寫為v,這是一個(gè)固定長(zhǎng)度的向量。用于解碼的網(wǎng)絡(luò)每個(gè)時(shí)刻的輸入值為v和yt,它可以計(jì)算目標(biāo)序列y1,...,yT`的條件概率

對(duì)于機(jī)器翻譯而言,編碼器依次接收源語(yǔ)言句子的每個(gè)詞,最后得到語(yǔ)義向量v。解碼器首先輸入bos,即句子的開(kāi)始,根據(jù)它和v預(yù)測(cè)出下一個(gè)詞使用每個(gè)詞的概率,挑選出概率最大的一個(gè)或幾個(gè)詞。接下來(lái)將這個(gè)詞與v送入解碼器,得到幾下一個(gè)此,如此循環(huán),直到得到eos,即句子的結(jié)尾,翻譯結(jié)束。這里使用了集束搜索(beam search)技術(shù)。下圖是用seq2seq做機(jī)器翻譯的原理示意圖


CNN與RNN的結(jié)合

前面介紹的FCN是CNN和CNN的結(jié)合,seq2seq是RNN和RNN的結(jié)合。在編碼器-解碼器框架中,CNN和RNN可以雜交,誰(shuí)充當(dāng)編碼器,誰(shuí)充當(dāng)解碼器,都是可以的,可靈活組合用于各種不同的任務(wù)。

 

從圖像到文字

這類任務(wù)是指為圖像或視頻生成文字解說(shuō)[5]。這是從圖像到文字的映射,在這里,CNN是編碼器,用于提取出圖像的語(yǔ)義特征。RNN充當(dāng)解碼器,其輸入為圖像的語(yǔ)義特征,輸出不固定長(zhǎng)度的文字序列。這一結(jié)構(gòu)如下圖所示


從文字到圖像

這是上一類任務(wù)的反過(guò)程?,F(xiàn)在面臨一個(gè)相反的問(wèn)題:由一段文字來(lái)生成圖像。文獻(xiàn)[6]提出了一種用循環(huán)神經(jīng)網(wǎng)絡(luò)和深度卷積生成對(duì)抗網(wǎng)絡(luò)解決這一問(wèn)題的方法,將視覺(jué)概念從文字變成像素表示。下圖是一些結(jié)果

和機(jī)器翻譯類似,采用編碼器-解碼器框架。第一步是將一段文字轉(zhuǎn)換成向量表示,即文字的語(yǔ)義信息,通過(guò)一個(gè)深度卷積網(wǎng)絡(luò)和一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)為文本產(chǎn)生向量輸出,這個(gè)輸出和圖像對(duì)應(yīng)。


算法的第二步是在第一步生成的文本向量基礎(chǔ)上訓(xùn)練一個(gè)生成對(duì)抗網(wǎng)。在這里生成模型是一個(gè)深度卷積網(wǎng)絡(luò),負(fù)責(zé)生成圖像。生成器網(wǎng)絡(luò)實(shí)現(xiàn)的映射為

其中T為文字描述向量化后的向量維數(shù),Z為隨機(jī)噪聲的維數(shù),D是生成的圖像的維數(shù)。生成網(wǎng)絡(luò)接受隨機(jī)噪聲向量和文字的特征向量作為輸入,輸出指定大小的圖像。

 

 

參考文獻(xiàn)

[1] Carl Doersch. Tutorial on Variational Autoencoders. 2016, arXiv: Machine Learning.

[2] Long J, Shelhamer E, Darrell T, et al. Fully convolutional networks for semantic segmentation. Computer Vision and Pattern Recognition, 2015.

[3] Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla. SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation.

[4] Ilya Sutskever, Oriol Vinyals, Quoc V Le. Sequence to Sequence Learning with Neural Networks. neural information processing systems. 2014.

[5] J.Donahue, L.A.Hendricks, S.Guadarrama, M.Rohrbach, S.Venugopalan, K.Saenko, and T.Darrell. Long-term recurrent convolutional networks for visual recognition and description. arXiv preprint arXiv:1411.4389, 2014.

[6] S Reed, Zeynep Akata, Xinchen Yan, Lajanugen Logeswaran, Bernt Schiele,Honglak Lee. Generative Adversarial Text to Image Synthesis.  international conference on machine learning, 2016.

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
注意力的動(dòng)畫解析(以機(jī)器翻譯為例)
使用機(jī)器學(xué)習(xí)算法來(lái)構(gòu)建智能聊天機(jī)器人
RNN的應(yīng)用及注意力模型
NeurIPS 2019丨推敲網(wǎng)絡(luò) soft原型序列,帶來(lái)輕便又精準(zhǔn)的機(jī)器翻譯
15年來(lái),自然語(yǔ)言處理發(fā)展史上的8大里程碑
Transformer網(wǎng)絡(luò)解讀
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服