这篇paper来做什么的?

用神经网络来降维、之前降维用的方法是主成分分析法PCA,找到数据集中最大方差方向。(附:降维有助于分类、可视化、交流和高维信号的存储)

这篇paper提出了一种非线性的PCA 的推广,通过一个小的中间层来重构高维输入向量,训练一个多层神经网络。利用一个自适应的、多层的编码网络(Deep autoencoder networks),达到降维的目的。

这种降维方法,比主成分分析法PCA(principal compenent analysis)效果要好的多。

在这两种网络中,随机初始化权重,通过最小化原始数据及其重建数据之间的差异,进行训练。

利用链规则来反馈错误,首先通过解码网络(Decoder),然后通过编码网络(Encoder),可以获得梯度。

Hinton把它的算法分成了3部分:(预处理)Pretraining、Unrolling、Fine-tuning

预处理包含了学习一个受限玻尔兹曼机栈( 堆叠的RBM),每一个只有一层特征监测子。一层RBM学习过的数据作为下一层RBM的输入,然后使用BP算法调整参数。

给定原始输入后,先要训练模型的第一层,即图中左侧的黑色框。黑色框可以看作是一个编码器,将原始输入编码为第一层的初级特征,可以将编码器看作模型的一种“认知”。为了验证这些特征确实是输入的一种抽象表示,且没有丢失太多信息,需要引入一个对应的解码器,即图中左侧的灰色框,可以看作模型的“生成”。为了让认知和生成达成一致,就要求原始输入通过编码再解码,可以大致还原为原始输入。因此将原始输入与其编码再解码之后的误差定义为代价函数,同时训练编码器和解码器。训练收敛后,编码器就是我们要的第一层模型,而解码器则不再需要了。这时我们得到了原始数据的第一层抽象。

(1)Pretraining

Pretraining就是RBM限制玻尔兹曼机,通过CD-1算法先获得参数W、b的初始值。

RBM的能量函数

1、h是特征j的二值状态。feature detector特征描述子,是模型自己学习获得的,被称为隐式hidden变量,其实它就是每层网络的输出

2、v是像素i的二值状态。可见变量,即输入。上一层的h就是下一层的v。。

3、bi,bj是像素i和特征j的偏差。

4、wij是像素i和特征j间的权值

我们的目标就是通过调整权值和偏差最小化这个能量函数,使得网络更倾向的真实的数。

每个特征探测子j的二值状态hj以的概率被设为1。

其中σ是逻辑函数(logistic function )

每个vi以的概率被设为1

权重更新:

这里emuxilong 是学习率,<>表示{0, 1}随机变量为1的期望。data分式中,h是通过v获得的;recon中,v是通过隐式变量h重构的, h是通过重构后的v重新计算的。

(2)Unrolling

固定第一层模型,原始输入就映射成第一层抽象,将其当作输入,如法炮制,可以继续训练出第二层模型,再根据前两层模型训练出第三层模型,以此类推,直至训练出最高层模型.

Unrolling其实就是根据encode的输出,获得重构图像的过程,即decode。

训练完一层网络之后,我们可以使它激活,当这一层被数据驱动——进而生成数据作为学习第二层特征的输入。第一层的特征探测子成为第二层RBM的可见元。这种一层接一层/逐层的学习 当必要时可以重复多次/反复进行。

(3)Fine-tuning

有了重构后的输入,再加上原始输入,就可以通过Fine-tuning做进一步的参数调整了。

逐层初始化完成后,就可以用有标签的数据,采用反向传播算法对模型进行整体有监督的训练了。这一步可看作对多层模型整体的精细调整。由于深层模型具有很多局部最优解,模型初始化的位置将很大程度上决定最终模型的质量。“逐层初始化”的步骤就是让模型处于一个较为接近全局最优的位置,从而获得更好的效果。

参数调整阶段使用最小化交叉熵损失:

vi 为像素点i的强度,Vi recon为此点的重构后的值。

总结:

其中Pretraining就是RBM模型,通过CD-1算法先获得参数W、b的初始值。Unrolling其实就是根据encode的输出,获得重构图像的过程,即decode。有了重构后的输入,再加上原始输入,就可以通过Fine-tuning做进一步的参数调整了。

