• 发文
  • 评论
  • 微博
  • 空间
  • 微信

人工智能之Autoencoder算法

AI优化生活 2018-06-18 22:12 发文

人工智能之Autoencoder算法

原创    张志荣

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下Autoencoder算法。 ^_^ 

Autoencoder自动编码器算法是深度学习最常见的算法之一,因此值得研究。Autoencoder自动编码器是神经网络NN[(请参见人工智能(23)]的一种,今天就跟大家介绍一下Autoencoder算法。

Autoencoder自动编码器是1986年由Rumelhart 提出,可用于高维复杂数据处理, 它促进了神经网络NN的发展。自动编码神经网络是一种无监督学习算法(训练示例未标记),它使用了BP反向传播算法,并让目标值等于输入值。

Autoencoder自动编码器被用于降维或特征学习。之前介绍过两种降维方法:PCA[请参见人工智能(46)]和SVD[请参见人工智能(54)]。

Autoencoder自动编码器多层神经网络,其中输入层和输出层表示相同的含义,具有相同的节点数, 即输出层的神经元数量完全等于输入层神经元的数量。隐藏层的神经元数量少于输出层的神经元数量。如下图所示:   

Autoencoder算法概念:

Autoencoder自动编码器是神经网络NN的一种,经过训练后能尝试将输入复制到输出,换句话说,就是使输出的内容和输入的内容一样。Autoencoder自动编码器学习的是一个输入输出相同的“恒等函数”。

自动编码器的网络结构很简单,包括Input Layer,Hidden Layer和Output Layer。其中,动编码器内部有一个隐含层h,可以产生编码来表示输入。该网络可以看作由两部分组成:一个编码器h=f(x)和一个生成重构的解码器r=g(h)。最后使得x约等于g(f(x))。可以通过设计网络使得x=g(f(x))。

Autoencoder算法本质:

Autoencoder算法本质是:将神经网络NN的隐含层看成是一个编码器和解码器,输入数据经过隐含层的编码和解码,到达输出层时,确保输出的结果尽量与输入数据保持一致。也就是说,隐含层是尽量保证输出数据等于输入数据的。 

理论上可以的,但实际不这么做。Autoencoder自动编码器应该设计成不能学会完美地复制,通过强加一些约束,使Autoencoder自动编码器只能近似地复制,因此它能学习到数据的有用特性。

Autoencoder自动编码器网络的约束如下:

1)HiddenLayer的维度要远小于Input Layer维度;

2)Output用于重构Input,即让误差L(Input,Output)最小

因为是无标签数据,所以误差的来源就是重构后与输入相比得到的。

Autoencoder算法描述:

Autoencoder自动编码器可以看做将数据进行压缩,由原来的“n维”压缩成“m维”,其中m为隐藏层神经元数目。然后再在需要的时候用损失尽量小的方式将数据恢复出来。

算法描述

1)Autoencoder自动编码网络是要将经过压缩数据还原,即将学习一组hW,b≈x,这是算法要学习的参数

2)还原数据应该使得损失尽量小,规定了目标函数为:

J(W,b)=(∑(x^−x)^2)/m

AutoEncoder通过普通的BP神经网络进行预训练,从而确定神经网络中权重矩阵W的初始值。其目标是让输入值等于输出值。首先用W对输入进行编码,经过激活函数后,再用WT进行解码,从而使得h(x)≈x。该过程可以看作是对输入数据的压缩编码,将高维的原始数据用低维的向量表示,使压缩后的低维向量能保留输入数据的典型特征,从而能够较为方便的恢复原始数据。需要注意的是:在对数据进行编码和解码时,使用的是同一个参数矩阵W。这可看作是一种约束,可以减少参数个数,降低模型复杂度

数据压缩是指限制隐藏层神经元数量。数据压缩依靠的是数据本身是有冗余信息的。当输入是完全随机,相互独立同分布的时候,网络将很难学得一个有效的压缩模型,然而现实中的数据(自然图像、语言、声音)总是存在不同程度的冗余性。Autoencoder自编码网络通过学习发现并去掉了这些冗余信息

实际上,自编码网络学习出的低维数据表示十分类似于PCA[请参见人工智能(46)]学习出的主成分。学习过程可以简单地描述为最小化一个损失函数L(x,g(f(x)))+Ω(h) , Ω(h)是惩罚项。当解码器是线性的且L是均方误差,就可以学习出与PCA方法相同生成子空间。AutoEncoder其实是增强的PCA。AutoEncoder 具有非线性变换单元,因此学出来的Code可能更精炼,对Input的表达能力更强。

