可视化自编码器训练结果
2015-09-04 12:00
218 查看
navigation,
search
训练完(稀疏)自编码器,我们还想把这自编码器学到的函数可视化出来,好弄明白它到底学到了什么。我们以在10×10图像(即n=100)上训练自编码器为例。在该自编码器中,每个隐藏单元i对如下关于输入的函数进行计算:
![](http://ufldl.stanford.edu/wiki/images/math/1/d/2/1d29407eddf5fc12ca94509c9a9f7979.png)
我们将要可视化的函数,就是上面这个以2D图像为输入、并由隐藏单元i计算出来的函数。它是依赖于参数
![](http://ufldl.stanford.edu/wiki/images/math/8/2/d/82d79561e2994ccba3e4fe2cc4d527e5.png)
的(暂时忽略偏置项bi)。需要注意的是,
![](http://ufldl.stanford.edu/wiki/images/math/e/1/4/e14f36d1b33f6ed0dc131a7ddd166004.png)
可看作输入
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
的非线性特征。不过还有个问题:什么样的输入图像
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
可让
![](http://ufldl.stanford.edu/wiki/images/math/e/1/4/e14f36d1b33f6ed0dc131a7ddd166004.png)
得到最大程度的激励?(通俗一点说,隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
要找个什么样的特征?)。这里我们必须给
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
加约束,否则会得到平凡解。若假设输入有范数约束
![](http://ufldl.stanford.edu/wiki/images/math/4/7/7/4777ad65a6cc46e9f07e4100cddf4161.png)
,则可证(请读者自行推导)令隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
得到最大激励的输入应由下面公式计算的像素
![](http://ufldl.stanford.edu/wiki/images/math/b/d/f/bdf5b20642553027712d5b5240b31cf3.png)
给出(共需计算100个像素,j=1,…,100):
![](http://ufldl.stanford.edu/wiki/images/math/5/4/0/540c1290f18272da2c83610bd1c18380.png)
当我们用上式算出各像素的值、把它们组成一幅图像、并将图像呈现在我们面前之时,隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
所追寻特征的真正含义也渐渐明朗起来。
假如我们训练的自编码器有100个隐藏单元,可视化结果就会包含100幅这样的图像——每个隐藏单元都对应一幅图像。审视这100幅图像,我们可以试着体会这些隐藏单元学出来的整体效果是什么样的。
当我们对稀疏自编码器(100个隐藏单元,在10X10像素的输入上训练 )进行上述可视化处理之后,结果如下所示:
![](http://ufldl.stanford.edu/wiki/images/thumb/3/3e/ExampleSparseAutoencoderWeights.png/400px-ExampleSparseAutoencoderWeights.png)
![](http://ufldl.stanford.edu/wiki/skins/common/images/magnify-clip.png)
上图的每个小方块都给出了一个(带有有界范数 的)输入图像
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
,它可使这100个隐藏单元中的某一个获得最大激励。我们可以看到,不同的隐藏单元学会了在图像的不同位置和方向进行边缘检测。
显而易见,这些特征对物体识别等计算机视觉任务是十分有用的。若将其用于其他输入域(如音频),该算法也可学到对这些输入域有用的表示或特征。
可视化自编码器训练结果
From Ufldl
Jump to:navigation,
search
训练完(稀疏)自编码器,我们还想把这自编码器学到的函数可视化出来,好弄明白它到底学到了什么。我们以在10×10图像(即n=100)上训练自编码器为例。在该自编码器中,每个隐藏单元i对如下关于输入的函数进行计算:
![](http://ufldl.stanford.edu/wiki/images/math/1/d/2/1d29407eddf5fc12ca94509c9a9f7979.png)
我们将要可视化的函数,就是上面这个以2D图像为输入、并由隐藏单元i计算出来的函数。它是依赖于参数
![](http://ufldl.stanford.edu/wiki/images/math/8/2/d/82d79561e2994ccba3e4fe2cc4d527e5.png)
的(暂时忽略偏置项bi)。需要注意的是,
![](http://ufldl.stanford.edu/wiki/images/math/e/1/4/e14f36d1b33f6ed0dc131a7ddd166004.png)
可看作输入
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
的非线性特征。不过还有个问题:什么样的输入图像
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
可让
![](http://ufldl.stanford.edu/wiki/images/math/e/1/4/e14f36d1b33f6ed0dc131a7ddd166004.png)
得到最大程度的激励?(通俗一点说,隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
要找个什么样的特征?)。这里我们必须给
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
加约束,否则会得到平凡解。若假设输入有范数约束
![](http://ufldl.stanford.edu/wiki/images/math/4/7/7/4777ad65a6cc46e9f07e4100cddf4161.png)
,则可证(请读者自行推导)令隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
得到最大激励的输入应由下面公式计算的像素
![](http://ufldl.stanford.edu/wiki/images/math/b/d/f/bdf5b20642553027712d5b5240b31cf3.png)
给出(共需计算100个像素,j=1,…,100):
![](http://ufldl.stanford.edu/wiki/images/math/5/4/0/540c1290f18272da2c83610bd1c18380.png)
当我们用上式算出各像素的值、把它们组成一幅图像、并将图像呈现在我们面前之时,隐藏单元
![](http://ufldl.stanford.edu/wiki/images/math/0/b/3/0b36ee693126b34b58f77dba7ed23987.png)
所追寻特征的真正含义也渐渐明朗起来。
假如我们训练的自编码器有100个隐藏单元,可视化结果就会包含100幅这样的图像——每个隐藏单元都对应一幅图像。审视这100幅图像,我们可以试着体会这些隐藏单元学出来的整体效果是什么样的。
当我们对稀疏自编码器(100个隐藏单元,在10X10像素的输入上训练 )进行上述可视化处理之后,结果如下所示:
![](http://ufldl.stanford.edu/wiki/images/thumb/3/3e/ExampleSparseAutoencoderWeights.png/400px-ExampleSparseAutoencoderWeights.png)
![](http://ufldl.stanford.edu/wiki/skins/common/images/magnify-clip.png)
上图的每个小方块都给出了一个(带有有界范数 的)输入图像
![](http://ufldl.stanford.edu/wiki/images/math/f/6/c/f6c0f8758a1eb9c99c0bbe309ff2c5a5.png)
,它可使这100个隐藏单元中的某一个获得最大激励。我们可以看到,不同的隐藏单元学会了在图像的不同位置和方向进行边缘检测。
显而易见,这些特征对物体识别等计算机视觉任务是十分有用的。若将其用于其他输入域(如音频),该算法也可学到对这些输入域有用的表示或特征。
相关文章推荐
- 瑶瑶带你玩激光坦克(暴力)
- char* 和char[]的区别
- C++模板学习之栈的实现
- 自编码算法与稀疏性
- UIday0801:UINavigationController视图控制器的属性和用法
- Java Excel API简介
- c++模版元编程
- css经验总结
- window下php5.6-x64-ts可用php_redis.dll文件
- 关于ArcGIS的疑惑--只支持ArcGIS Desktop的接口
- 2087 剪花布条【kmp】
- JSP-- cookies
- java IO流 ObjectStream PipedStream 随机访问文件 字符编码--21
- 数值运算
- c语言指针与数组
- CentOS 7 挂载本地光盘作为镜像源
- 学习日志---非递归二叉树游标遍历(前中后层序)
- 1043. Is It a Binary Search Tree (25)
- 截取字符串
- hadoop学习之路——12、win7下eclipse连接hadoop测试环境