自动编码机更像是一个识别网络,只是简单重构了输入。而重点应是在像素级重构图像,施加的唯一约束是隐藏层单元的数量。
有趣的是,像素级重构并不能保证网络将从数据集中学习抽象特征,但是可以通过添加更多的约束确保网络从数据集中学习抽象特征。
稀疏自编码器(又称稀疏自动编码机)中,重构误差中添加了一个稀疏惩罚,用来限定任何时刻的隐藏层中并不是所有单元都被激活。如果 m 是输入模式的总数,那么可以定义一个参数 ρ_hat,用来表示每个隐藏层单元的行为(平均激活多少次)。基本的想法是让约束值 ρ_hat 等于稀疏参数 ρ。具体实现时在原始损失函数中增加表示稀疏性的正则项,损失函数如下:

如果 ρ_hat 偏离 ρ,那么正则项将惩罚网络,一个常规的实现方法是衡量 ρ 和 ρ_hat 之间的 Kullback-Leiber(KL) 散度。
准备工作
在开始之前,先来看一下 KL 散度 DKL的概念,它是衡量两个分布之间差异的非对称度量,本节中,两个分布是 ρ 和 ρ_hat。当 ρ 和 ρ_hat 相等时,KL 散度是零,否则会随着两者差异的增大而单调增加,KL 散度的数学表达式如下:

下面是 ρ=0.3 时的 KL 的散度 DKL的变化图,从图中可以看到,当 ρ_hat=0.3时,DKL=0;而在 0.3 两侧都会单调递增:

具体做法
导入必要的模块:

从 TensorFlow 示例加载 MNIST 数据集:

定义 SparseAutoEncoder 类,除了引入 KL 散度损失之外,它与前面的自动编码机类非常相似:

将 KL 约束条件添加到损失函数中,如下所示:

其中,alpha 是稀疏约束的权重。该类的完整代码如下所示:

声明 SparseAutoEncoder 类的一个对象,调用 fit() 训练,然后计算重构的图像:

重构损失均方误差随网络学习的变化图:

查看重构的图像:

结果如下:

解读分析
必须注意到,稀疏自编码器的主要代码与标准自动编码机完全相同,稀疏自编码器只有一个主要变化——增加了KL散度损失以确保隐藏(瓶颈)层的稀疏性。如果将两者的重构结果进行比较,则可以看到即使隐藏层中的单元数量相同,稀疏自动编码机也比标准自动编码机好很多:

在 MNIST 数据集上,标准自动编码机训练后的重构损失是 0.022,而稀疏自编码器是 0.006,由此可见稀疏自编码器对数据的内在表示学习得更好一些。

稀疏自编码器及TensorFlow实现相关推荐

  1. TensorFlow学习--自编码器/稀疏自编码器/堆叠自编码器

    自编码器(Auto Encoder) 神经网络常常用于分类,通过定义一个目标函数衡量输出与目标值之间的差异,然后通过调整系统的参数使系统尽量拟合训练数据. 而对每一层神经网络来说,前一层的输出都是可看 ...

  2. [自编码器:理论+代码]:自编码器、栈式自编码器、欠完备自编码器、稀疏自编码器、去噪自编码器、卷积自编码器

    写在前面 因为时间原因本文有些图片自己没有画,来自网络的图片我尽量注出原链接,但是有的链接已经记不得了,如果有使用到您的图片,请联系我,必注释. 自编码器及其变形很多,本篇博客目前主要基于普通自编码器 ...

  3. UFLDL:稀疏自编码器

    吴恩达的 CS294A 是一门很好的深度学习入门课程,打算接下来的学习以这个课程的内容为主.UFLDL Tutorial 是 CS294A 课程的 wiki 页,包含了课程讲义和作业.如果你对 监督学 ...

  4. 深度学习笔记一:稀疏自编码器

    开始学习深度学习了,既然确定目标就要努力前行!为自己加油!--2015.6.11 Sparse Encoder 1.神经网络 概念:假设我们有训练样本集 (x(^ i),y(^ i)) ,那么神经网络 ...

  5. 稀疏自编码器符号一览表

     稀疏自编码器符号一览表 From Ufldl Jump to: navigation, search 下面是我们在推导sparse autoencoder时使用的符号一览表: 符号 含义 训练样 ...

  6. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

     深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...

  7. 为什么稀疏自编码器很少见到多层的?

    Andrew Ng 的视频和资料也好,还是网上的资料和代码,以及书上的内容,我很少见到稀疏自编码器是多层的结构一般都是{N,m,N}的三层结构(一层是隐层,输入输出各一层)为什么很少见到例如{N,m, ...

  8. Stanford UFLDL教程 稀疏自编码器符号一览表

    稀疏自编码器符号一览表 下面是我们在推导sparse autoencoder时使用的符号一览表: 符号 含义 训练样本的输入特征,. 输出值/目标值. 这里 可以是向量. 在autoencoder中, ...

  9. 稀疏自编码器_自编码(AutoEncoder)模型及几种扩展之二

    4. 稀疏自编码 假设我们只有一个没有类别标签的训练样本集合{x(1),x(2)...},一个自编码神经网络就是一种非监督学习算法,它使用BP算法,并将目标值设为: y(i)=x(i). 我们的目标是 ...

最新文章

  1. 公示 | 清华大学大数据研究中心“RONG”奖学金获奖名单
  2. X86-64寄存器和栈帧--牛掰降解汇编函数寄存器相关操作
  3. java位于算——一个测试搞懂位运算
  4. 1.odoo13之跟着官网做项目/实例(创建模块、创建模型类、配置角色安全权限文件)
  5. Python学习笔记之常用模块总结,持续更新...
  6. Anaconda下安装tensorflow-gpu踩坑日记
  7. Python项目实践:自动轨迹绘制(根据脚本绘制图形)
  8. React的学习曲线
  9. centos 实现ssh远程连接docker
  10. 编程小白入门分享三:Spring AOP统一异常处理
  11. 转载:OpenStack从入门到放弃
  12. alfred 4 (mac提升效率工具)
  13. EXCEL电子档色环电阻计算器
  14. 软件测试计划与测试方案
  15. 关于RAID磁盘阵列与阵列卡的介绍 —— 做一个懂它的男人
  16. Chrome保存整个网页为图片、PDF
  17. MySQL5.7修改默认root密码
  18. 小马哥----高仿三星note3 N9006主板型号A202 高通芯片刷机拆机图示
  19. javascript中加减时间
  20. TED听后笔记:如何理解并克服拖延症

热门文章

  1. app如何打开了request url_手机日历app内如何打开节日提醒功能?支持提前提醒节日的云便签...
  2. 科大奥锐干涉法测微小量实验的数据_光学干涉观测精确丈量宇宙 | 赛先生天文...
  3. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)
  4. 2022-2028年中国PVC糊树脂行业市场深度分析及市场规模预测报告
  5. 斯坦福CS224n、CMU NLP公开课 播放地址
  6. Pytorch 多 GPU 并行处理机制
  7. 自然语言处理课程(二):Jieba分词的原理及实例操作
  8. UTF-8与UTF-8 BOM
  9. pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization...
  10. NVIDIA DPU架构