Autoencoders and Sparsity(二)

In this problem set, you will implement the sparse autoencoder algorithm, and show how it
discovers that edges are a good representation for natural images.

Step 1: Generate training set

Step 2: Sparse autoencoder objective

Step 3: Gradient checking

Step 4: Train the sparse autoencoder

Step 5: Visualization

流程

1. 计算出网络每个节点的输入值(即程序中的z值)和输出值(即程序中的a值,a是z的sigmoid函数值)。

2. 利用z值和a值计算出网络每个节点的误差值(即程序中的delta值)。

3. 这样可以利用上面计算出的每个节点的a,z,delta来表达出系统的损失函数以及损失函数的偏导数了

其实步骤1是前向进行的,也就是说按照输入层——》隐含层——》输出层的方向进行计算。而步骤2是逆方向进行的(这也是该算法叫做BP算法的来源),即每个节点的误差值是按照输出层——》隐含层——》输入层方向进行的。

Matlab

bsxfun —— C=bsxfun(fun,A,B)表达的是两个数组A和B间元素的二值操作,fun是函数句柄或者m文件,或者是内嵌的函数。在实际使用过程中fun有很多选择比如说加,减等,前面需要使用符号’@’.一般情况下A和B需要尺寸大小相同,如果不相同的话,则只能有一个维度不同,同时A和B中在该维度处必须有一个的维度为1。比如说bsxfun(@minus, A, mean(A)),其中A和mean(A)的大小是不同的,这里的意思需要先将mean(A)扩充到和A大小相同,然后用A的每个元素减去扩充后的mean(A)对应元素的值。

rand —— 生成均匀分布的伪随机数。分布在(0~1)之间
主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数
             rand(m,n,‘double‘)生成指定精度的均匀分布的伪随机数,参数还可以是‘single‘
             rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数

randn —— 生成标准正态分布的伪随机数(均值为0,方差为1)

randi —— 生成均匀分布的伪随机整数
  主要语法:randi(iMax)在闭区间(0,iMax)生成均匀分布的伪随机整数 
             randi(iMax,m,n)在闭区间(0,iMax)生成mXn型随机矩阵
             r = randi([iMin,iMax],m,n)在闭区间(iMin,iMax)生成mXn型随机矩阵

exist —— 测试参数是否存在,比如说exist(‘opt_normalize‘, ‘var‘)表示检测变量opt_normalize是否存在,其中的’var’表示变量的意思

colormap —— 设置当前常见的颜色值表。

floor —— floor(A):取不大于A的最大整数

ceil —— ceil(A):取不小于A的最小整数

repmat —— 该函数是扩展一个矩阵并把原来矩阵中的数据复制进去。比如说B = repmat(A,m,n),就是创建一个矩阵B,B中复制了共m*n个A矩阵,因此B矩阵的大小为[size(A,1)*m  size(A,2)*m]

Technorati 标签: Machine Learning

时间: 2024-10-12 10:00:10

Autoencoders and Sparsity(二)的相关文章

Autoencoders and Sparsity(一)

An autoencoder 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: The autoencoder tries to learn a function . In other words,

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 describe

【转帖】Andrew ng 【Sparse Autoencoder 】@UFLDL Tutorial

Neural Networks From Ufldl Jump to: navigation, search Consider a supervised learning problem where we have access to labeled training examples (x(i),y(i)).  Neural networks give a way of defining a complex, non-linear form of hypotheses hW,b(x), wit

【转帖】UFLDL Tutorial(the main ideas of Unsupervised Feature Learning and Deep Learning)

UFLDL Tutorial From Ufldl Jump to: navigation, search Description: This tutorial will teach you the main ideas of Unsupervised Feature Learning and Deep Learning.  By working through it, you will also get to implement several feature learning/deep le

【转帖】【面向代码】学习 Deep Learning(一)Neural Network

最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的UFLDL tutorial 写了些已有框架的代码(这部分的代码见github) 后来发现了一个matlab的Deep Learning的toolbox,发现其代码很简单,感觉比较适合用来学习算法 再一个就是matlab的实现可以省略掉很多数据结构的代码,使算法思路非常清晰 所以我想在解读这个too

【DeepLearning】UFLDL错误记录

Autoencoders and Sparsity章节公式错误: s2 应为 s3. 意为从第2层(隐藏层)i节点到输出层j节点的误差加权和.

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正交流,谢谢. 本文的论文来自: Sparse filtering, J. N

浅谈压缩感知(二十七):压缩感知重构算法之稀疏度自适应匹配追踪(SAMP)

主要内容: SAMP的算法流程 SAMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.SAMP的算法流程 前面所述大部分OMP及其前改算法都需要已知信号的稀疏度K,而在实际中这个一般是不知道的,基于此背景,稀疏度自适应匹配追踪(Sparsity Adaptive MP)被提出.SAMP不需要知道稀疏度K,在迭代循环中,根据新残差与旧残差的比较来确定选择原子的个数. SAMP的算法流程: 二.SAMP的MATLAB实现(CS_SAMP.m) ? 三.一维信号

浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)

主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为OMP算法的一种推广.OMP每次只选择与残差相关最大的一个,而gOMP则是简单地选择最大的S个.之所以这里表述为"简单地选择"是相比于ROMP之类算法的,不进行任何其它处理,只是选择最大的S个而已. gOMP的算法流程: 二.gOMP的MATLAB实现(CS_gOMP