文章目录
- 1. 相关概念
- 2. 自编码器
- 3. 稀疏自动编码器
- 4. 栈式自编码器
1. 相关概念
1. 稀疏性可以被简单地解释如下:如果当神经元的输出接近于 1 1 1 的时候我们认为它被激活,而输出接近于 0 0 0 的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。
2. 稀疏编码算法是一种无监督学习方法,它用来寻找一组 “超完备” 基向量来更高效地表示样本数据。稀疏编码算法的目的就是找到一组基
ϕ
(
i
)
ϕ(i)
ϕ(i),使得我们能将输入向量
X
X
X 表示为这些基向量的线性组合。
其中
a
i
a_i
ai 的值大部分都为
0
0
0,所以称为稀疏。每一个数据向量都由稀疏线性权值与基的组合形式来表达。
2. 自编码器
1. 自编码器是一种无监督的神经网络模型,可以用于数据的降维、特征提取和数据重建等任务。它由编码器和解码器两部分组成,其中编码器将输入数据压缩成低维特征向量,解码器则将低维特征向量还原成原始数据。
2. 自编码器的训练过程包括两个阶段:编码阶段和解码阶段。在编码阶段,自编码器将输入数据映射到低维特征空间中,以尽可能少的信息损失为目标。在解码阶段,自编码器将低维特征向量映射回原始数据空间中,以尽可能准确地重建原始数据为目标。在整个训练过程中,自编码器的目标是最小化输入数据和重建数据之间的差异,以学习到更加有效的特征表示。
3. 自编码器具体过程简单的说明如下:给定无标签数据,用非监督学习学习特征。
自动编码器就是一种尽可能复现输入信号的神经网络;自动编码器必须捕捉可以代表输入数据的最重要的因素。
3. 稀疏自动编码器
1. 稀疏自动编码器通常用于学习诸如分类等任务,通过增加稀疏惩罚项学习数据的有用特征。
例如:如果在自编码器的基础上加上
L
1
L1
L1 的规范化限制(
L
1
L1
L1 主要是约束每一层中的节点中大部分都要为
0
0
0,只有少数不为
0
0
0,这就是稀疏名字的来源),我们就可以得到稀疏编码法。
2. 如下图,其实就是限制每次得到的表达结点尽量稀疏。因为稀疏的表达往往比其他的表达要有效(人脑好像也是这样的,某个输入只是刺激某些神经元,其他的大部分的神经元是受到抑制的)。
3. 可以使用神经元的输出作为神经元的激活度,即对于隐层的第 j j j 个神经元,其激活度为: a j ( 2 ) = f ( w j 1 ( 1 ) x 1 + w j 2 ( 1 ) x 2 + . . . + w j 6 ( 1 ) x 6 ) a_j^{(2)}=f(w_{j1}^{(1)}x_1+w_{j2}^{(1)}x_2+...+w_{j6}^{(1)}x_6) aj(2)=f(wj1(1)x1+wj2(1)x2+...+wj6(1)x6)
则对于m个样本,其平均激活度为如下所示。假设令 ρ ^ j = ρ \hat{ρ}_j=ρ ρ^j=ρ, ρ ρ ρ 是一个稀疏参数,一般取接近于 0 0 0 的值,比如 0.05 0.05 0.05。为了使模型比较稀疏,我们希望平均激活度能够尽可能接近稀疏性常数。
4. 通常可以取相对熵来度量平均激活度与稀疏性参数之间的差异程度。对于下述的相对熵,当 ρ = ρ ^ j ρ=\hat{ρ}_j ρ=ρ^j 时达到最小值,最小值为 0 0 0,差距越大,相对熵的值越大。
5. 对于稀疏自编码器,其损失函数即在神经网络损失函数的基础上加上稀疏性的约束即可,即:
4. 栈式自编码器
1. 栈式自编码器是一个由多层稀疏自编码器组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入。
编码过程是按照从前向后的顺序执行每一层自编码器的编码,解码过程按照从后向前的顺序执行每一层自编码器的解码。采用逐层贪婪训练法进行训练,获取栈式自编码神经网络参数。
2. 具体实例:训练一个包含两个隐含层的栈式自编码网络,用来进行MNIST手写数字分类。
3. 深度自动编码器(DAE)的构建:(1) DAE 的预训练 :无监督的逐层贪婪训练。 (2) DAE 的微调:有监督权重微调。
4. DAE 的预训练:
(1) 以无监督的方式训练神经网络的第一层, 将其输出作为原始输入的最小化重构误差。
(2) 每个隐含单元的输出作为下一层神经网络的输入,用无类标数据样本对下一层进行训练, 将误差控制在一定范围内。
(3) 重复步骤 (2) , 直到完成规定数量隐含层的训练为止。
(4) 将最后一个隐含层的输出作为有监督层的输入,并且初始化有监督层的参数。
5. DAE 的微调:
(1) 对权值、 偏置和阈值赋值, 对网络进行初始化。
(2) 随机选取类标数据样本用 BP 算法对神经网络进行训练,计算各层的输出。
(3) 求出各层的重构误差, 并根据误差修正权值和偏置。
(4) 根据性能指数判定误差是否满足要求, 如果未能满足要求则重复步骤 (2) 和 (3),直到整个网络输出满足期望要求。