Sparse Autoencoder(二)
Gradient checking and advanced optimization
In this section, we describe a method for numerically checking the derivatives computed by your code to make sure that your implementation is correct. Carrying out the derivative checking procedure described here will significantly increase your confidence in the correctness of your code.
Suppose we want to minimize
as a function of
. For this example, suppose
, so that
. In this 1-dimensional case, one iteration of gradient descent is given by
Suppose also that we have implemented some function
that purportedly computes
, so that we implement gradient descent using the update
.
Recall the mathematical definition of the derivative as
Thus, at any specific value of
, we can numerically approximate the derivative as follows:
Thus, given a function
that is supposedly computing
, we can now numerically verify its correctness by checking that
The degree to which these two values should approximate each other will depend on the details of
. But assuming
, you'll usually find that the left- and right-hand sides of the above will agree to at least 4 significant digits (and often many more).
Suppose we have a function
that purportedly computes
; we'd like to check if
is outputting correct derivative values. Let
, where
is the
-th basis vector (a vector of the same dimension as
, with a "1" in the
-th position and "0"s everywhere else). So,
is the same as
, except its
-th element has been incremented by EPSILON. Similarly, let
be the corresponding vector with the
-th element decreased by EPSILON. We can now numerically verify
's correctness by checking, for each
, that:
参数为向量,为了验证每一维的计算正确性,可以控制其他变量
When implementing backpropagation to train a neural network, in a correct implementation we will have that
This result shows that the final block of psuedo-code in Backpropagation Algorithm is indeed implementing gradient descent. To make sure your implementation of gradient descent is correct, it is usually very helpful to use the method described above to numerically compute the derivatives of
, and thereby verify that your computations of
and
are indeed giving the derivatives you want.
Autoencoders and Sparsity
Anautoencoder neural network is an unsupervised learning algorithm that applies backpropagation, setting the target values to be equal to the inputs. I.e., it uses
.
Here is an autoencoder:
we will write
to denote the activation of this hidden unit when the network is given a specific input
. Further, let
be the average activation of hidden unit
(averaged over the training set). We would like to (approximately) enforce the constraint
where
is a sparsity parameter, typically a small value close to zero (say
). In other words, we would like the average activation of each hidden neuron
to be close to 0.05 (say). To satisfy this constraint, the hidden unit's activations must mostly be near 0.
To achieve this, we will add an extra penalty term to our optimization objective that penalizes
deviating significantly from
. Many choices of the penalty term will give reasonable results. We will choose the following:
Here,
is the number of neurons in the hidden layer, and the index
is summing over the hidden units in our network. If you are familiar with the concept of KL divergence, this penalty term is based on it, and can also be written
Our overall cost function is now
where
is as defined previously, and
controls the weight of the sparsity penalty term. The term
(implicitly) depends on
also, because it is the average activation of hidden unit
, and the activation of a hidden unit depends on the parameters
.
Visualizing a Trained Autoencoder
Consider the case of training an autoencoder on
images, so that
. Each hidden unit
computes a function of the input:
We will visualize the function computed by hidden unit
---which depends on the parameters
(ignoring the bias term for now)---using a 2D image. In particular, we think of
as some non-linear feature of the input
If we suppose that the input is norm constrained by
, then one can show (try doing this yourself) that the input which maximally activates hidden unit
is given by setting pixel
(for all 100 pixels,
) to
By displaying the image formed by these pixel intensity values, we can begin to understand what feature hidden unit
is looking for.
对一幅图像进行Autoencoder ,前面的隐藏结点一般捕获的是边缘等初级特征,越靠后隐藏结点捕获的特征语义更深。
Sparse Autoencoder(二)的更多相关文章
- DL二(稀疏自编码器 Sparse Autoencoder)
稀疏自编码器 Sparse Autoencoder 一神经网络(Neural Networks) 1.1 基本术语 神经网络(neural networks) 激活函数(activation func ...
- Deep Learning 1_深度学习UFLDL教程:Sparse Autoencoder练习(斯坦福大学深度学习教程)
1前言 本人写技术博客的目的,其实是感觉好多东西,很长一段时间不动就会忘记了,为了加深学习记忆以及方便以后可能忘记后能很快回忆起自己曾经学过的东西. 首先,在网上找了一些资料,看见介绍说UFLDL很不 ...
- (六)6.5 Neurons Networks Implements of Sparse Autoencoder
一大波matlab代码正在靠近.- -! sparse autoencoder的一个实例练习,这个例子所要实现的内容大概如下:从给定的很多张自然图片中截取出大小为8*8的小patches图片共1000 ...
- UFLDL实验报告2:Sparse Autoencoder
Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值, ...
- 七、Sparse Autoencoder介绍
目前为止,我们已经讨论了神经网络在有监督学习中的应用.在有监督学习中,训练样本是有类别标签的.现在假设我们只有一个没有带类别标签的训练样本集合 ,其中 .自编码神经网络是一种无监督学习算法,它使用 ...
- CS229 6.5 Neurons Networks Implements of Sparse Autoencoder
sparse autoencoder的一个实例练习,这个例子所要实现的内容大概如下:从给定的很多张自然图片中截取出大小为8*8的小patches图片共10000张,现在需要用sparse autoen ...
- 【DeepLearning】Exercise:Sparse Autoencoder
Exercise:Sparse Autoencoder 习题的链接:Exercise:Sparse Autoencoder 注意点: 1.训练样本像素值需要归一化. 因为输出层的激活函数是logist ...
- Sparse AutoEncoder简介
1. AutoEncoder AutoEncoder是一种特殊的三层神经网络, 其输出等于输入:\(y^{(i)}=x^{(i)}\), 如下图所示: 亦即AutoEncoder想学到的函数为\(f_ ...
- Exercise:Sparse Autoencoder
斯坦福deep learning教程中的自稀疏编码器的练习,主要是参考了 http://www.cnblogs.com/tornadomeet/archive/2013/03/20/2970724 ...
随机推荐
- Monad的基本运算
A monad is created by defining a type constructor M and two operations, bind and return (where retur ...
- Linux FTP客户端
1.File Zilla File Zilla是一个开源的,跨平台的Linux FTP客户端.File Zilla有一个标签式的用户界面,允许用户查看正在传输的文件的所有细节.File Zilla是通 ...
- sys.path
sys.path.append() 和 sys.path.insert() python程序中使用 import XXX 时,python解析器会在当前目录.已安装和第三方模块中搜索 xxx,如果都搜 ...
- Codeforces#441 Div.2 四小题
Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...
- 对比学习:《深度学习之Pytorch》《PyTorch深度学习实战》+代码
PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉.自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的Allen N ...
- 网络编程select函数
select函数的作用: 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法 ...
- myeclipse2013 jsp编辑初始化
首先,大家可能有过这种经历.双击打开jsp编辑.它默认会打开视图,这样就使人恼火了,卡死了.所以我们能够自己设jsp的默认打开方式:打开Window-->preferences得: 搜索edit ...
- LINUX设备驱动程序笔记(一)设备驱动程序简单介绍
<一>:设备驱动程序的作用 从一个角度看,设备驱动程序的作用在于提供机制,而不是策略. 在编写驱动程序时,程序猿应该特别注意以下这个基本概念:编写訪问硬件的内核代码时,不要给用户强加不论什 ...
- Android——bootchart
bootchart:android原生自带的开机性能查看机制.通过收集android开机过程中的各种log数据,终于能够图表的形式展现各个进程在开机过程中的性能.(博客不能断-) 撰写不易,转载需注明 ...
- 智课雅思短语---一、be no exception
智课雅思短语---一.be no exception 一.总结 一句话总结:…也不例外? …be no exception 1.经济的快速发展? the rapid development of ec ...
as a function of
. For this example, suppose
, so that
. In this 1-dimensional case, one iteration of gradient descent is given by
that purportedly computes
, so that we implement gradient descent using the update
.


. But assuming
, you'll usually find that the left- and right-hand sides of the above will agree to at least 4 significant digits (and often many more).
that purportedly computes
; we'd like to check if
is outputting correct derivative values. Let
, where
-th basis vector (a vector of the same dimension as
is the same as
be the corresponding vector with the 

, and thereby verify that your computations of
and
are indeed giving the derivatives you want.
.
to denote the activation of this hidden unit when the network is given a specific input
. Further, let
(averaged over the training set). We would like to (approximately) enforce the constraint
is a sparsity parameter, typically a small value close to zero (say
). In other words, we would like the average activation of each hidden neuron
deviating significantly from 
is the number of neurons in the hidden layer, and the index 

controls the weight of the sparsity penalty term. The term
also, because it is the average activation of hidden unit 
images, so that
. Each hidden unit 
(ignoring the bias term for now)---using a 2D image. In particular, we think of
as some non-linear feature of the input
, then one can show (try doing this yourself) that the input which maximally activates hidden unit
(for all 100 pixels,
) to