优化多隐层的非线性自编码器的权重是非常困难(2-4):使用大的初始权重,自编码器往往会陷入较差的局部极小(poor local minima);使用小的初始权重,(由于梯度消失)前几层的梯度非常小,使得训练多隐层的自编码器变得不可行

自顶向下的监督学习:

  (就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调)基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。

  多层感知机其实在上世纪已经被提出来了,但是为什么它没有得到广泛应用呢?其原因在于对多层非线性网络进行权值优化时很难得到全局的参数。因为一般使用数值优化算法(比如BP算法)时需要随机给网络赋一个值,而当这个权值太大的话,就很容易收敛到”差”的局部收敛点,权值太小的话则在进行误差反向传递时离输入层越近的权值更新越慢,因此优化问题是多层NN没有大规模应用的原因。而本文的作者设计出来的autoencoder深度网络确能够较快的找到比较好的全局最优点,它是用无监督的方法(这里是RBM)先分开对每层网络进行训练,然后将它当做是初始值来微调。这种方法被认为是对PCA的一个非线性泛化方法。

【神经网络】Reducing the Dimensionality of Data with Neural Networks的更多相关文章

  1. 一天一经典Reducing the Dimensionality of Data with Neural Networks [Science2006]

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

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

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

  3. 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 ...

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

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

  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. 深度神经网络多任务学习(Multi-Task Learning in Deep Neural Networks)

    https://cloud.tencent.com/developer/article/1118159 http://ruder.io/multi-task/ https://arxiv.org/ab ...

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

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

随机推荐

  1. APP缓存数据线程安全问题

    问题 一般一个 iOS APP 做的事就是:请求数据->保存数据->展示数据,一般用 Sqlite 作为持久存储层,保存从网络拉取的数据,下次读取可以直接从 Sqlite DB 读取.我们 ...

  2. iptables中ULOG和NFLOG实现分析【转】

    原文地址:http://blog.csdn.net/eydwyz/article/details/52456335 ----------原文如下---------------------------- ...

  3. (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 并不挶泥在这个点子上面,它反而往后站一步,看看他们已经做好的这个网站,可以再怎么包装成另一个完完全全不同的网站?所有的人所做的每件失败的事情中, 一定有碰到或含有成功的答案」在里面,只是他们不知道而已。 人不怕失败」,只怕宣布失败」

    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 今天读到 一个非常励志人心的故事 ,就像现在「叶问」有「前传」,最近很火红的团集购网站Groupon 也出现了「Groupon前传」 ...

  4. 使用Delphi实现票据精确打印

    一.概述在银行,税务,邮政等行业的实际工作中,经常涉及到在印刷好具有固定格式的汇款单,储蓄凭证,税票等单据上的确定位置打印输出相关的信息.在此类需求中,精确地定位单据并打印相关信息,是解决问题的关键. ...

  5. 【Android】Android实现监听返回键,主键(HOME),菜单键

    目录结构: contents structure [+] 简介 监听 返回键 监听 主键(Home键) 监听 菜单键 一.简介 本篇文章介绍如何在Android中实现监听返回键,主键,菜单键.一般情况 ...

  6. 【SQL】SQL中Case When的用法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...

  7. Redis 启动警告错误解决[转]

    Redis 启动警告错误解决 启动错误 1.WARNING overcommit_memory is set to 0! Background save may fail under low memo ...

  8. windows10安装tensorflow的gpu版本(pip3安装方式)

    前言: TensorFlow 有cpu和 gpu两个版本:gpu版本需要英伟达CUDA 和 cuDNN 的支持,cpu版本不需要:本文主要安装gpu版本. 1.环境 gpu:确认你的显卡支持 CUDA ...

  9. Android之内存泄露、内存溢出、内存抖动分析

      内存   JAVA是在JVM所虚拟出的内存环境中运行的,内存分为三个区:堆.栈和方法区.栈(stack):是简单的数据结构,程序运行时系统自动分配,使用完毕后自动释放.优点:速度快.堆(heap) ...

  10. JAVA Socket编程和C++ Socket编程有什么不同

    原文链接: http://zhidao.baidu.com/link?url=16TEzhom2Nr8x1_2uTRp-e2pgZRgS5nW5ywtRX2XLHbtLOG8btif5DTyP85jf ...