深度学习笔记之稀疏自编码器

news2024/11/25 4:33:43

深度学习笔记之稀疏自编码器

引言

本节以一道算法八股题为引,介绍稀疏自编码器

引子:题目描述

下列方法中,可以用于特征降维的方法包括(多选) ( ) (\quad) ()

A \mathcal A \quad A主成分分析 PCA \text{PCA} PCA

B \mathcal B \quad B线性判别分析 LDA \text{LDA} LDA

C \mathcal C \quad C深度学习 SparseAutoEncoder \text{SparseAutoEncoder} SparseAutoEncoder

D \mathcal D \quad D矩阵奇异值分解 SVD \text{SVD} SVD

E \mathcal E \quad E最小二乘法 LeastSquares \text{LeastSquares} LeastSquares

正确答案: A B C D \mathcal A \mathcal B \mathcal C \mathcal D ABCD

题目解析

关于 A D \mathcal A \quad \mathcal D \quad AD 选项,可以放在一起观察。关于主成分分析 ( Principal Component Analysis,PCA ) (\text{Principal Component Analysis,PCA}) (Principal Component Analysis,PCA)降维思想,这里不再过多赘述。这里重点描述从奇异值分解角度观察主成分分析:
详细推导过程见传送门

  • 假设无监督任务下,样本集合 X \mathcal X X表示为:
    X = ( x ( 1 ) , x ( 2 ) , ⋯   , x ( N ) ) N × p T x ( i ) ∈ R p \mathcal X = (x^{(1)},x^{(2)},\cdots,x^{(N)})_{N \times p}^T \quad x^{(i)} \in \mathbb R^p X=(x(1),x(2),,x(N))N×pTx(i)Rp
  • X \mathcal X X进行中心化(将 X \mathcal X X分布平移至样本空间原点位置),即乘以相应的中心矩阵 H \mathcal H H
    其中 E N \mathcal E_N EN表示 N N N维单位向量; I N \mathcal I_{N} IN表示元素值均为 1 1 1 N N N维列向量。
    { H = E N − 1 N I N ⋅ I N T H ⋅ X = [ x ( 1 ) − X ˉ , x ( 2 ) − X ˉ , ⋯   , x ( N ) − X ˉ ] N × p T \begin{cases} \begin{aligned} \mathcal H = \mathcal E_{N} - \frac{1}{N} \mathcal I_N \cdot \mathcal I_N^T \end{aligned} \\ \mathcal H \cdot \mathcal X = \left[x^{(1)} - \bar {\mathcal X},x^{(2)} - \bar {\mathcal X},\cdots,x^{(N)} - \bar {\mathcal X}\right]_{N \times p}^T \end{cases} H=ENN1ININTHX=[x(1)Xˉ,x(2)Xˉ,,x(N)Xˉ]N×pT
    奇异值分解 ( Singular Value Decomposition,SVD ) (\text{Singular Value Decomposition,SVD}) (Singular Value Decomposition,SVD)的角度对 H ⋅ X \mathcal H \cdot \mathcal X HX进行处理:
    H ⋅ X = U Σ V T \mathcal H \cdot \mathcal X = \mathcal U \Sigma \mathcal V^T HX=UΣVT
    其中 U \mathcal U U列正交矩阵 V \mathcal V V正交矩阵。对应 X \mathcal X X协方差 S \mathcal S S使用奇异值分解表示如下:
    其中 X , H \mathcal X,\mathcal H X,H S \mathcal S S的表达过程详见主成分分析——最大投影方差角度
    S = 1 N X T ⋅ H ⋅ X = 1 N ( H X ) T ⋅ ( H X ) = 1 N ( U Σ V T ) T ⋅ U Σ V T = 1 N V ( Σ T Σ ) V T \begin{aligned} \mathcal S & = \frac{1}{N} \mathcal X^T \cdot \mathcal H \cdot \mathcal X \\ & = \frac{1}{N} (\mathcal H \mathcal X)^T \cdot (\mathcal H \mathcal X) \\ & = \frac{1}{N} (\mathcal U \Sigma \mathcal V^T)^T \cdot \mathcal U \Sigma\mathcal V^T \\ & = \frac{1}{N} \mathcal V(\Sigma^T\Sigma)\mathcal V^T \end{aligned} S=N1XTHX=N1(HX)T(HX)=N1(UΣVT)TUΣVT=N1V(ΣTΣ)VT
    这里忽略掉 1 N \begin{aligned}\frac{1}{N}\end{aligned} N1的影响(它不会影响正交基的方向),这意味着不需要直接对 X \mathcal X X的协方差矩阵进行特征值分解,而是通过 H ⋅ X \mathcal H \cdot \mathcal X HX进行奇异值分解即可。其特征向量就是 V \mathcal V V自身:
    上式等号两侧右乘 V , 1 N \mathcal V,\begin{aligned}\frac{1}{N}\end{aligned} V,N1忽略。
    S ⋅ V = V Σ T Σ V T V ⏟ E = V ( Σ T Σ ) \begin{aligned} \mathcal S \cdot \mathcal V & = \mathcal V\Sigma^T\Sigma \underbrace{\mathcal V^T\mathcal V}_{\mathcal E} \\ & = \mathcal V (\Sigma^T\Sigma) \end{aligned} SV=VΣTΣE VTV=V(ΣTΣ)
    其中 Σ T Σ \Sigma^T\Sigma ΣTΣ特征值矩阵,其对角线元素是特征值,从而根据特征值进行找出最优主成分,以此类推。因此, D \mathcal D \quad D 选项正确。

关于 B \mathcal B \quad B 选项:线性判别分析,这里不过多赘述,详见算法八股(十)——线性判别分析与核函数中关于线性判别分析的解释。
关于 E \mathcal E \quad E 选项:最小二乘法
L ( W ) = ∑ i = 1 N ∣ ∣ W T x ( i ) − y ( i ) ∣ ∣ ( x ( i ) , y ( i ) ) ∈ D \mathcal L(\mathcal W) = \sum_{i=1}^N ||\mathcal W^Tx^{(i)} - y^{(i)}|| \quad (x^{(i)},y^{(i)}) \in \mathcal D L(W)=i=1N∣∣WTx(i)y(i)∣∣(x(i),y(i))D
我们仅从计算过程中观察,我们可以认为将 x ( i ) x^{(i)} x(i)所在的特征空间通过 W \mathcal W W映射到对应的标签空间。但整个过程 x ( i ) ( i = 1 , 2 , ⋯   , N ) x^{(i)}(i=1,2,\cdots,N) x(i)(i=1,2,,N)的特征没有变化过。也就是说,我们并没有去修改特征空间,从而对 x ( i ) x^{(i)} x(i)提出新的表示。

下面主要关注 C \mathcal C \quad C 选项:什么是稀疏自编码器( SparseAutoEncoder \text{SparseAutoEncoder} SparseAutoEncoder),它又是如何实现特征降维的。

介绍:自编码器

关于自编码器 ( AutoEncoder ) (\text{AutoEncoder}) (AutoEncoder)是神经网络的一种。它经过训练后能尝试输入复制到输出其模型结构可表示为如下形式:
节自《深度学习》(花书) P306。从该描述中可以发现,它是一个典型的概率生成模型
自编码器模型描述
该模型中包含一个隐藏层 h h h,其作用是对输入特征 x x x进行抽象表示,也称作编码 ( Code ) (\text{Code}) (Code)。通过 h h h将整个模型划分成两个部分:

  • 编码器 ( Encoder ) (\text{Encoder}) (Encoder)。由函数 f ( ⋅ ) f(\cdot) f()对输入特征 x x x进行描述,得到抽象特征 h h h
    h = f ( x ) h = f(x) h=f(x)
  • 解码器 ( Decoder ) (\text{Decoder}) (Decoder)。由函数 g ( ⋅ ) g(\cdot) g()对抽象特征 h h h进行重构,得到生成特征 r r r
    r = g ( h ) r = g(h) r=g(h)

既然是生成模型,从常规角度认为从模型中生成出的特征 r r r x x x越相似越好。但相反,如果仅仅得到一个 g [ f ( x ) ] = x g[f(x)] = x g[f(x)]=x,这个模型可能并没有什么意义。因此,我们需要对模型施加一些约束,从而:

  • 生成的特征和输入特征相似;
  • 施加的约束导致模型会优先选择代表性强的特征,从而学习到数据的有用特征。

如果从概率分布的角度认识这个过程,已知输入分布 x x x,那么编码器的输出分布可表示为:
也就是给定 x x x,在 Encoder \text{Encoder} Encoder的抽象描述下,输出编码 h h h的后验概率分布。
P e n c o d e r ( h ∣ x ) \mathcal P_{encoder}(h \mid x) Pencoder(hx)
同理,假设编码 h h h给定的条件下,解码器的输出分布可表示为:
P d e c o d e r ( x ∣ h ) \mathcal P_{decoder}(x \mid h) Pdecoder(xh)

欠完备自编码器

基于我们想要输出分布 P m o d e l ( x ∣ h ) \mathcal P_{model}(x \mid h) Pmodel(xh)与真实分布 P d a t a ( x ) \mathcal P_{data}(x) Pdata(x)相同,但又不想单纯地将输入复制到输出
看起来像是一个矛盾的事情。

也就是说,在训练自编码器对 x x x训练的过程中,使隐变量 h h h能够学习到有用的特性。一种做法是:通过人工设置,强行让 h h h的维度小于 x x x的维度
编码器的压缩过程

这种编码维度小于输入维度的自编码器被称作欠完备自编码器 ( Undercompleter AutoEncoder ) (\text{Undercompleter AutoEncoder}) (Undercompleter AutoEncoder)。编码维度的减小意味着学习到的分布 P m o d e l ( h ∣ x ) \mathcal P_{model}(h \mid x) Pmodel(hx)相比真实分布 P d a t a ( x ) \mathcal P_{data}(x) Pdata(x)确实出现了缺失,但强制自编码器捕捉 x x x最显著的特征。
x ⇒ h x \Rightarrow h xh过程中学习到的特征信息被‘压缩’,信息丢失是不可避免的。但在 x x x分布确定的条件下, h h h中保留的必然是‘更具代表性、性质更加显著’的信息。

在后续解码器对压缩特征 h h h进行重构的过程中,由于 h h h特征的缺失已经达到了 不想单纯地将输入复制到输出 这个动机,导致后续即便重构出与 x x x大小相同的特征空间,它的信息相比真实分布 x x x依然是缺失的。因而我们需要一个损失函数惩罚重构分布真实分布 之间的差异:
L [ x , f ( g ( x ) ) ] \mathcal L[x,f(g(x))] L[x,f(g(x))]
降维的角度观察, x ⇒ h x \Rightarrow h xh可以被看作是一个降维过程, h h h中的各维度可看作特征值最大的若干主成分。在重构过程中,虽然无法将缺失的部分还原,但重构后的结果相比于真实分布其特征更具代表性
也就是说, Undercompleter AutoEncoder \text{Undercompleter AutoEncoder} Undercompleter AutoEncoder这种独特的模型结构就已经存在了特征降维的思想。那么它与 Sparse AutoEncdoer \text{Sparse AutoEncdoer} Sparse AutoEncdoer之间的关联关系是什么?

正则自编码器

上面描述的欠完备自编码器是通过人为设置强制减小编码维数而产生的模型结构,这种结构能够使 h h h学习到 x x x更显著的特征信息。

相反呢?如果我们的自编码器容量过大,也就是说: h h h的编码维数与 x x x相等,甚至高于 x x x
自编码器容量过大
这种情况可能导致 h h h编码过程中对 x x x的学习更加准确,我们不否认对应的解码结果会对 x x x重构的更加准确,但 h h h中学习不到任何有用的信息。
这种就是‘单纯地将输入复制到输出’的情况。

我们将这种情况称作过完备 ( Overcomplete ) (\text{Overcomplete}) (Overcomplete)。那么类似于上述的情况,是否可以让 h h h学习到有用的信息?换句话说:能否不使用“限制” h h h维度的方式,理想情况下,任意大小的 h h h都能够在训练中学习出有用的信息

正则自编码器提供了这样的能力。其思想在于利用稀疏表示、表示的小导数以及噪声或输入缺失的鲁棒性的方式,使非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息
节自《深度学习》(花书) P307 14.2 正则自编码器

从先验角度解释稀疏自编码器

稀疏自编码器 ( Sparse AutoEncoder ) (\text{Sparse AutoEncoder}) (Sparse AutoEncoder)就是通过对 h h h进行稀疏表示达到上述目的。其具体做法是:在损失函数的基础上,增加对 h h h的稀疏惩罚
再次强调,两个部分‘惩罚’的方向不一样。 L [ x , f ( g ( x ) ) ] \mathcal L[x,f(g(x))] L[x,f(g(x))]惩罚的是真实分布 x x x和重构分布 f ( g ( x ) ) f(g(x)) f(g(x))之间的差异性; Ω ( h ) \Omega(h) Ω(h)惩罚的是 h = f ( x ) h=f(x) h=f(x)的稀疏性。
L [ x , f ( g ( x ) ) ] + Ω ( h ) h = f ( x ) \mathcal L[x,f(g(x))] + \Omega(h) \quad h=f(x) L[x,f(g(x))]+Ω(h)h=f(x)

我们可以将 Ω ( h ) \Omega(h) Ω(h)视作关于 h h h正则项,但实际上,该项并没有正则项的意义。在正则化——贝叶斯概率角度中介绍了正则项相当于参数的先验概率
MAP :  θ ^ = arg ⁡ max ⁡ θ [ log ⁡ P ( X ∣ θ ) + log ⁡ P ( θ ) ] \text{MAP : } \hat \theta = \mathop{\arg\max}\theta \left[ \log \mathcal P(\mathcal X \mid \theta) + \log \mathcal P(\theta)\right] MAP : θ^=argmaxθ[logP(Xθ)+logP(θ)]
而先验概率 log ⁡ P ( θ ) \log \mathcal P(\theta) logP(θ)描述在训练过程之前,对参数 θ \theta θ特定值的偏好,并且 这个偏好取决于事件自身的性质。例如极大似然估计与最大后验概率估计中投掷硬币的例子。我们给出的分布 P ( θ ) \mathcal P(\theta) P(θ)均值 μ = 0.5 \mu = 0.5 μ=0.5,方差 σ = 0.1 \sigma = 0.1 σ=0.1的高斯分布
很明显,我们在给出先验分布时,连数据是什么都不知道。
P ( θ ) = 1 0.1 × 2 π exp ⁡ { − ( θ − 0.5 ) 2 0.02 } \mathcal P(\theta) = \frac{1}{0.1 \times \sqrt{2\pi}} \exp \left\{-\frac{(\theta - 0.5)^2}{0.02}\right\} P(θ)=0.1×2π 1exp{0.02(θ0.5)2}
但是隐变量 h h h是伴随模型存在的,它自身没有实际的物理意义。因而对应的先验分布 P m o d e l ( h ) \mathcal P_{model}(h) Pmodel(h)也同样是没有实际意义的先验。因而它不能被直接视作正则项,但我们仍可以认为 P m o d e l ( h ) \mathcal P_{model}(h) Pmodel(h)隐式地表达了对函数的偏好
通常也将 P m o d e l ( h ) \mathcal P_{model}(h) Pmodel(h)称作信念先验。节选自《深度学习》(花书) P308 14.2.1 稀疏自编码器。

关于解码器生成的样本分布 P m o d e l ( x ) \mathcal P_{model}(x) Pmodel(x),它的似然函数可分解为如下形式:
P m o d e l ( x ) = ∑ h P m o d e l ( h , x ) \mathcal P_{model}(x) = \sum_{h} \mathcal P_{model}(h,x) Pmodel(x)=hPmodel(h,x)
关于联合概率分布 P m o d e l ( h , x ) \mathcal P_{model}(h,x) Pmodel(h,x),它的对数结果表示为:
log ⁡ P m o d e l ( h , x ) = log ⁡ [ P m o d e l ( x ∣ h ) ⋅ P m o d e l ( h ) ] = log ⁡ P m o d e l ( x ∣ h ) + log ⁡ P m o d e l ( h ) \begin{aligned} \log \mathcal P_{model}(h,x) & = \log \left[\mathcal P_{model}(x \mid h) \cdot \mathcal P_{model}(h)\right] \\ & = \log \mathcal P_{model}(x \mid h) + \log \mathcal P_{model}(h) \end{aligned} logPmodel(h,x)=log[Pmodel(xh)Pmodel(h)]=logPmodel(xh)+logPmodel(h)
如果 h h h,也就是编码器各神经元的输出,假设它们之间是独立同分布的条件下,虽然 P m o d e l ( h ) \mathcal P_{model}(h) Pmodel(h)不是真正意义上的先验,但是依然可以给其各个分量一个先验分布。如 Laplace \text{Laplace} Laplace先验
其中 h j ( j = 1 , 2 , ⋯   , K ) h_j(j=1,2,\cdots,\mathcal K) hj(j=1,2,,K)表示 h h h的各个分量,也就是编码器第 j j j个神经元的输出。
log ⁡ P m o d e l ( h ) = log ⁡ ∏ j = 1 K P m o d e l ( h j ) = ∑ j = 1 K log ⁡ P m o d e l ( h j ) = ∑ j = 1 K log ⁡ [ λ 2 exp ⁡ { − λ ∣ h j ∣ } ] = ∑ j = 1 K log ⁡ λ 2 ⏟ C − λ ⋅ ∑ j = 1 K ∣ h j ∣ ⏟ Ω ( h ) \begin{aligned} \log \mathcal P_{model}(h) & = \log \prod_{j=1}^{\mathcal K} \mathcal P_{model}(h_j) \\ & = \sum_{j=1}^{\mathcal K} \log \mathcal P_{model}(h_j) \\ & = \sum_{j=1}^{\mathcal K} \log \left[\frac{\lambda}{2} \exp \{-\lambda |h_j|\}\right] \\ & =\underbrace{\sum_{j=1}^{\mathcal K} \log \frac{\lambda}{2}}_{\mathcal C} - \underbrace{\lambda \cdot \sum_{j=1}^{\mathcal K} |h_j|}_{\Omega(h)} \end{aligned} logPmodel(h)=logj=1KPmodel(hj)=j=1KlogPmodel(hj)=j=1Klog[2λexp{λhj}]=C j=1Klog2λΩ(h) λj=1Khj

个人理解:从先验的角度解释了稀疏惩罚 Ω ( h ) \Omega(h) Ω(h)的作用。重点在于如何构建稀疏惩罚,也就是说,如何约束编码器神经元的输出 h h h

花书中的介绍,个人没有理解它的精髓。在不是真正意义上的先验的基础上,用先验去解释它。这里欢迎小伙伴们批评指正。

稀疏自编码器的构建

上面的 Laplace \text{Laplace} Laplace分布是一种方式,也可以尝试其他的方式去约束编码器的输出 h h h

  • 通过前馈神经网络的描述,可以将 h h h j j j个神经元 h j h_j hj表示为如下形式:
    其中 σ \sigma σ表示激活函数。
    h j = σ ( W x 1 ⇔ j ⋅ x 1 + W x 2 ⇔ j ⋅ x 2 + ⋯ + W x p ⇔ j ⋅ x p + b j ) = σ ( W x ⇔ j ⋅ x + b j ) \begin{aligned} h_j & = \sigma \left(\mathcal W_{x_1 \Leftrightarrow j} \cdot x_1 + \mathcal W_{x_2 \Leftrightarrow j} \cdot x_2 + \cdots + \mathcal W_{x_p \Leftrightarrow j} \cdot x_p + b_j\right) \\ & = \sigma(\mathcal W_{x \Leftrightarrow j} \cdot x + b_j) \end{aligned} hj=σ(Wx1jx1+Wx2jx2++Wxpjxp+bj)=σ(Wxjx+bj)

  • 很明显, h j h_j hj可看作是一个关于样本特征 x 1 , x 2 , ⋯   , x p x_1,x_2,\cdots,x_p x1,x2,,xp函数 h j ( x ) h_j(x) hj(x)。将样本集合 D \mathcal D D内的所有样本 x ( i ) ( i = 1 , 2 , ⋯   , N ) x^{(i)}(i=1,2,\cdots,N) x(i)(i=1,2,,N)带入到上式中,并取该结果的均值,结果记作 ρ j ^ \hat {\rho_j} ρj^
    也称 ρ j ^ \hat {\rho_j} ρj^为‘平均激活度’ ( Average Activation ) (\text{Average Activation}) (Average Activation)
    ρ j ^ = 1 N ∑ i = 1 N [ h j ( x ( i ) ) ] \hat {\rho_j} = \frac{1}{N} \sum_{i=1}^N \left[h_j(x^{(i)})\right] ρj^=N1i=1N[hj(x(i))]

  • 在向下执行之前,我们有必要了解一下 ρ j ^ \hat {\rho_j} ρj^,它的物理意义。为什么要这么设计它 ? ? ?如果从蒙特卡洛方法的反方向去考虑该式子,那么他可以被看作是:真实分布 P d a t a ( x ) \mathcal P_{data}(x) Pdata(x)下, h j ( x ) h_j(x) hj(x)的期望结果
    ρ j ^ ≈ E x ( i ) ∼ P d a t a ( x ) [ h j ( x ( i ) ) ] \hat {\rho_j} \approx \mathbb E_{x^{(i)} \sim \mathcal P_{data}(x)} [h_j(x^{(i)})] ρj^Ex(i)Pdata(x)[hj(x(i))]
    这个期望的大小意味着什么:

    • 如果这个期望值大,意味着 j j j个神经元 h j h_j hj对于样本 x ( i ) ( i = 1 , 2 , ⋯   , N ) x^{(i)}(i=1,2,\cdots,N) x(i)(i=1,2,,N)综合映射结果是不低的。 也就是说, h j h_j hj对于样本特征的描述更加完整,更加丰富;
      但这种特征描述方式违背了‘对其稀疏表示’的初衷,从而变成了单纯的复制。
    • 相反,如果这个期望值小,这意味着可能存在部分神经元活性较低/失活了,导致一部分神经元的输出接近于 0 / 0/ 0/就是 0 0 0。从而只能利用少数神经元完成编码器对特征的压缩。而这些抗打的(未失活的)神经元对应的特征就是 x x x中最显著的信息。
    • 但我们也不能让其无限的小,甚至为 0 0 0。如果是极限情况下 ρ j ^ = 0 \hat {\rho_j} =0 ρj^=0,这些最显著信息对应的神经元也失活了,这个模型就没有意义了
  • 基于上述描述,我们可以设置一个目标值 ρ \rho ρ,也称作稀疏性常数。这个值很小,例如 0.05 0.05 0.05(讲义中的例子),我们希望 ρ j ^ \hat {\rho_j} ρj^目标值 ρ \rho ρ靠近,直至相等:
    ρ j ^ = ρ \hat {\rho_j} = \rho ρj^=ρ
    如何对这个靠近进行描述 ? ? ?我们将 ρ j ^ \hat {\rho_j} ρj^ ρ \rho ρ看做是两个概率分布,使用 K L \mathcal K\mathcal L KL散度对其进行描述:
    K L \mathcal K\mathcal L KL散度可理解为两概率分布 ρ , ρ j ^ \rho,\hat {\rho_j} ρ,ρj^之间的相似程度。有下界 0 0 0,意味着 ρ = ρ j ^ \rho=\hat {\rho_j} ρ=ρj^
    K L ( ρ ∣ ∣ ρ j ^ ) = ρ log ⁡ ρ ρ j ^ + ( 1 − ρ ) log ⁡ 1 − ρ 1 − ρ j ^ \mathcal K\mathcal L(\rho || \hat {\rho_j}) = \rho \log \frac{\rho}{\hat {\rho_j}} + (1 - \rho) \log \frac{1 - \rho}{1 - \hat {\rho_j}} KL(ρ∣∣ρj^)=ρlogρj^ρ+(1ρ)log1ρj^1ρ
    当然,这里仅描述了 j j j个神经元 h j h_j hj的情况。对于完整稀疏惩罚 Ω ( h ) \Omega(h) Ω(h)可表示为:
    因为 ρ j ^ \hat {\rho_j} ρj^ h j h_j hj的均值/期望,因此整个式子中只有 h j ( j = 1 , 2 , ⋯   , K ) h_j(j=1,2,\cdots,\mathcal K) hj(j=1,2,,K)是变量,满足‘稀疏惩罚项’的要求。
    Ω ( h ) = ∑ j = 1 K K L ( ρ ∣ ∣ ρ j ^ ) \Omega(h) = \sum_{j=1}^{\mathcal K} \mathcal K\mathcal L(\rho || \hat {\rho_j}) Ω(h)=j=1KKL(ρ∣∣ρj^)

最终,基于该方式的稀疏自编码器策略可表示为:
J s p a r s e ( W , b ) = L [ x , f ( g ( x ) ) ] + Ω ( h ) = J ( W , b ) + β ⋅ ∑ j = 1 K K L ( ρ ∣ ∣ ρ j ^ ) \begin{aligned} \mathcal J_{sparse}(\mathcal W,b) & = \mathcal L[x,f(g(x))] + \Omega(h) \\ & = \mathcal J(\mathcal W,b) + \beta \cdot \sum_{j=1}^{\mathcal K} \mathcal K\mathcal L(\rho || \hat {\rho_j}) \end{aligned} Jsparse(W,b)=L[x,f(g(x))]+Ω(h)=J(W,b)+βj=1KKL(ρ∣∣ρj^)
回到题目, C \mathcal C \quad C 选项稀疏自编码器主要是针对编码器容量过完备情况下,对编码器神经元输出的稀疏惩罚。还是要和欠完备自编码器区分一下,正确。

相关参考:
《深度学习》(花书) P306 第14章 自编码器
深度学习 - 深度生成网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14.基于双层优化的电动汽车优化调度研究(文章复现)

说明书 MATLAB代码:基于双层优化的电动汽车优化调度研究 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》中文版 《A bi-layer optimization based temporal and sp…

【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简)

