前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读---Reducing the Dimensionality of Data with Neural Networks

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

作者头像
用户1631856
发布2018-07-06 10:29:35
1.4K0
发布2018-07-06 10:29:35
举报
文章被收录于专栏:老秦求学老秦求学

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

降维有利于高维数据的分类、可视化、通信和存储。简单而普遍使用的降维方法是PCA(主要成分分析)--首先寻找数据集中方差最大的几个方向,然后用数据点在方向上的坐标来表示这条数据。我们将PCA称作一种非线性生成方法,它使用适应性的、多层“编码”网络将高维数据转换成低维数据,以及一个相似的“解码”网络将低维数据恢复到高维上。两种网络权重系数进行随机初始化,可以通过最小化原始数据和生成数据之间的差异对网络进行训练。梯度计算可以通过BP反向传播算法求解,由decoder网络梯度传到encoder网络中。

AutoEncoders
AutoEncoders

在有多隐层的非线性的autoencoder网络中,权重的优化工作很难进行。初始权重过大,autoencoders(自编码器)容易陷入局部最小值;初始权值过小,网络层的梯度很小,对于多层网络的自编码来说,训练过程变得更加困难。如果权重的初始值接近全局最优解,容易进行梯度计算;但是要找到这样的初始值要求提出一种每次学习一层特征的与之前完全不同的学习算法。对于图片中的二进制数据的预训练过程,推广到实值数据上,发现对于许多数据集这种方法都行之有效。

对于二进制向量组可以通过二层网络的RBM(restricted Boltzmann machine受限玻尔兹曼机)来进行建模,在RBM中,随机二进制像素连接到使用对称加权连接的随机二进制特征检测器。像素对应于受限玻尔兹曼机中的“可视化”单元,因为它们的状态是可以观察的,特征检测器对应于“隐藏”单元。可视化单元v 、隐藏单元h构成元组(v,h)对应的函数值为:

\[E(v,h) = -\sum_{i\in pixels}b_iv_i -\sum_{j\in features}b_j h_j - \sum_{i,j}v_ih_jw_{ij} \]

其中,

符号

含义

\(v_i\)

像素i的二进制状态

\(h_j\)

j特征的二进制状态,即神经元的输出

\(b_i\), \(b_j\)

i,j的偏置

\(w_{ij}\)

i像素和j特征之间的权重系数值

受限玻尔兹曼机通过这个函数把每张图片赋予了一个概率值。训练图片的概率值可以提高,通过调整权重和偏置来降低图片的能量函数值,提高相似的、“虚构”图像的能量函数值。对于一张训练样本图片,每个特征检测器j的二进制状态\(h_j\)设为1,概率为\(\sigma(b_j+\sum_i v_i w_{ij})\) ,其中\(\sigma(x)\)是logistic函数\(1/[1+exp(-x)]\) ,参数意义和表格中的意义相同[全连接,输入和第一隐层中的神经元全连接]。一旦隐含单元的二进制状态确定,可以通过设定每个\(v_i\)为1,概率为\(\sigma(b_i+\sum_j h_j w_{ij})\)产生一张新图片。然后再次更新隐含单元的状态,这样才能表示虚构出来的图片。权重系数的变化可以表示为:\[\Delta w_{ij} = \epsilon(<v_i h_j>_{data} - <v_i h_j>_{recon})\],其中\(\epsilon\)是学习率,\(<v_i h_j>_{data}\) 表示数据中像素i和特征检测器j同为1的频率,\(<v_i h_j>_{recon}\) 是对应生成图片中为1的频率。相同学习规则的简化版本用于偏差。尽管它并不完全遵循训练数据的对数概率梯度,但学习效果很好。

单层二进制特征并不是在一组图像中建模结构的最佳方式。在一层特征检测器学习完毕之后,我们可以把它们的激活值当做下一层网络的输入。第一层特征检测器成为学习下一个受限玻尔兹曼机的可见单元。这种逐层学习的方式可以重复多次。可以证明:在每层网络的特征检测器数目不变以及权重系数初始化非常理想的情况下,增加额外的一层总会提高训练数据的log概率的下限值。当网络较高层具有较少的特征检测器(神经元)时,这种log概率下界并不适用,但是逐层学习算法对于深度自编码器权重的预训练来说仍然是一种非常有效的方法。每个特征层捕获下层网络单元的激活值之间的强烈、高阶相关性。对于各种各样的数据集,这是一种非常有效的方法--逐渐显示/揭示/探索低维的、非线性的结构。

