漫谈autoencoder:降噪自编码器/稀疏自编码器/栈式自编码器(含tensorflow实现)

0. 前言

  在非监督学习中,最典型的一类神经网络莫过于autoencoder(自编码器),它的目的是基于输入的unlabeled数据 X = { x ( 1 ) , x ( 2 ) , x ( 3 ) , . . . } X=\{x^{(1)}, x^{(2)}, x^{(3)}, ...\} X={ x(1),x(2),x(3),...},通过训练得到数据的一个降维特征表达 H = { h ( 1 ) , h ( 2 ) , h ( 3 ) , . . . } H=\{h^{(1)}, h^{(2)}, h^{(3)}, ...\} H={ h(1),h(2),h(3),...}。以图像识别为例,隐层 H H H会提取出图像的边角,将这种更为抽象的特征作为后续的多层感知网络的输入,可以更好地表达输入图像,在图像分类等任务上获得更好的性能。
  从最原始的自编码器衍生出很多不同的种类:
   - 降噪自编码器,接受加噪的输入来进行训练
   - 稀疏自编码器,对隐层的激活输出进行正则,同一时间只有部分隐层神经元是活跃的
   - 栈式自编码器,级联多个自编码器,逐层提取抽象特征

1. 自编码器

1.1 定义

   自编码器分为两个部分,编码器encoder和解码器decoder。一个单隐层的AE的网络结构如下图所示:
在这里插入图片描述

   从上图可以看到,自编码器输出层的节点数与输入层相等,训练这个网络以期望得到近似恒等函数,以下分别对encoder/decoder以及损失函数进行表示:
  编码器:
h = σ ( W x + b ) h=\sigma{(Wx+b)} h=σ(Wx+b)
  解码器:
x ^ = σ ( W ′ h + b ′ ) \hat{x}=\sigma{(W^{'}h+b^{'})} x^=σ(Wh+b

  • 88
    点赞
  • 460
    收藏
    觉得还不错? 一键收藏
  • 52
    评论
Matlab降噪自编码器是一种常用的无监学习算法,用于降低数据中的噪声并提取有用的特征。它是一种基于神经网络的模型,通过训练自编码器来学习输入数据的低维表示。 降噪自编码器由两部分组成:编码器和解码器。编码器将输入数据映射到一个较低维度的隐藏层表示,而解码器则将隐藏层表示映射回原始输入空间。在训练过程中,自编码器通过最小化重构误差来学习如何去除输入数据中的噪声。 在Matlab中,可以使用深度学习工具箱来实现降噪自编码器。以下是一些实现降噪自编码器的步骤: 1. 准备数据:首先,需要准备一个包训练样本的数据集。可以使用Matlab中的数据导入工具或自己准备数据。 2. 构建模型:使用深度学习工具箱中的函数构建降噪自编码器模型。可以选择不同的网络结构和参数设置,例如选择编码器和解码器的层数、每层的节点数等。 3. 定义损失函数:为了训练模型,需要定义一个损失函数来衡量重构误差。常用的损失函数包括均方误差(MSE)和交叉熵损失。 4. 训练模型:使用训练数据集来训练降噪自编码器模型。可以使用深度学习工具箱中的训练函数,如trainNetwork()。 5. 评估模型:训练完成后,可以使用测试数据集来评估模型的性能。可以计算重构误差或其他指标来评估降噪自编码器的效果。 6. 应用模型:训练完成的降噪自编码器可以用于去除输入数据中的噪声,并提取有用的特征。可以将新的数据输入到模型中,通过解码器获得降噪后的输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值