我们是说把训练一个NN Encoder(neural network)来把输入转换到code,这个code代表了那个输入的物体。可是如果没有对应label,是很难train的。但是如果我们新加一个NN Decoder,把对应的code训练回原图。这样我们就可以得到NN Encoder和NN Decoder两个网络。
回想起我们的网络PCA,里面就是一个hinden layer,这个hidden layer对应的output就是code
当时我们可以用deep neural network来train,可以很多层。我们还可以让左右两层的参数只是transform,避免过拟合。但是这个操作不是很必要的,都是直接trian。我们还可以用RBM来初始化。
这个是用PCA和Deep Auto-encoder来训练的结果。
很明显,deep auto-encoder训练出来的网络这个区分度好很多。
我们还可以用auto-encoder来做Text Retrieval。我们把每一篇文章都表示成空间中的一个vector。然后我们会有一个查询词,也映射成一个vector。然后计算相互之间的相似度(专有名词听不清),这个计算会有normalize的效果,来检索出类似的document。
其中把输入和对应的vector进行转换,那我们怎么知道这个转换好还是不好。先假设我们用的是Bag of word来进行转换表示,加上一些重要词汇乘上比较高的权重。但是这样做我们会没有考虑Semantrics相关的东西,语义相关的东西。例如:梨子和苹果的关系。
我们可以train一个auto-encoder来把语义考虑进来。就是把document之类的通过auto-encoder,然后变成两维。右边的图就是当时hinton的paper的结果。右下的是LSA的结果,就没那么好了。
还有进行类似图片搜索的
网络结构
之前人们在原图上进行使用retrieved using Euclidean distance in pixel intensity space。但是效果不好。然后我们会通过Auto-encoder,得到256codes,再来retrieved using Euclidean distance in pixel intensity space,这样可以得到更好的效果。
我们还可以用这个来预训练,前后要一样,以此训练
w
1
w^1
w1,以此类推
最后得到
w
1
w^1
w1,
w
2
w^2
w2,
w
3
w^3
w3
最后初始化
w
4
w^4
w4,用back propagation来训练和find-tune。
有点是对图片添加噪声,output要和没有添加噪声的一样,来增加鲁棒性。左上角的那个也是类似的。
还有对于CNN的Auto-encoder
就是记住当时的池化对应的位置。等到unpooling的时候,就反过来在对应的位置取值,其他的为0.(按照李老师的说法,keras是没有记住位置的,是都是一样的,没有对应好位置放好)
deconvolution就是convolution,就是补0来convolution
让机器随机初始化一些数据来decoder出一些图片。