别看本文没有几页纸,本着把经典的文多读几遍的想法,把它彩印出来看,没想到效果很好,比在屏幕上看着舒服。若用蓝色的笔圈出重点,这篇文章中几乎要全蓝。字字珠玑。

Reducing the Dimensionality of Data with Neural Networks

G.E. Hinton and R.R. Salakhutdinov

 摘要

训练一个带有很小的中间层的多层神经网络,可以重构高维空间的输入向量,实现从高维数据到低维编码的效果。(原文为high-dimensional data can be converted to low-dimensional codes)在这样的Autoencoder network中,通常使用Gradient Descent方法来对网络权重进行微调(Fine-tuning),这样做有效的前提是初始的网络权重足够好。(原文this works well only if the initial weights are close to a good solution.)本文提出了一个有效的初始化网络权重的方法,使得采用deep autoencoder network学习到的低维编码优于PCA降维的结果。

背景介绍

PCA(Principal Components Analysis)主成分分析是一个被广泛采用的用来降维的方法。它旨在找到数据点的方差最大的方向,并用这些方向作为坐标来表示数据集中的各个点。(PCA finds the directions of greatest variance in the data set and represents each data points by its coordinates along each of these directions.)

Autoencoder:  我们采用了一种非线性的PCA的泛化版本,该方法使用了一个自适应的多层编码网络,将数据从高维变为低维的编码,以及一个类似的解码网络从低维编码中对数据进行重构。 采用随机权重对网络初始化,通过最小化原始数据与重构数据之间的误差来对网络的整体结构进行训练。采用链式法则计算梯度,并将梯度向后传播以更新网络权重。

问题来了~~~~

对于autoencoder来说,初始权重的设置非常重要,过大,则会导致陷入坏的局部最优;过小,则会导致训练困难。只有找到一个好的初始化权重,才能保证后续的梯度算法能够收敛到一个理想的局部解。找到这样的一个初始化权重需要对每一层尝试许多类型的算法 ,因此本文引入了pretraining的过程。(好好理解:Finding such initial weights requires a very different type of algorithm that learns one layer of features at a time.)

方法概览

以binary data为例,说明pretraining的过程

用RBM(Restricted Boltzmann Machines)来建模binary data,由visible layer与hidden layer构成。以image为例,pixels对应RBM的visible units ,feature detectors对应RBM的hidden units ,则visible与hidden units共同对应的energy函数有如下定义:

通过该能量函数赋予每个image一个概率。通过调节权重以及偏差,来降低真实image的能量,提高虚构image的能量,使得网络更加倾向于那些真实的数据。RBM的结构好:给定h,v之间是条件独立的,给定v,h之间是条件独立的。有如下公式:

权重w的调整方法:注意:该调整策略并非严格按照能量公式所对应的概率目标函数求导得到的~~其中,是学习速率,对应真实图像pixel i与feature detector j一起出现的概率,对应虚构图像的概率。

pretraining的过程:learning one layer of feature detector->将该层的输出作为第二层feature学习的输入数据(原文:treat activities as data for learning a second layer of features.),也就是说第一层的feature detector作为第二层RBM的visible units。(原文:The first layer of feature detectors then become the visible units for learning the next RBM.)这种逐层学习的思想可以重复多次。

可以证明的是,给定每层的单元数目不减少,有正确的初始化weight,多加一层,可以改善模型概率似然的下界。 (原文:Adding an extra layer always improves a lower bound on the log probability that the model assigns to the training data, provided the number of feature detectors per layer does not decrease and their weights are intialized correctly.)

逐层的训练方法对于pretrain deep autoencoder是非常有效的方法。(原文: The layer-by-layer learning algorithm is a very effective way to pretrain the weights of a deep autoencoder. )每层的feature能够很好的捕捉层间activities的强度以及高阶相关性。对于大多数想要揭示数据的低维、非线性特征来说,逐层训练是一个有效的方法。

纵观整个deep autoencoder可以分为pretraining,unfolding以及fine-tuning三个阶段。pretraining就是上述描述的逐层训练的过程。unfolding是将pretraining阶段学到的weight用于编码与解码的过程,从而得到真正的autoencoder的结构。fine-tuning指的是采用bp算法对整个autoencoder的结构的权重进行微调。

泛化到Continuous data

将visible units由原来的stochastic binary variable替换为linear units with Gaussian Noise。在实验中,所有的visible units都是这种情况的。

实验:

模拟数据

MNIST数据集

Reuter Corpus:The autoencoder clearly outperformed latent semantic analysis, a well known document retrieval method based on PCA.(应该是从优化目标函数的角度来说PCA与LDA的关系)

总结:

Pretraining的好处:由于网络权重中的大部分信息来源于原始数据本身,因此pretraining的泛化性能好。

label中所蕴含的有限信息仅仅适合对网络权重做微调。

从以前的实验经验中可以看出这一点是非常正确的。

