深度网络能否拟合F(X)=X?

Author: Zongwei Zhou | 周纵苇
Weibo: @MrGiovanni
Email: zongweiz@asu.edu

引子


近年来红得发紫的深度网络在很多方面都表现出了卓越的实力,比如计算机视觉中的物体分类,分割,边界检测等等,这种非线性的结构实际是源自神经网络,它不但可以自动的去学习到图像的特征,而且可以拟合很多很多复杂的决策边界函数。我的问题是:这种神经网络能否拟合f(x)=x这个最简单的函数呢?

换句话说,就是输入网络的一幅图X,经过各种乱七八糟的变换,最后的输出能否还是原图X不变?

首先想到的应该是Auto-Encoder吧,Hinton早在2006年就把它发表在了Science上了( Reducing the Dimensionality of Data with Neural Networks),一幅图经过了编码-解码器,最后还是回到这幅图本身,它的一个应用是图像压缩。试想一个1M的图像,经过编码变成了一个很小的向量,这个向量很小,可能只有几个K,它是原图丰富特征的抽象表征,储存起来特别的省空间,当我们想看原图的时候,只需把这个小小的向量放到解码器即可,理想情况下,1M的图像又回来了。就像饼干,你用一个编码器把它变成压缩饼干,想吃的时候用解码器再把它恢复原样。像金箍棒,不用的时候用编码器把它变小放耳朵,用的时候解码成那么大。

可惜的是,变回来的图可能已经不是原来那个图了。一个不那么恰当的例子是,本来一个很开心的人,你扇他一巴掌,然后给一颗红枣,他还是原来那个开心的人吗?有损失吧。一样的,对于编码解码器,它所还原出来的图像是有信息损失的。这么想,和质量守恒定律类似,信息量也是守恒的,不会凭空的产生。压缩了信息相当于剔除了一些信息,这是不能被恢复的。一个几K的vector怎么可能会平白无故地还原成几M的原图呢?丢失的信息就是泼出去的水。这是一篇很不错的关于auto encoder应用的技术博客:Building Autoencoders in Keras。所以深度网络不能拟合F(X)=X函数喽,还没完。

刚刚说信息不会凭空消失,所以1M的图,变成1K的向量,是不可能还原成1M的原图的,可是如果我把1M的图,变成1G的向量,能不能还原成1M的原图呢?

有人可能会说,这算哪门子的压缩啊,越压越大吗??
压缩毕竟不是Auto-Encoder的全部作用吧,这里我们的目标就不是压缩了,而是就想拟合F(X)=X,不管花多少代价。

那么我的第六感是,在理论上(我还不知道什么理论),无损mapping是可以用深度网络做到的[?]




这个问题的英文描述是:

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设的什么大小,都没有办法完美实现F(X)=X,甚至在训练集上都无法实现。这个博客(Building Autoencoders in Keras)展示了结果的示意图。但是!实验结果无法实现不代表理论上无法实现。怎么办,理论弱、

并且我认为神经网络里面很多操作都会损失信息,就拿上面的这个简单的Auto-encoder来讲,激活函数relu就是一个例子,对于大于零的值,确实是无损激活y=x,但是对于小于零的,却直接就取零了,赤裸裸的损失了信息,或许可以调整成linear,或者干脆不要激活函数。what about最后的sigmoid,讲道理也是有损失的,可能需要加一个batch normalization,BN在我看来还算是属于无信息损失的操作。另外,为了实现精准的一对一mapping,在loss function的设计上也许也需要一些考量。好吧,我越来越不确定自己在说什么了。。。

为什么要讨论深度网络对F(X)=X函数的拟合?


不卖关子了,写这么多废话是为了思考一个在Generative Adversarial Nets研究中一个比较有趣的问题,也就是无损地用GAN来做一系列的变换。因为GAN中的generator实质上就是一个类似auto encoder的结构。一个刚刚在ICLR 2018中发表的相关工作是“UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS”。关于这个问题的讨论,属于比较偏理论的,或者比较高层次的GAN研究——因为它还暂时没有一个比较好的应用载体(这篇论文中用这个来做图像表征的研究),研究的目的就是为了对GAN深入理解。文章虽短,但是思想很有意思。说用GAN来学习图像的旋转——论文中只限于90,180,270度这样的无信息损失的旋转,因为其他任意角度需要对原图做差值。

一个非常难解决的问题就是:如何用深度网络学一个一对一的mapping?因为input和output的所有像素都是一一对应的,唯一的差别就是重新排列了一下像素。上面提到的论文并没有专门提炼出这个问题,我把它提出来,但是目前没有答案。另一篇相关的论文也发表在ICLR 2018上,题为:ITERATIVE GANS FOR ROTATING VISUAL OBJECTS,还有它的增常版本在arxiv上了“IterGANs: Iterative GANs to Learn and Control 3D Object Transformation”

关于用GAN来学习图像的旋转和平移,可不可以Generator根本就不凭空去“创造”像素,而是输出一个原像素的动态移动的指令map,这样可以确保的是原像素值不变,只是物理的移动。只需要把这个指令map作用在原图中,就可以实现图像的无损平移和旋转啦。

训练Auto-encoder的另一个应用是Self-Supervised (Feature) Learning (A Survey to Self-Supervised LearningSelf-Supervised Learning)。但是它存在的问题在于:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280