另外一种数据压缩方式就是限制隐藏层的稀疏性,要求隐藏层中的激活神经元是“稀疏”的,即隐藏层中大部分神经元处于非激活状态。这样的编码器称为SparseAutoencoder稀疏自编码器

SparseAutoencoder稀疏自编码器的全局损失函数为:

算法流程大概为:由输入与输出的差别构造准则函数,再求各个参数的偏导数,再用BP方式更新各个权重(采用梯度下降法)。在Sparse Autoencoder网络训练中,前向传播步骤应同时计算ρ,然后在后向传播步骤时做相应的修改。

Autoencoder算法意义:

Autoencoder自动编码器尝试逼近一个恒等函数,使得输出x^接近于输入x。当然为了使这个函数有意义,需要加入一些限制条件,比如说限制隐藏神经元的数目,就可以发现一些有意义的结构。Autoencoder可以学习到数据的一些压缩表示。例如如果输入数据为200维,隐藏层为100个,那么就需要从这100维的数据中重构出200维的输出,使这个输出接近于200维的输入。因此这个隐藏层的100维的数据就必然会包含着输入数据的一些相关性。所以说Autoencoder就是为了学习到输入数据的相关性表示的一种方法。

Autoencoder算法优点:

1)有降维效果,可以用于提取主要特征;

2)可以抓住主要特征,故具有一定抗噪能力;

3)稀疏的可解释性好,现实场景大多满足这种约束;

4)算法比较稳健;

5)表达能力强;

6)扩展能力强;

7)便于数据可视化分析。

Autoencoder算法缺点:

1)理论上看起来很智能,但是实际上并不太好用;

2)压缩能力仅适用于与训练样本相似的样本;

3)要求 encoder 和 decoder 的能力不能太强。

Autoencoder算法改进:

Hinton于2006年对原型自动编码器结构进行改进,产生了DAE(Deep Auto Encoder),先用无监督逐层贪心训练算法完成对隐含层的预训练,然后用BP 算法对整个神经网络进行系统性参数优化调整,显著降低了神经网络NN的性能指数,有效改善了BP 算法易陷入局部最小问题。

DAE相对于AutoEncoder加大了深度,提高学习能力,更利于预训练

DenoisingAutoEncoder去噪自动编码器是AutoEncoder的一个变种,与AutoEncoder不同的是,Denoising AutoEncoder在输入的过程中加入了噪声信息,从而让AutoEncoder能够学习这种噪声。Denoising AutoEncoder与RBM[(请参见人工智能(37)]非常像(参数、作用和过程类似),但也有区别(原理、训练准则和训练方法等不一样)。

Autoencoder算法应用:

Autoencoder算法期望利用样本自适应学习出稳健、表达能力强、扩展能力强的设想很好,但是实际中应用场景很有限。一般可以应用于机器学习之数据降维、特征抽取和数据可视化分析,也被扩展用于生成模型中(有学者说效果惊人)。

结语:

Autoencoder算法是机器学习之深度学习最常见的算法之一,它是一种无监督的学习算法,值得深入研究。Autoencoder网络结构可以有多层,且多层网络可以由标准的BP算法来更新网络权重和偏置,与标准神经网络不同的是Autoencoder的输入层和输出层是“同一层”。AutoEncoder其实是增强的PCA。Autoencoder算法是一种非常实用的学习算法,应用范围一般,但扩展能力强,可以应用于机器学习之数据降维、特征抽取和数据可视化分析,也被扩展用于生成模型中。

   -----以往文章推荐-----    

机器学习

深度学习

人工神经网络

决策树

随机森林

强化学习

迁移学习

遗传算法

朴素贝叶斯

支持向量机

蒙特卡罗方法

马尔科夫模型

Hopfield神经网络

回归模型

K邻近算法

卷积神经网络

受限玻尔兹曼机

循环神经网络

长短时记忆神经网络

Adaboost算法

ID3算法

C4.5算法

CART算法

K-Means算法

Apriori算法

PCA算法

ICA算法

TD-Learning算法

Q-Learning算法

SOM算法

GBM算法

GBDT算法

EM算法

SVD算法


声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    AI优化生活

    讨论和分享人工智能和相关领域的前...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码