zoukankan      html  css  js  c++  java
  • 可视化自编码器训练结果&稀疏自编码器符号一览表

    训练完(稀疏)自编码器,我们还想把这自编码器学习到的函数可视化出来,好弄明白它到底学到了什么。我们以在10×10图像(即n=100)上训练自编码器为例。在该自编码器中,每个隐藏单元i对如下关于输入的函数进行计算:

    egin{align}
a^{(2)}_i = fleft(sum_{j=1}^{100} W^{(1)}_{ij} x_j  + b^{(1)}_i 
ight).
end{align}

    我们将要可视化的函数,就是上面这个以2D图像为输入,并由隐藏单元i计算出来的函数。它是依赖于参数	extstyle W^{(1)}_{ij}的(暂时忽略偏置项bi)。需要注意的是,	extstyle a^{(2)}_i可看作输入	extstyle x非线性特征。不过还有个问题:什么样的输入图像x可以让可让	extstyle a^{(2)}_i得到最大程度的激励?(通俗一点说,隐藏单元	extstyle i要找个什么样的特征?)。这里我们必须给x加个约束,否则会得到平凡解。若假设输入有范数约束	extstyle ||x||^2 = sum_{i=1}^{100} x_i^2 leq 1,则可证。令隐藏单元i得到最大激励的输入应该由下面公式计算的像素	extstyle x_j给出(共需计算100个像素,j=1,...,100):

    egin{align}
x_j = frac{W^{(1)}_{ij}}{sqrt{sum_{j=1}^{100} (W^{(1)}_{ij})^2}}.
end{align}

    当我们用上式算出各像素的值、把它们组成一幅图像、并将图像呈现在我们面前之时,隐藏单元i所追寻特征的真正含义也渐渐明朗起来???。

    假如我们训练的自编码器有100个隐藏单元,可视化结果就会包含100幅这样的图像——每个隐藏单元都对应一幅图像。审视这100幅图像,我们可以试着体会这些隐藏单元学出来的整体效果是什么样的。

    当我们对稀疏自编码器(100个隐藏单元,在10X10像素的输入上训练 )进行上述可视化处理之后,结果如下所示:

    ExampleSparseAutoencoderWeights.png

    上图的每一个小方块都给出可一个(带有有界范数的)输入图像x,它可以使这100个隐藏单元中的某一个获得最大激励。我们可以看到,不同的隐藏单元学会了在图像的不同位置和方向进行边缘检测。

    显而易见,这些特征对物体识别等计算视觉任务是十分有用的。若将其用于其他输入域(如音频),该算法也可学到对这些输入域有用的表示或特征。

    稀疏自编码器符号一览表

    下面是我们在推导sparse autoencoder时使用的符号一览表:

    符号 含义
    	extstyle x 训练样本的输入特征	extstyle x in Re^{n}.
    	extstyle y 输出值/目标值. 这里 	extstyle y 可以是向量. 在autoencoder中,	extstyle y=x.
    	extstyle (x^{(i)}, y^{(i)}) 第 	extstyle i 个训练样本
    	extstyle h_{W,b}(x) 输入为 	extstyle x 时的假设输出,其中包含参数	extstyle W,b. 该输出应当与目标值 	extstyle y 具有相同的维数.
    	extstyle W^{(l)}_{ij} 连接第 	extstyle l 层 	extstyle j 单元和第 	extstyle l+1 层 	extstyle i 单元的参数.
    	extstyle b^{(l)}_{i} 第 	extstyle l+1 层 	extstyle i 单元的偏置项. 也可以看作是连接第 	extstyle l 层偏置单元和第 	extstyle l+1 层 	extstyle i单元的参数.
    	extstyle 	heta 参数向量. 可以认为该向量是通过将参数	extstyle W,b 组合展开为一个长的列向量而得到.
    	extstyle a^{(l)}_i 网络中第 	extstyle l 层 	extstyle i 单元的激活(输出)值.

    另外,由于 	extstyle L_1 层是输入层,所以 	extstyle a^{(1)}_i = x_i.

    	extstyle f(cdot) 激活函数. 本文中我们使用 	extstyle f(z) = 	anh(z).
    	extstyle z^{(l)}_i 第 	extstyle l 层 	extstyle i 单元所有输入的加权和. 因此有 	extstyle a^{(l)}_i = f(z^{(l)}_i).
    	extstyle alpha 学习率
    	extstyle s_l 第 	extstyle l 层的单元数目(不包含偏置单元).
    	extstyle n_l 网络中的层数. 通常 	extstyle L_1 层是输入层,	extstyle L_{n_l} 层是输出层.
    	extstyle lambda 权重衰减系数.
    	extstyle hat{x} 对于一个autoencoder,该符号表示其输出值;亦即输入值 	extstyle x 的重构值. 与 	extstyle h_{W,b}(x) 含义相同.
    	extstyle 
ho 稀疏值,可以用它指定我们所需的稀疏程度
    	extstyle hat
ho_i (sparse autoencoder中)隐藏单元 	extstyle i的平均激活值.
    	extstyle eta (sparse autoencoder目标函数中)稀疏值惩罚项的权重.

  • 相关阅读:
    python实战===短信验证码的小项目
    pillow模块的学习
    安全测试===8大前端安全问题(下)
    安全测试===8大前端安全问题(上)
    移动端测试===Android内存泄露和GC机制(转)
    识别验证码
    网址
    自动化测试===Macaca环境搭建,自我总结
    linux===Ubuntu修改设备名称
    macaca安装失败的解决办法!
  • 原文地址:https://www.cnblogs.com/rong86/p/3519323.html
Copyright © 2011-2022 走看看