Deep auto-encoder 与受限玻尔兹曼机有点像,都可以进行信息的压缩,都可以用作pre-trainning.区别在于受限玻尔兹曼机是无向图模型,而Deep auto-encoder是一种神经网络,中间特别窄的bottle neck的数据作为压缩的code
encoder 与 decoder 的参数可以相互独立,也可以互为逆
数字图片 auto-encoder,越是deep的auto-encoder,压缩出来的二维code,在二维空间中分的越散
相关文档检索:
将一个文档用bag of word表示,然后放入auto encoder,压缩为2维,在二维空间,同一类型的文档会显示在一起。查询的时候,将查询文字利用同样的auto encoder压缩为二维,那么它就会比较接近它所涉及的类型的文档的点。疑问:decoder是还原回bag of word,还是使用word embedding方法,预测下一个词,感觉后一种可能性大,因为前一种无法做语义上的表达
类似图片查找:
将图片auto encoder,然后比较在code空间上的距离
pre-training DNN:
找到比较好的神经网络初始化参数
先把第一个隐层作为bottle neck,训练一个只有一层的auto encoder,然后把第一个隐层的code 固定住,作为输入,再训练一个隐层,依次类推。这个方法有点像RBM的预训练方法。可能遇到的问题:隐层比输入层的维度还高,导致输入层直接copy到隐层,什么都没认出来。解决方法:对隐层加一个L1 regulization,把隐层变的稀疏,大多数都是0
pre-training已经很少有人用了,但是,当你有大量unlabel数据,少量label数据的时候,可以利用大量unlabel数据进行pre-training,然后用label 数据进行fine-tune
De-noising auto-encoder
对图片添加噪音,然后放入auto-encoder,重构的图片与没有添加噪音的图片越接近越好。这样训练的网络更健壮,而且可以去噪
auto-encoder for CNN :
Unpooling 一种是记录pooling选择的位置,然后在unpooling的时候,将对应位置值还原,其余位置补0.还有一种方法,在keras中,直接把值copy多份,填入多个对应的位置
Deconvolution:就是Convolution
对图片进行auto-encoder到二维空间,在code上加上L2 regulization,那么code就会集中在0附近,然后从0附近采样,可以得到数字