如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
花书+吴恩达深度学习(二一)线性因子模型(概率PCA,ICA,SFA,稀疏编码)
花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)
线性因子模型是最简单的生成模型和学习数据表示的最简单模型。
线性因子模型通过随机线性解码器函数来定义,对 h h h线性变换及添加噪声来生成 x x x。
h ∼ p ( h ) x = W h + b + n o i s e h\sim p(h)\\ x=Wh+b+noise h∼p(h)x=Wh+b+noise
在不同的线性因子模型中,都是选择了不同形式的噪声和不同潜变量的先验生成 x x x的。
线性分类器或线性回归模型可以扩展到深度前馈网络,线性因子模型也可以扩展到自编码器网络和深度概率模型
在因子分析中,潜变量的先验是一个方差为单位矩阵的高斯分布:
h ∼ N ( h ; 0 , I ) x ∼ N ( x ; b , W W T + ψ ) ψ = d i a g ( σ 2 ) = d i a g ( [ σ 1 2 , . . . , σ n 2 ] T ) h\sim N(h;0,I)\\ x\sim N(x;b,WW^T+\psi)\\ \psi=diag(\sigma^2)=diag([\sigma_1^2,...,\sigma_n^2]^T) h∼N(h;0,I)x∼N(x;b,WWT+ψ)ψ=diag(σ2)=diag([σ12,...,σn2]T)
在概率PCA中,将条件方差 σ i 2 \sigma_i^2 σi2等于同一个值:
x ∼ N ( x ; b , W W T + σ 2 I ) x = W h + b + σ z z ∼ N ( z ; 0 , I ) x\sim N(x;b,WW^T+\sigma^2I)\\ x=Wh+b+\sigma z\\ z\sim N(z;0,I) x∼N(x;b,WWT+σ2I)x=Wh+b+σzz∼N(z;0,I)
当 σ → 0 \sigma\rightarrow0 σ→0时,概率PCA退化为PCA。
独立成分分析(independent component analysis)是一种建模线性因子的方法。
旨在将信号分析成许多潜在的信号,这些潜在信号可以通过缩放和叠加恢复成观察到的数据。
潜变量的先验 p ( h ) p(h) p(h)需要由用户给出,模型确定的生成 x = W h x=Wh x=Wh,通过非线性变化确定 p ( x ) p(x) p(x)。
ICA的许多变种不是生成模型,生成模型可以直接表示 p ( x ) p(x) p(x),而ICA的许多变种仅知道如何在 x x x和 h h h之间变换,而不能表示 p ( h ) p(h) p(h)和 p ( x ) p(x) p(x),所以ICA多用于分离信号。
慢特征分析(slow feature analysis)使用来自时间信号的信息学习不变的特征。
基于慢性原则:与场景中起描述作用的单个量度相比,场景的重要特征通常变化的非常缓慢。
所以,我们将模型正则化,希望能学习到随时间变化较为缓慢的特征。
对代价函数添加以下正则化项:
λ ∑ t L ( f ( x ( t + 1 ) ) , f ( x ( t ) ) ) \lambda \sum_tL(f(x^{(t+1)}),f(x^{(t)})) λt∑L(f(x(t+1)),f(x(t)))
其中, t t t表示时间序列的索引, f f f是需要正则化的特征提取器, L L L是度量距离的损失函数,例如均方误差。
SFA算法将 f ( x ; θ ) f(x;\theta) f(x;θ)定义为线性变换,对下式优化:
m i n θ E t ( f ( x ( t + 1 ) ) i − f ( x ( t ) ) i ) 2 min_\theta\ \mathbb{E}_t(f(x^{(t+1)})_i-f(x^{(t)})_i)^2 minθ Et(f(x(t+1))i−f(x(t))i)2
并满足约束:
E t f ( x ( t ) ) i = 0 E t [ f ( x ( t ) ) i 2 ] = 1 \mathbb{E}_t f(x^{(t)})_i=0\\ \mathbb{E}_t [f(x^{(t)})_i^2]=1 Etf(x(t))i=0Et[f(x(t))i2]=1
SFA的主要优点是,即使在深度非线性条件下,依然能够在理论上预测学习到哪些特征。
稀疏编码模型通常假设线性因子有一个各向同精度为 β \beta β的高斯噪声:
p ( x ∣ h ) = N ( x ; W h + b , 1 β I ) p(x\mid h)=N(x;Wh+b,\frac{1}{\beta}I) p(x∣h)=N(x;Wh+b,β1I)
p ( h ) p(h) p(h)通常选取一个峰值很尖锐且接近0的分布,例如Laplace分布:
p ( h i ) = L a p l a c e ( h i ; 0 , 2 λ ) = λ 4 e − 1 2 λ ∣ h i ∣ p(h_i)=Laplace(h_i;0,\frac{2}{\lambda})=\frac{\lambda}{4}e^{-\frac{1}{2}\lambda\left|h_i\right|} p(hi)=Laplace(hi;0,λ2)=4λe−21λ∣hi∣
使用最大似然的方法来训练稀疏编码模型是不可行的。相反,为了在给定编码的情况下更好的重构数据,训练过程在编码数据和训练解码器之间交替进行。
我们寻找单个最可能的编码值:
h ∗ = f ( x ) = a r g m a x h p ( h ∣ x ) = a r g m a x h log p ( h ∣ x ) = a r g m i n h λ ∥ h ∥ 1 + β ∥ x − W h ∥ 2 2 \begin{aligned} h^*=f(x) &= argmax_h\ p(h\mid x)\\ &= argmax_h\ \log p(h\mid x)\\ &= argmin_h\ \lambda\left\|h\right\|_1+\beta\left\|x-Wh\right\|_2^2 \end{aligned} h∗=f(x)=argmaxh p(h∣x)=argmaxh logp(h∣x)=argminh λ∥h∥1+β∥x−Wh∥22
对于绝大多数形式,推断问题是凸的,优化过程总能找到最优编码。
非参数编码器的主要缺点是,给定 x x x的情况下需要大量的时间来计算 h h h。
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~