【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简) 简单记录下,可固定特定网页数据脱机使用—【蘇小沐】 文章目录 【OfflineExplorer篇】网站固定神器OfflineExplorer基础教程(简)OfflineExplorer简介 …

C++基础 虚函数

参考 顺便记录下写的比较好的博客 C Primer Plus (第6版) C虚函数表 C内存模型 关于vtordisp知多少? 【VC】虚函数 内存结构 - 第四篇(多重继承,无虚函数覆盖) C 虚函数表剖析 虚函数 静态联编: 在编译过程中函数实现与函数关…

react相关概念

真实DOM和虚拟DOM区别 react关于虚拟DOM和真实DOM 虚拟DOM比较“轻”,真实DOM比较“重”,因为虚拟DOM是React在用,无需真实DOM上那么多属性 虚拟DOM最终一定会转为真实DOM放入页面 JSX JSX: 全称JavsScript XML 是react定义的一种类似于XM…

西门子S7-1200内部存储区和掉电数据保持设置

S7-1200内部存储区分类 S7-1200的内部存储区分为工作存储区、装载存储区和保持性存储区三种。 装载存储区 是非易失性存储区。用于存储用户项目文件(用户程序、数据和组态)。 如果不使用存储卡,用户使用TIA PORTAL软件下载项目即下载到CPU内…

