可视化自编码器训练结果&稀疏自编码器符号一览表

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

\begin{align}
a^{(2)}_i = f\left(\sum_{j=1}^{100} W^{(1)}_{ij} x_j  + b^{(1)}_i \right).
\end{align}

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

\begin{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时使用的符号一览表:

 

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

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

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

 

 

 

posted @ 2014-01-14 16:42  Providence  阅读(1470)  评论(0编辑  收藏  举报