自编码(Autoencoder)-深度学习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
更准确地说,
g( f ( x)) x
2
(log Q ( x)) 一个相容估计,即: 是 x (log Q( x)) x
g( f ( x)) x

2
去噪自编码(Denoising Autoencoder)
1、图中每个箭头长度正比于:重建 值减去自编码的输入矢量; 2、方向:根据隐含估计的概率分布 指向更高的概率值; 3、注意:估计密度函数的顶峰(数
)) x g( f ( x
2
学习一个向量场(绿色的箭头) )) x g( f ( x DAE用于从破损的
重建干净的数据 x x
向量场用于估计一个梯度场 (log Q ( x)) x
其中,Q(x)是未知的数据分布
去噪自编码(Denoising Autoencoder)
学习一个向量场用于估计梯度场
反向传播算法(Backpropagation algorithm) 详细推导步骤 首先,通过前向网络,计算每个神经元的激活值(activations),包括输出值: 其次,对于第L层的第i节点,计算其误差项: 对于输出节点, 有: 表示输出层
推导见下一张PPT。
稀疏自动编码器(Sparse Autoencoder )
栈式自编码 (Stacked Autoencoder)
本节小结
栈式自编码神经网络具有强大的表达能力及深度神经网络的所有优点。 更进一步,它通常能够获取到输入的“层次型分组”或者“部分-整体分解” 结构。自编码器倾向于学习得到能更好地表示输入数据的特征。 举个例子,如果网络的输入数据是图像,网络的第一层会学习如何
反向传播算法(Backpropagation algorithm) 详细推导步骤 对于 ,有: 其中, 表示l+1层神经元个数
如何得来的呢?推导过程:
i(l )
( l 1) z E E j (l ) (l 1) (l ) zi zi j z j sl 1
(l ) [ w f ( z ji i )] ( l 1) i j zi(l ) j sl 1 sl
噪声的两个来源:
1、来自于样本中选择的训练数据集x
2、对数据集x的随机破坏(或添加噪声),从而获得 x
去噪自编码(Denoising Autoencoder)
流形学习观点
x : 图 中 的 红十字 , 分布在低维流
形附近。
C(x|x)
:破损处理,灰色的圈代表 等概率的破损
DAE 训练最小化均方误差:
x(k )
(1)
然后,你再用这些一阶特征作为另 一个稀疏自编码器的输入,使用它 们来学习二阶特征 hk
(2)
训练第一个自编码器,它能够学习 得到原始输入的一阶特征表示 hk
栈式自编码 (Stacked Autoencoder)
接下来,你可以把这些二阶特征作 为softmax分类器的输入,训练得到 一个能将二阶特征映射到数字标签 的模型。 最终,你可以将这三层结合起来构建一个 包含两个隐藏层和一个最终softmax分类 器层的栈式自编码网络,这个网络能够如 你所愿地对MNIST数字进行分类。
z (l 1) W (l ,1) a(l ) b(l ,1)
其中, a 通过将
(n)
是最深层隐藏单元的激活值,这个向量是对输入值的更高阶的表示。 作为softmax分类器的输入特征,可以网络中学的特征用于分类问题。
a (n)
栈式自编码 (Stacked Autoencoder)
具体实例
训练一个包含两个隐含层的栈式自编码网络,用来进行MNIST手写数字分类。 首先,你需要用原始输入
自编码简介(Autoencoder)
重建误差的概率解释
目标函数: L log P( x | g ( f ( x))) 损失函数的选取取决于输入数据的类型:如 果输入是实数值,无界值,损失函数使用平 方差(squared error);如果输入时位矢量, 交叉熵(cross-entropy)更适合做损失函数。 我们可以认为训练一个解码函数等同于对 条件分布P(x|h)的估计;同样的道理,可以 将编码函数理解为一个条件分布Q(h|x),而
g( f ( x))
用于估计梯度场
(log Q( x)) x
这个属性在以下前提条件下已被证明(Alain and Bengio, 2012, 2013)
x是连续值,损坏(添加噪声)和重建分布都服从高斯分布
)) x 均方误差: g( f ( x
2源自文库
x | x) N ( x ; x, 2 I ) 破损处理服从以下分布:C( X
ˆj 为使KL散度尽可能小,则:
从而使得类似于右图中的神经元 激活值较小,处于抑制状态。
(2) (2) a1(2) a2 a3

稀疏自动编码器(Sparse Autoencoder )
部分代码:
初始化
前向计算各神经元的线 性组合值和激活值
权值惩罚项 稀疏项 损失函数的总表达式
栈式自编码 (Stacked Autoencoder)
zi(l )
稀疏自动编码器(Sparse Autoencoder )
反向传播算法(Backpropagation algorithm)
输入: 损失函数: 其中,
共m个训练集
类似于
加入正则化项(权重衰减项,weight decay),如下式:
稀疏自动编码器(Sparse Autoencoder )
自动编码器就是一种尽可能复现输入信号的神经网络;
自动编码器必须捕捉可以代表输入数据的最重要的因素;
类似 PCA,找到可以代表原信息的主要成分。
自编码简介(Autoencoder)
几种自编码的共同点
自编码的共同点:是除了预防针对x简单地学习一个恒等函数外,还
包含在以下两方面取折中。
1、学习到一个针对x的表示h,x也能通过一个解码器从h中还原;需要 注意的是:这并不需要对所有x都满足,只满足对那些服从数据分布的x 即可。(重建误差) 2、减小模型代表性的能力,使在尽可能多的输入方向上不敏感。(模型 的表达能力,泛化能力??)
如上图,其实就是限制每次得到的表达 code尽量稀疏。因为稀疏的表 达往往比其他的表达要有效(人脑好像也是这样的,某个输入只是刺激 某些神经元,其他的大部分的神经元是受到抑制的)。
稀疏自动编码器(Sparse Autoencoder )
基础知识回顾
输入: x1 , x2 , x3
T 输出: hW ,b ( x) f (W x) f ( i 1Wi xi b) 3
什么是交叉熵?
不仅仅是一个“干巴巴”的函数式子。
p和q分布的交叉熵是:p分布的
信息熵和p和q的DL散度的和。
H ( p, q) Ep [ log q] H ( p) DKL ( p || q)
稀疏自动编码器(Sparse Autoencoder )
如果在AutoEncoder的基础上加上L1的 Regularity限制(L1主要是约束每一层 中的节点中大部分都要为0,只有少数 不为0,这就是Sparse名字的来源), 我们就可以得到Sparse AutoEncoder法。
栈式自编码神经网络是一个由多层稀疏自编码器组成的神经网络,其前 一层自编码器的输出作为其后一层自编码器的输入。采用逐层贪婪训练
法进行训练,获取栈式自编码神经网络参数。 栈式自编码在预训练(初始化)深度神经网络的权重使用较多
按照从前向后的顺序执行每一层自编码器的编码步骤:
a (l ) f ( z (l ) )
据流形上)和低谷(局部最小)向量
场为零值。
去噪自编码(Denoising Autoencoder)
将梯度场变成一个生成模型
编码-解码对的应用可以给我们生成一个大概的结构,如果我们考虑蒙特卡罗 马尔科夫链算法 (MCMC),两方面需要注意: 1、从低概率结构转移到高概率结构
2、加入随机性,使得链可到处转移(不至于在一些概率或模型的顶峰被
qD (x|x) x
y f (x)
z g ' ( y)
训练指导思想:最小化
LH (x,z)
d k 1
其中,
L H (x,z) = -[ xk log zk (1 xk ) log(1 zk )]
信息熵
+
KL散度
去噪自编码(Denoising Autoencoder)
去识别边,第二层一般会学习如何去组合边,从而构成轮廓、角等。更
高层会学习如何去组合更形象且有意义的特征。例如,如果输入数据集 包含人脸图像,更高层会学习如何识别或组合眼睛、鼻子、嘴等人脸器
官。
去噪自编码(Denoising Autoencoder)
x
:为输入值
:通过对x随机映射或添加噪声而获得 x
困住,陷入局部最优?),并且有机会遍历整个空间,使得概率等于潜 在模型的概率 从概念上的理解,我们在做编码解码操作时,需要加入噪声,但加入多少? 怎么加合适呢?(But how much and how?) 下页将作出解释
(2)
(2) (2) ˆ3 a3 ˆ 2 a2
ˆj 一般强制约束
Why? 看下文
是一个稀疏参数,一般取接近于0的值,比如0.05;
也就是说,每个隐藏单元j的平均激活值接近于0.05。
稀疏自动编码器(Sparse Autoencoder )
我们添加一个额外的惩罚项来最优化目标函数。 即: 该式的另外一个作用是:对 其中,KL散度公式: 左图中, =0.2
(w ji (j l 1) )f ' ( zi(l ) )
j
sl 1
稀疏自动编码器(Sparse Autoencoder )
回到自编码
自编码 设法学习到一个函数,使得:
即:
ˆ x x
稀疏自动编码器(Sparse Autoencoder )
为隐藏单元 j 的平均激活值
ˆ1 a1 如左图,
1 激活 f ( z ) 函数: 1 exp( z )
Sigmiod
Sigmoid函 数曲线
' 导数: f ( z) f ( z)(1 f ( z))
稀疏自动编码器(Sparse Autoencoder )
简单神经网络(三层,单隐藏层)
L层第i个单元的输入单元总的加权和表示为: 例如: 所以: 进一步简写:
自编码简介(Autoencoder)
如何在重建误差和表达能力之间取折中呢?
解决方法:区分训练样本的哪些变量需要表示。 学到一个数据的表示(映射, mapping),对流形的方向比 较敏感,对正交于流形的方向 不敏感。将在正交于流形的方 向产生一个收缩的表示。
图中,黑色的线为流形空间,向右 的绿色箭头与流形相切,蓝色的箭 头正交于流形。
其中:
稀疏自动编码器(Sparse Autoencoder )
为什么能稀疏? 1、减小编码后隐藏层神经元个数。
比如,后一层比前一层神经元个数少。
如果激活函数不使用sigmoid函数,而
使用线性函数,就是PCA模型。
2、隐藏层的任何一个神经元不应该总是高度激活 。
通过设置 的值充分小,一般接近于0,比如0.01等。
ˆ j 偏离 的程度进行惩罚 ??
ˆ j =0.2 时,KL散度值达到最小,其值为0。 当 ˆ j 趋于0或1时,KL散度值趋于无穷大。 当
因此,为了使以上惩罚项最小,必须使得:
ˆj
稀疏自动编码器(Sparse Autoencoder )
因此,全局损失函数为:
哎妈,这玩 意终于出来 了!!
x :输入值 f :编码函数 h f ( x) :编码或内部表示
g
:解码函数
r g ( f ( x)) :输出,也称“重建值” L(r , x) :损失函数,用于测量重建的好 坏,目标是最小化L的期望值。
自编码简介(Autoencoder)
Input:数据的输入; Encoder:编码器; Code:输入的一个表示; Decoder:解码器; Reconstruction: input的重建; Error: 重建数据和input的误差。
大纲
自编码简介(Autoencoder) 稀疏自编码(Sparse Autoencoder)
栈式自编码 (Stacked Autoencoder)
去噪自编码(Denoising Autoencoder) 压缩自编码(Contrative Autoencoder)
自编码简介(Autoencoder)
相关文档
最新文档