堆叠稀疏自编码器SSAE

稀疏自编码器

自编码器通过将输入信息作为学习目标,对输入信息进行表征学习。通过稀疏性参数 ρ \rho ρ对自编码器隐层节点进行稀疏性约束,则构成稀疏自编码器。一般来说,被激活神经元的比例由一个常数 ρ \rho ρ表示。平均激活可以是
ρ J ^ = 1 N ∑ i = 1 N n j ( x i ) \hat{\rho_{J}}=\frac{1}{N} \sum_{i=1}^{N} n_{j}\left(x_{i}\right) ρJ^=N1i=1Nnj(xi)
其中 N是隐藏神经元的数量。Kullback-Leibler (KL)散度可以保证 ρ J ^ \hat{\rho_{J}} ρJ^接近常数 ρ \rho ρ
K L ( ρ ∥ ρ ^ j ) = ρ log ⁡ ρ ρ ^ j + ( 1 − ρ ) log ⁡ 1 − ρ 1 − ρ ^ j K L\left(\rho \| \hat{\rho}_{j}\right)=\rho \log \frac{\rho}{\hat{\rho}_{j}}+(1-\rho) \log \frac{1-\rho}{1-\hat{\rho}_{j}} KL(ρρ^j)=ρlogρ^jρ+(1ρ)log1ρ^j1ρ
因此,稀疏自动编码器的误差函数如下
J sparse  = J ( W , b ) + μ ∑ j = 1 N K L ( ρ ∥ ρ ^ j ) J_{\text {sparse }}=J(W, b)+\mu \sum_{j=1}^{N} K L\left(\rho \| \hat{\rho}_{j}\right) Jsparse =J(W,b)+μj=1NKL(ρρ^j)
其中 μ \mu μ是一个常数。

KL散度

用来衡量两个概率分布的相似性的一个度量指标。
由于现实世界里的任何观察都可以表示成信息和数据,一般来说,我们无法获取数据的总体,只能拿到数据的部分样本。根据数据的部分样本,来对数据的整体做一个近似的估计,而数据整体本身有一个真实的分布,那么近似估计的概率分布和数据整体真是的概率分布的相似度或差异程度,可以用KL散度表示。
KL散度由信息论演化而来,信息熵定义: H = − ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) H=-\sum_{i=1}^{N} p\left(x_{i}\right) \log p\left(x_{i}\right) H=i=1Np(xi)logp(xi)
p ( x i ) p\left(x_{i}\right) p(xi)表示事件 x i x_{i} xi发生的概率,信息熵其实反映的就是要表示一个概率分布需要的平均信息量。在信息熵的基础上,定义KL散度:
D K L ( p ∥ q ) = ∑ i = 1 N p ( x i ) ⋅ ( log ⁡ p ( x i ) − log ⁡ ( q ( x i ) ) D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot\left(\log p\left(x_{i}\right)-\log \left(q\left(x_{i}\right)\right)\right. DKL(pq)=i=1Np(xi)(logp(xi)log(q(xi))
D K L ( p ∥ q ) = ∑ i = 1 N p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \log \frac{p\left(x_{i}\right)}{q\left(x_{i}\right)} DKL(pq)=i=1Np(xi)logq(xi)p(xi)

D K L ( p ∥ q ) D_{K L}(p \| q) DKL(pq)表示概率 q q q和概率 p p p之间的差异,显然散度越小,说明概率 q q q与概率 p p p之间越接近,那么估计的概率分布与真实的概率分布越接近。
KL散度可以帮助去选择最优的参数,比如 p ( x i ) p\left(x_{i}\right) p(xi)是需要估计的一个未知分布,但却无法直接得知 p ( x i ) p\left(x_{i}\right) p(xi)的分布。我们可以建立一个分布 q ( x ∣ θ ) q(x \mid \theta) q(xθ)去估计 p ( x i ) p\left(x_{i}\right) p(xi), 为了确定参数 θ \theta θ,可以利用采样的方法,从 p ( x i ) p\left(x_{i}\right) p(xi)中采样 N N N个样本,构建如下的目标函数:
D K L ( p ∥ q ) = ∑ i = 1 N { log ⁡ p ( x i ) − log ⁡ q ( x i ∣ θ ) } D_{K L}(p \| q)=\sum_{i=1}^{N}\left\{\log p\left(x_{i}\right)-\log q\left(x_{i} \mid \theta\right)\right\} DKL(pq)=i=1N{logp(xi)logq(xiθ)}
因为要去预估参数 θ \theta θ,而上式第一项 log ⁡ p ( x i ) \log p\left(x_{i}\right) logp(xi)与参数 θ \theta θ无关,所以实际上要优化的是 − log ⁡ q ( x i ∣ θ ) -\log q\left(x_{i} \mid \theta\right) logq(xiθ),而这就是最大似然估计。

堆叠稀疏自编码器

使用堆叠自编码器能够有效的提取数据特征,但是堆叠自编码器泛化性差,不适合网络波动的数据流量。单层稀疏自编码器在自编码器的基础上,增加稀疏约束可以有效降低训练过拟合问题,但是在表征学习中,多层次表示会产生更通用和有益的特征。因此结合堆叠自编码器的多层堆叠方式和稀疏自编码器的稀疏性构建堆叠稀疏自编码器。
堆叠稀疏自编码器SSAE_第1张图片
堆叠稀疏自编码器的基本思想是训练 SSAE 网络,使输出的低维信号在包含原数据本质特征的同时去除高维信号中的干扰部分,最终将训练得到的特征用于分类识别。形式上,将原始数据作为输入,训练 SAE。接着丢弃解码器层,使得隐藏单元(第一层特征)的激活成为用于训练第二SAE 层的输入(前馈),进而产生另一表示 (第二层特征)。这种贪婪的分层训练过程使先前的特征保持固定,并忽略与后续特征的交互,从而大大减少了对参数空间的搜索。可以通过如下公式表示:
h L = f L ( ⋯ f 2 ( f 1 ( x ) ) ) h_{L}=f_{L}\left(\cdots f_{2}\left(f_{1}(x)\right)\right) hL=fL(f2(f1(x)))
其中 h L h_{L} hL表示由顶层 L L L 学习的表示。整个架构的输出用于反馈给时间序列模型进行分类,与原始输入相比,这种方式提供了改善后的数据表示。

你可能感兴趣的:(概率论,机器学习,算法,自编码器)