您的位置:首页 > 其它

Deep Learning读书笔记(一):Reducing the Dimensionality of Data with Neural Networks

2014-09-07 20:16 537 查看
这是发表在Science上的一篇文章,是Deep Learning的开山之作,同样也是我读的第一篇文章,我的第一篇读书笔记也从这开始吧。

文章的主要工作是数据的降维,等于说这里使用深度学习网络主要提取数据中的特征,但却并没有将这个特征应用到分类等任务中去。文章中模型的功能与自动编码器的功能十分相似,我认为可以将文章中的模型认为是一个深度自编码器模型。网络模型如下图所示:



在描述这张图之前首先要提到网络的预训练,这也是文章中重点说明的一点。如果我们想要得到一个更好的解,那么就得在整个网络初始化时赋予一个较优的权值。因为网络的层数较多,整个模型的参数空间很大,如果使用一个随机的初始值,其靠近局部最优值得可能性就很小,在参数优化是算法的收敛速度也很慢。但如果为其赋予一个较优的初始值,使其更为接近一某一个局部最优值点,那么参数优化时算法就能够较快的收敛,也能够取得更优的解。较为出名的算法有对比分歧算法,之后也会提到。

现在就需要来说明下前面的那张图了。从图中可以看出,在预训练的过程中整个模型是被逐层训练的,这个思想在深度学习中是十分重要的一点。这里网络的每一个单元都是限制玻尔兹曼机(RBM),当然也可以将其换成是其他的模型,例如自编码器。逐层训练的思想是: 先训练好一个子网络,将前一个子网络的输出作为后一个子网络的输入训练下一个子网络,最后将所有的子网络组合成一个大网络。逐层训练的目的就是为了赋予整个网络一个较优的初始值,使其能够通过之后的参数优化取得更优的值。

那么逐层训练又是怎样实现的呢?这里因为使用的单元是限制玻尔兹曼机,所以使用的方法是对比分歧算法。论文中有对该算法进行介绍,但是因为该算法与限制玻尔兹曼机的机制有很大的联系,这里我并不想单独说明,而是希望写一篇来单独介绍限制玻尔兹曼机,因为限制玻尔兹曼机在深度学习中使用的还是比较广泛的,不久之后可能会说到的深信度网络就是由限制玻尔兹曼机所构成的。

再回到之前的那张图中,Unrolling对应的那一部分的图,网络将输入的图像编码成一个只有30维的特征。我们可以将这一部分网络看做是encoder。之后呢,又可以将该30维的特征还原回输入,可以看出还原回去的效果还是不错的,这一部分可以将其看做是decoder。从图中可以看出这是encoder的一个逆过程。30维的特征相对于输入的维数已经是小了很多,我们可以看出,30维的特征还是保留了输入的主要信息。所以,在数据压缩方面还是能够有很广泛的应用的。同样,也可以将该30维的特征输入到一个分类器中,这比直接将图片作为输入在分类网络的规模上还是要小很多,而且提取出的特征能够抓住输入最主要的特征,这或许比直接将图片作为输入所获取到的效果更好。这也体现出了深度学习最为主要的目的。就是特征的提取。

在fine-tuning的部分,就是对之前所得到的参数进行调整。虽然这里网络的层数较于传统的神经网络模型有所增加,但是依然可以使用BP算法来对网络的参数进行调整。因为通过预训练的过程已经赋予整个网络一个较好的初始值,所以并不会造成原来经常受到困扰的梯度弥散问题(该问题会在网络的层数较多,又使用随机值初始化时会遇到。因为初始值并不优,而且网络层数又多,造成梯度在反传时在网络的前几层已经是很小了,无法对参数进行有效的调整)。当然也有其他的方法来进行调参,BP算法还是最常见的。

最后文章通过几个试验来证明了模型的有效性,因为这里并没有一个标签的概念,所以这里使用了交叉熵作为调参时的目标函数(交叉熵的公式:

)。这里我认为可以将输入的图像作为标签,将其与通过特征还原回的图像进行比较,也可以将其看做是监督型学习算法。交叉熵也就是衡量这两者差异性的标准。

到这里,第一篇博客就这样结束了。因为并不是在专业的计算机杂志上发表的文章,内容确实不是很多,我也是有省略掉一部分在下一篇中会提到。确实是第一次写东西,难免会有一些不足的地方,请大家见谅。相信以后一定会有提高的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