在预训练之后,模型“展开”形成--共享权值的编码器网络和解码器网络。在参数微调阶段,使用确定性的、实值概率代替随机性活动,在整个自编码器中使用BP反向传播算法调整权重系数,以便优化图像重构过程。

对于连续数据,第一层RBM的隐藏单元保持二进制状态,但是对可见单元使用高斯噪声Gaussian Noise代替线性单元。如果噪声方差为1,隐藏单元的随机更新规则与前面保持一致,可见单元\(i\) 的更新规则:在方差为1,均值为\(b_i + \sum_j h_j w_{ij}\) 的高斯过程中随机取样。

在进行的所有实验中,每个受限玻尔兹曼机的可见单元都有实值输出,对于logistic单元来说输出在[0,1]范围内。在训练高层RBMs时,上一层RBM隐藏单元的输出当做下一层RBMs网络可见单元值,但是除了最顶层RBMs以后每个RBM的隐藏单元都是随机二进制值。最顶层RBM网络的隐藏单元为随机实值,这些值来源于单位方差、均值由RBMs logistic可见单元决定的高斯过程。这允许低维数据利用连续数据变量,方便和PCA做比较。

为了说明预训练算法能有效地微调深度神经网络,我们在人造数据上训练一个深度自编码器,数据包含在二维上随机选择三个点构成的曲线图。对于这个数据集,数据的维度是已知的,像素强度和其6个数之间的关系时高度非线性的。像素强度值在0,1之间,非高斯过程变量,所以,在自编码器中使用logistic输出单元,微调阶段最小化交叉熵误差函数:\([-\sum_i p_i log \hat{p}_i - \sum_i (1-p_i) log (1-\hat{p}_i)]\) ,其中\(p_i\)是\(i\) 像素的intensity,\(\hat{p}_i\)是重构图片的intensity。

自编码器架构为:(28 x 28)-400-200-100-50-25-6的编码器和与之对称的解码器。在code编码层的6个单元是线性的,其他单元都是logistic函数单元。网络的训练样本为20000张图片,测试样本为10000张图片。自编码器学习到如何将784个像素值的图片转换为6个实值向量,这6个实数值能重构出新的图片。PCA重构出的图片更加糟糕。没有预训练阶段,尽管经过长期的参数微调,深度autoencoders总是重建训练数据的平均值。在数据和code之间只有一层隐含层的浅autoencoders在不经过预训练阶段也可以训练学习,但是预训练阶段可以大量地减少训练时间。当参数数量相同时,深度autoencoders比浅层autoencoders重构误差更小;当参数数量增加时,深度autoencoders的这个特点就不复存在了。

之后,我们使用一个784-1000-500-250-30的自编码器来提取MNIST手写数字字体的降维数据。预训练和参数微调的MATLAB代码 .除了code层的30个是线性单元之外,都是logistic函数单元。在60000张训练图片进行参数微调之后,autoencoder在10000张新图片上进行测试,其重构结果优于PCA。

对于分类和回归问题,也可以使用逐层预训练方法。在MNIST手写数字识别上,权重随机初始化使用BP算法的网络错误率最低为1.6%,SVM为1.4%。在经过784-500-500-2000-10网络逐层预训练之后的,BP算法、低学习率最终识别错误率低至1.2%。预训练有助于提高泛化能力。

假设计算机计算速度足够迅速,数据集足够大,初始权重足够理想,从1980s年代开始,使用BP算法的深度自编码器对于非线性降维是一种非常有效的方式。这些假设条件当下已经满足。与非参数方法不同,自动编码器提供数据和code之间的双向映射,并且它们可以应用于非常大的数据集,因为两者训练和微调在时间和空间上与训练案例的数量成线性关系。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档