jpg图片怎么压缩大小,3个有效工具分享

jpg图片怎么压缩大小?很多小伙伴都会用电脑来保存平时拍摄在的照片吧,拍摄的照片大多是jpg格式的,如果图片的体积太大,那么可能会占用很多的电脑存储空间,最后的结果是电脑变得非常慢,甚至卡死。平时我们在…

Python词云图的制作与案例分享

一、基本知识 Python 有很多可用于制作词云图的库,其中比较常用的有 wordcloud 和 jieba。 wordcloud 是一个用于生成词云图的 Python 库,其使用了 Python 的 PIL 库和 numpy 库。您可以使用 pip 命令来安装 wordcloud 库: pip install wo…

《计算机网络——自顶向下方法》精炼——2.6.2-2.7.1

“An investment in knowledge pays the best interest.” - Benjamin 文章目录 分布式散列表(键-值)对散列函数逻辑上的实现环形DHT对等方扰动对等方离开对等方加入 UDP套接字编程客户端代码服务器端代码 分布式散列表 分布式散列表是一种数据库。集中…

NIO基础 - 网络编程

non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入…

STM32配置ADC2(DMA)进行采集 DAC 输出-1

1.实验目标 在正点原子的ADC(DMA)例程上,将ADC1改成ADC2来采集电压,并且进行测试 开发板:正点原子探索者STM32F407ZG 2.查看adc.h和开发指南需要修改哪些配置 ADC相关 通过查看开发指南我们发现,ADC1 和…

