深度学习基础(八)—— 稀疏自编码器
自编码器神经网络尝试学习一个:
h_{W,b}(x)\approx x
的函数,换句话说,它尝试逼近一个恒等函数(identity function,或叫证同函数),使得输出 x^\hat x 接近于输入 xx。
恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。
隐藏神经元数量较小 ⇒ 类似于 PCA,实现降维;
即使隐藏神经元的数量较大(可能比输入像素的个数还要多),我们仍然通过给自编码神经网络施加一些其他的限制条件来发现输入数据中的结构。具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。
稀疏性可以被简单地解释如下。如果当神经元的输出接近于 1 的时候我们认为它被激活,而输出接近于 0 的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是 sigmoid 函数(其值域在 (0,1))。如果你使用 tanh(值域 (-1, 1)) 作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。
a(2)ja_j^{(2)}表示隐层神经元 jj 的激活度,使用 a(2)j(x)a_j^{(2)}(x) 表示在给定输入为 xx 的情况下,自编码神经网络隐藏神经元 jj 的激活度。
\hat \rho_j=\frac1m\sum_{i=1}^ma_j^{(2)}(x_i)
ρ^j\hat \rho_j 表示隐层神经元的平均活跃度(在全部数据集上的平均)。我们可以近似地加入一些限制:
\hat \rho_j=\rho
其中 ρ\rho 是稀疏性参数,通常是一个接近于 0 的较小的值( ρ=0.05\rho=0.05),也即我们要限制隐层神经元 jj 的平均活跃度接近 0.05。为了实现这一限制,我们将会在我们的优化目标函数中加入一些额外的惩罚因子,而这一惩罚因子将惩罚那些 ρ^j\hat \rho_j 和 ρ\rho 有显著不同的情况,从而使隐层神经元的平均活跃度保持在较小范围内。惩罚因子的具体形式有很多种合理的选择,我们将会选择以下这种:
\sum_{j=1}^{s_2}\rho\log{\frac{\rho}{\hat \rho_j}}+(1-\rho)\log\frac{1-\rho}{1-\hat\rho_j}
这里,s2s_2 是隐藏层中隐藏神经元的数量,而遍历 jj 可得隐层中每一个神经元。这一惩罚因子其实是基于 KL-divergence 的,于是惩罚因子也可被表示为:
\sum_{i=1}^{s_2}\text{KL}(\rho||\hat \rho_j)
其中 KL(ρ||ρ^j)=ρlogρρ^j+(1−ρ)log1−ρ1−ρ^j\text{KL}(\rho||\hat \rho_j)=\rho\log\frac{\rho}{\hat \rho_j}+(1-\rho)\log\frac{1-\rho}{1-\hat\rho_j} 相对熵是一种标准的用来测量两个分布之间差异的方法。
这一惩罚因子有如下性质,当 ρ^j=ρ\hat\rho_j=\rho 时,KL(ρ||ρ^j)=0KL(\rho||\hat\rho_j)=0,并且随着 ρ^j\hat\rho_j 与 ρ\rho 之间的差异增大而单调增加。举例来说,在下图中,我们设定 ρ=0.2\rho=0.2,并且画出了相对熵 KL(ρ||ρ^j)KL(\rho||\hat\rho_j) 随着 ρ^j\hat\rho_j 随着 ρ^j\hat\rho_j 的变化情况:
import numpy as np
import matplotlib.pyplot as pltdef kl(p, q):return p*np.log(p/q) + (1-p)*np.log((1-p)/(1-q))
p = .2
q = np.arange(0, 1, 0.01)[1:]
plt.plot(q, kl(p, q))
plt.show()
我们可以看出,相对熵在 ρ^j=ρ\hat\rho_j = \rho 时达到最小值 0,而当 ρ^j\hat\rho_j 靠近 0 或者 1(也即远离 ρ\rho)时,相对熵则会变得非常大。所以最小化这一惩罚因子具有使得 ρ^j\hat\rho_j 靠近 ρ\rho 的效果,现在我们的总体代价函数为:
J_{\text{sparse}}(W,b)=J(W,b)+\beta\sum_{i=1}^{s_2}\text{KL}(\rho||\hat\rho_j)
深度学习基础(八)—— 稀疏自编码器相关推荐
- 深度学习笔记之稀疏自编码器
深度学习笔记之稀疏自编码器 引言 引子:题目描述 正确答案: A B C D \mathcal A \mathcal B \mathcal C \mathcal D ABCD 题目解析 介绍:自编码器 ...
- 深度学习基础 | 超详细逐步图解 Transformer
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Seq2 ...
- 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习
2021年3月份有三AI与阿里天池联合推出了深度学习系列课程, 课程内容包括人工智能与深度学习发展背景,深度学习典型应用,卷积神经网络,循环神经网络,生成对抗网络,深度学习开源框架等内容,目前已经基本 ...
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐
人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...
- 深度学习基础 | NLP大魔王 · BERT
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Se ...
- 第三章_深度学习基础
文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...
- 深度学习基础知识点【更新中】
深度学习基础知识点 文章目录 深度学习基础知识点 1. 数据归一化 2. 数据集划分 3. 混淆矩阵 4. 模型文件 5. 权重矩阵初始化 6. 激活函数 7. 模型拟合 8. 卷积操作 9. 池化操 ...
- 【零基础深度学习教程第一课:深度学习基础】
深度学习基础 目录 *深度学习基础* <第一节 深度学习简介> 一.深度学习与机器学习区别 二.神经网络简介 2.1 单神经元网络 2.2 多神经元网络 <第二节 神经网络基础> ...
- 五万字总结,深度学习基础。
文章目录 1 基本概念 1.1 神经网络组成? 1.2 神经网络有哪些常用模型结构? 1.3 如何选择深度学习开发平台? 1.4 为什么深层神经网络难以训练? 1.5 深度学习和机器学习的异同? 2 ...
- 【书摘】深度学习简史(摘抄自《深度学习基础与应用》)
本文内容摘抄自 <深度学习基础与应用> 北京理工大学出版社 武玉伟 等编著 2020年4月出版 ISBN:978-7-5682-8373-1 该书绪论中讲到 人工智能和深度学习的发展历史, ...
最新文章
- java反射 面试题_使用Java反射更改私有静态最终字段
- mysql 账户管理_Mysql账户管理原理与实现方法详解
- mysql是bsd协议吗_freebsd下实现mysql的自动备份
- 用python写行列式_用Python开发线性代数算法(一) | 手写行列式算法的实现
- gsoap 实现 C/C++ 调用web service
- 吴恩达神经网络和深度学习-学习笔记-14-学习率衰减
- storage相关网站
- 计算点到SVM超平面的距离
- 分布式系统的概念、特点及常见方案
- 计算机的配置与选购调查报告,目前主流计算机的配置及选购的调查报告
- python 卡方分布函数_推断统计分析(二):python验证三大抽样分布
- 修行一定要在寺院里吗,出家人离开寺院修行,都属邪门外道吗?
- 基于群智能算法的函数最值优化问题
- 2011年北邮各组组线
- c#调用目标检测模型
- 数据分析师培训告诉你 三个最常见的数据分析面试方向
- Ubuntu16.04的图形化界面系统安装+NIVIDIA驱动安装-Cuda-Cudnn+教程全(后面安装系统通用)
- Prior Posterior和Likelihood的理解与几种表达方式
- Android实现的电子木鱼,功德+1...
- EasyNTS上云网关设备在雪亮工程项目中的实战应用
热门文章
- 时空复杂度(时间复杂度/空间复杂度)O(1)、O(n)、O(n^2)、O(log n)、O(n log n)是什么意思,借鉴 然后自己借鉴出来
- vue回调函数this指向问题
- Doris之磁盘空间管理(重点)
- 负载均衡的原理和架构
- 核方法(kernel method)的主要思想
- 1tensorflow 实现端到端的OCR:二代身份证号识别 + 2tensorflow LSTM+CTC实现端到端的不定长数字串识别
- java jtextfield 密码_Java Swing实战(三)文本组件JTextField和密码组件JPasswordField
- 模拟任务调度算法 C语言 【留学生作业】
- django----对model查询扩展
- Apache mod_rewrite