深度網(wǎng)絡能否擬合F(X)=X?

Author: Zongwei Zhou | 周縱葦
Weibo: @MrGiovanni
Email: zongweiz@asu.edu

引子


近年來紅得發(fā)紫的深度網(wǎng)絡在很多方面都表現(xiàn)出了卓越的實力,比如計算機視覺中的物體分類,分割,邊界檢測等等,這種非線性的結構實際是源自神經(jīng)網(wǎng)絡,它不但可以自動的去學習到圖像的特征,而且可以擬合很多很多復雜的決策邊界函數(shù)。我的問題是:這種神經(jīng)網(wǎng)絡能否擬合f(x)=x這個最簡單的函數(shù)呢?

換句話說,就是輸入網(wǎng)絡的一幅圖X,經(jīng)過各種亂七八糟的變換,最后的輸出能否還是原圖X不變?

首先想到的應該是Auto-Encoder吧,Hinton早在2006年就把它發(fā)表在了Science上了( Reducing the Dimensionality of Data with Neural Networks),一幅圖經(jīng)過了編碼-解碼器,最后還是回到這幅圖本身,它的一個應用是圖像壓縮。試想一個1M的圖像,經(jīng)過編碼變成了一個很小的向量,這個向量很小,可能只有幾個K,它是原圖豐富特征的抽象表征,儲存起來特別的省空間,當我們想看原圖的時候,只需把這個小小的向量放到解碼器即可,理想情況下,1M的圖像又回來了。就像餅干,你用一個編碼器把它變成壓縮餅干,想吃的時候用解碼器再把它恢復原樣。像金箍棒,不用的時候用編碼器把它變小放耳朵,用的時候解碼成那么大。

可惜的是,變回來的圖可能已經(jīng)不是原來那個圖了。一個不那么恰當?shù)睦邮?,本來一個很開心的人,你扇他一巴掌,然后給一顆紅棗,他還是原來那個開心的人嗎?有損失吧。一樣的,對于編碼解碼器,它所還原出來的圖像是有信息損失的。這么想,和質量守恒定律類似,信息量也是守恒的,不會憑空的產(chǎn)生。壓縮了信息相當于剔除了一些信息,這是不能被恢復的。一個幾K的vector怎么可能會平白無故地還原成幾M的原圖呢?丟失的信息就是潑出去的水。這是一篇很不錯的關于auto encoder應用的技術博客:Building Autoencoders in Keras。所以深度網(wǎng)絡不能擬合F(X)=X函數(shù)嘍,還沒完。

剛剛說信息不會憑空消失,所以1M的圖,變成1K的向量,是不可能還原成1M的原圖的,可是如果我把1M的圖,變成1G的向量,能不能還原成1M的原圖呢?

有人可能會說,這算哪門子的壓縮啊,越壓越大嗎??
壓縮畢竟不是Auto-Encoder的全部作用吧,這里我們的目標就不是壓縮了,而是就想擬合F(X)=X,不管花多少代價。

那么我的第六感是,在理論上(我還不知道什么理論),無損mapping是可以用深度網(wǎng)絡做到的[?]




這個問題的英文描述是:

Identity mapping < F(X)=X > ensures that the output of some multilayer neural net is equal to its input. Such a net is also named as replicator.

列出一些相關讀物:

實驗


先設計一個簡單的實驗:輸入是一個784長的vector,希望得到的輸出是它本身,這里需要著重考慮的變量就是encoding_dim。正常來講是比784要小的值,但是為了減少信息損失,我們也用784,甚至比它更大的值。

from keras.layers import Input, Dense
from keras.models import Model

# this is the size of our encoded representations
encoding_dim = 32  # 32 floats -> compression of factor 24.5, assuming the input is 784 floats

# this is our input placeholder
input_img = Input(shape=(784,))
# "encoded" is the encoded representation of the input
encoded = Dense(encoding_dim, activation='relu')(input_img)
# "decoded" is the lossy reconstruction of the input
decoded = Dense(784, activation='sigmoid')(encoded)

# this model maps an input to its reconstruction
autoencoder = Model(input_img, decoded)

# this model maps an input to its encoded representation
encoder = Model(input_img, encoded)

# create a placeholder for an encoded (32-dimensional) input
encoded_input = Input(shape=(encoding_dim,))
# retrieve the last layer of the autoencoder model
decoder_layer = autoencoder.layers[-1]
# create the decoder model
decoder = Model(encoded_input, decoder_layer(encoded_input))

從實驗的結果上說,無論encoding_dim設的什么大小,都沒有辦法完美實現(xiàn)F(X)=X,甚至在訓練集上都無法實現(xiàn)。這個博客(Building Autoencoders in Keras)展示了結果的示意圖。但是!實驗結果無法實現(xiàn)不代表理論上無法實現(xiàn)。怎么辦,理論弱、

并且我認為神經(jīng)網(wǎng)絡里面很多操作都會損失信息,就拿上面的這個簡單的Auto-encoder來講,激活函數(shù)relu就是一個例子,對于大于零的值,確實是無損激活y=x,但是對于小于零的,卻直接就取零了,赤裸裸的損失了信息,或許可以調整成linear,或者干脆不要激活函數(shù)。what about最后的sigmoid,講道理也是有損失的,可能需要加一個batch normalization,BN在我看來還算是屬于無信息損失的操作。另外,為了實現(xiàn)精準的一對一mapping,在loss function的設計上也許也需要一些考量。好吧,我越來越不確定自己在說什么了。。。

為什么要討論深度網(wǎng)絡對F(X)=X函數(shù)的擬合?


不賣關子了,寫這么多廢話是為了思考一個在Generative Adversarial Nets研究中一個比較有趣的問題,也就是無損地用GAN來做一系列的變換。因為GAN中的generator實質上就是一個類似auto encoder的結構。一個剛剛在ICLR 2018中發(fā)表的相關工作是“UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS”。關于這個問題的討論,屬于比較偏理論的,或者比較高層次的GAN研究——因為它還暫時沒有一個比較好的應用載體(這篇論文中用這個來做圖像表征的研究),研究的目的就是為了對GAN深入理解。文章雖短,但是思想很有意思。說用GAN來學習圖像的旋轉——論文中只限于90,180,270度這樣的無信息損失的旋轉,因為其他任意角度需要對原圖做差值。

一個非常難解決的問題就是:如何用深度網(wǎng)絡學一個一對一的mapping?因為input和output的所有像素都是一一對應的,唯一的差別就是重新排列了一下像素。上面提到的論文并沒有專門提煉出這個問題,我把它提出來,但是目前沒有答案。另一篇相關的論文也發(fā)表在ICLR 2018上,題為:ITERATIVE GANS FOR ROTATING VISUAL OBJECTS,還有它的增常版本在arxiv上了“IterGANs: Iterative GANs to Learn and Control 3D Object Transformation”。

關于用GAN來學習圖像的旋轉和平移,可不可以Generator根本就不憑空去“創(chuàng)造”像素,而是輸出一個原像素的動態(tài)移動的指令map,這樣可以確保的是原像素值不變,只是物理的移動。只需要把這個指令map作用在原圖中,就可以實現(xiàn)圖像的無損平移和旋轉啦。

訓練Auto-encoder的另一個應用是Self-Supervised (Feature) Learning (A Survey to Self-Supervised LearningSelf-Supervised Learning)。但是它存在的問題在于:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容