Deep Autoencoder早在1980年就已经提出,事实上它对于非线性维度归约(nonlinear dimensionality reduction)来说是非常有效的。但是它需要的三个条件迄今才满足:(1)Computers are fast enough; (2)data sets are big enough; (3)the initial weights are close enough to a good solution。

Autoencoders give mappings in both directions between data and code spaces.

一天一经典Reducing the Dimensionality of Data with Neural Networks [Science2006]的更多相关文章

  1. Deep Learning 16:用自编码器对数据进行降维_读论文“Reducing the Dimensionality of Data with Neural Networks”的笔记

    前言 论文“Reducing the Dimensionality of Data with Neural Networks”是深度学习鼻祖hinton于2006年发表于<SCIENCE > ...

  2. Reducing the Dimensionality of data with neural networks / A fast learing algorithm for deep belief net

    Deeplearning原文作者Hinton代码注解 Matlab示例代码为两部分,分别对应不同的论文: . Reducing the Dimensionality of data with neur ...

  3. Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维

    原文链接:http://www.ncbi.nlm.nih.gov/pubmed/16873662/ G. E. Hinton* and R. R. Salakhutdinov .   Science. ...

  4. 【神经网络】Reducing the Dimensionality of Data with Neural Networks

    这篇paper来做什么的? 用神经网络来降维.之前降维用的方法是主成分分析法PCA,找到数据集中最大方差方向.(附:降维有助于分类.可视化.交流和高维信号的存储) 这篇paper提出了一种非线性的PC ...

  5. 论文阅读---Reducing the Dimensionality of Data with Neural Networks

    通过训练多层神经网络可以将高维数据转换成低维数据,其中有对高维输入向量进行改造的网络层.梯度下降可以用来微调如自编码器网络的权重系数,但是对权重的初始化要求比较高.这里提出一种有效初始化权重的方法,允 ...

  6. 【Deep Learning】Hinton. Reducing the Dimensionality of Data with Neural Networks Reading Note

    2006年,机器学习泰斗.多伦多大学计算机系教授Geoffery Hinton在Science发表文章,提出基于深度信念网络(Deep Belief Networks, DBN)可使用非监督的逐层贪心 ...

  7. Reducing the Dimensionality of Data with Neural Networks

    ****************内容加密中********************

  8. 文章“Redcing the Dimensiongality of Data with Neural Networks”的翻译

    注明:本人英语水平有限,翻译不当之处,请以英文原版为准,不喜勿喷,另,本文翻译只限于学术交流,不涉及任何版权问题,若有不当侵权或其他任何除学术交流之外的问题,请留言本人,本人立刻删除,谢谢!! 本文原 ...

  9. 阅读笔记 The Impact of Imbalanced Training Data for Convolutional Neural Networks [DegreeProject2015] 数据分析型

    The Impact of Imbalanced Training Data for Convolutional Neural Networks Paulina Hensman and David M ...

随机推荐

  1. WINDOWS Server2008上部署Oracle10g及oracle SQL语法小记

    首先安装10G客户端 情况一:一般都会安装到一般报错.因为10G是32BIT客户端.而操作系统是64位的.但是不会影响配置监听程序.自主开发的应用程序依然可以运行. 情况二:报错但是配置完监听程序始终 ...

  2. JS数组转成json字符串的注意事项

    在js中常常会将一个数组转成json字符串发送给后端. 这时候在定义数组数据结构的时候需要格外注意,意味json中是有集合和对象的区别的. 集合的定义是[];对象的的定义是{}. 这时候,在创建数组时 ...

  3. C# 利用反射给不同类型对象同名属性赋值

    public class ObjectReflection { public static PropertyInfo[] GetPropertyInfos(Type type) { return ty ...

  4. SSH Tunneling

    把本地端口 local_port 转发到服务器 server2 的 remote_port 端口上, server1 和 server2可以是同一ip或者不同ip. ssh user@server1 ...

  5. jQuery EasyUI CheckBoxTree的级联选中

    :子结点选中,父节点随之选中,父节点取消,子节点随之取消 代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/x ...

  6. Ubuntu ssh 服务

    安装ssh-serversudo apt-get install openssh-server安装ssh-clientsudo apt-get install openssh-client 修改ssh ...

  7. 父进程等待子进程结束 waitpid wait

    我们一直在强调一个概念就是进程是一个程序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是程序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个进程所保存的数据结构(状态信 ...

  8. dock停靠管理器

    DockManager停靠管理器可以对它所拥有的 停靠面板 的行为和外观设置进行集中控制.DockPanel停靠面板是停靠应用程序的主要构成部件. 常规面板 DockPanel.ParentPanel ...

  9. hadoop-2.2.0 的编译安装及HA配置

    一 准备工作 准备工作中要求有 1.centOs 6.4,添加hadoop用户,配置集群内的/etc/hosts文件. 2.安装hadoop用户的ssh,并打通集群内所有机器,(ha执行fencing ...

  10. [c#]一个窗体调用另一个窗体的事件

    StuAddForm a = new StuAddForm(); a.IfStudent(textBox1.Text.Trim()):