垃圾分类算法

垃圾分类算法 垃圾分类算法系统整体结构Python环境TensorFlow环境微信小程序及后台服务器环境数据预处理 垃圾分类算法 基于TensorFlow和VGG-16卷积神经网络训练垃圾分类模型,通过服务器实现分类模型移植到移动端,并在微信小程序中进行应用。 系统整体…

【ROS仿真实战】机器人模型描述文件介绍(二)

文章目录 前言一、URDF与XACRO简介1.1 URDF1.2 XACRO 二、三维模型的选择DAE还是STL?三、 总结 前言 URDF和XACRO是ROS机器人领域中用于描述机器人模型的两种XML格式文件,都是使用XML语法来定义机器人模型的结构、物理特性以及运动学参数等。URDF (Unif…

还在用MySQL存日志?

1. 引言 随着智能硬件成本降低和互联网网络的发展,在生活中场景的设备都已接入了网络中,其中传感器成为了设备获取外界信息的眼睛,网络成为设备交流的桥梁。在设备的交互中,往往存在着触发源,即标识控制指令的来源&am…

大型水利投资集团,打造数智财资管理新范式

随着我国城市化进程的不断推进,城市基础设施在国民经济中的作用愈加重要,其建设水平直接影响一个城市的竞争力。国有城投、水投等企业作为城市基础设施建设的主要参与者,其重要性不言而喻。随着国家、地方对基础设施重要性认识的加深以及政府…

第十章 游戏对象和组件访问

本节我们主要学习GameObject类,该类用于表示任何存在于场景中的游戏对象。这个类继承自Unity Object类(不是C#语言的Object类),我们可以理解这个Unity Object类是所有Unity的基类。这个Unity Object基类比较简单,我们很…

啃完这份笔记,18K妥妥的了......

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

MATLAB | 如何使用MATLAB绘制高度自定义的桑基图(sankey)

我之前也出过一个超简单的桑基图绘制函数,但是无法应对很多特殊情况,在这里我将其重构了一些写成了类,加了很多内置修饰函数,实现了流入流出数据不相等或者跨层数据流动的特殊情况绘制,首先展示一下使用我编写的函数能…

基于DSP+FPGA+ADS1282支持32Bit高精度数据采集方案(二)模拟电路设计

如图 4.1 所示是系统硬件系统的信号框图,数字信号处理板上的主要核心是 两个处理芯片,即 FPGA 和 DSP ,其中 FPGA 主要作用是做 DSP 和外围接口的 桥梁及数据预处理, DSP 做为数据解算核心。 FPGA 通过各种的数据总…

【C++初阶】类和对象(一)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C初阶 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C初阶】…

一文看懂低代码,5分钟从入门到原理全搞定

全球低代码市场已经走过了近20年,中国低代码市场近5年经历了百花齐放的广泛探索阶段,更旺盛的市场需求逐步在被激发。现在,让我们按下暂停键,看看这些产品给我们呈现了低代码市场一幅怎样的百景图。 低代码平台简介 广义上的低代…