最近一直在看Deep Learning,各类博客、论文看得不少

但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox

只是跟着Andrew Ng的UFLDL tutorial 写了些已有框架的代码(这部分的代码见github)

后来发现了一个matlab的Deep Learning的toolbox,发现其代码很简单,感觉比较适合用来学习算法

再一个就是matlab的实现可以省略掉很多数据结构的代码,使算法思路非常清晰

所以我想在解读这个toolbox的代码的同时来巩固自己学到的,同时也为下一步的实践打好基础

(本文只是从代码的角度解读算法,具体的算法理论步骤还是需要去看paper的

我会在文中给出一些相关的paper的名字,本文旨在梳理一下算法过程,不会深究算法原理和公式)

==========================================================================================

使用的代码:DeepLearnToolbox  ,下载地址:点击打开,感谢该toolbox的作者

==========================================================================================

今天介绍的呢是DL另一个非常重要的模型:SAE

把这个放在最后来说呢,主要是因为在UFLDL tutorial 里已经介绍得比较详细了,二来代码非常简单(在NN的基础之上)

先放一张autoencoder的基本结构:

基本意思就是一个隐藏层的神经网络,输入输出都是x,属于无监督学习

==========================================================================================

基本代码

saesetup.m

function sae = saesetup(size)

for u = 2 : numel(size)

sae.ae{u-1} = nnsetup([size(u-1) size(u) size(u-1)]);

end

end

saetrain.m

function sae = saetrain(sae, x, opts)

for i = 1 : numel(sae.ae);

disp(['Training AE ' num2str(i) '/' num2str(numel(sae.ae))]);

sae.ae{i} = nntrain(sae.ae{i}, x, x, opts);

t = nnff(sae.ae{i}, x, x);

x = t.a{2};

%remove bias term

x = x(:,2:end);

end

end

其实就是每一层一个autoencoder,隐藏层的值作为下一层的输入

各类变形

为了不致于本文内容太少。。。现在单独把它的几个变形提出来说说

sparse autoencoder:

这就是ufldl讲的版本,toolbox中的代码和ufldl中练习的部分基本一致:

在nnff.m中使用:nn.p{i} = 0.99 * nn.p{i} + 0.01 * mean(nn.a{i}, 1);计算

在nnbp.m中使用

pi = repmat(nn.p{i}, size(nn.a{i}, 1), 1);

sparsityError = [zeros(size(nn.a{i},1),1) nn.nonSparsityPenalty * (-nn.sparsityTarget ./ pi + (1 - nn.sparsityTarget) ./ (1 - pi))];

计算sparsityError即可

denoising autoencoder:

denoising其实就是在autoencoder的基础上,给输入的x加入噪声,就相当于dropout用在输入层

toolbox中的也实现非常简单:

在nntrain.m中:

batch_x = batch_x.*(rand(size(batch_x))>nn.inputZeroMaskedFraction)

也就是随即把大小为(nn.inputZeroMaskedFraction)的一部分x赋成0,denoising autoencoder的表现好像比sparse autoencoder要强一些

Contractive Auto-Encoders:

这篇论文里也总结了一下autoencoder,感觉很不错

Contractive autoencoders的模型是:

其中:

 hj是表示hidden layer的函数,用它对x求导

论文里说:这个项是

encourages the mapping to the feature space to be contractive in the neighborhood of the training data

具体的实现呢是:

代码呢参看:论文作者提供的:点击打开链接

主要是

jacobian(self,x):

_jacobi_loss():

_fit_reconstruction():

这几个函数和autoencoder有出入,其实也比较简单,就不细讲了

总结:

总的来说,autoencoder感觉是DL中比较好理解的一部分,所以介绍内容不长

可能你也发现了,Toolbox里还有一个文件夹叫CAE,不过这个CAE是Convolutional Auto-Encoders

ufldl matlab 工具箱,matlab的Deep Learning的toolbox 中的SAE算法相关推荐

  1. matlab sae模型,matlab的Deep Learning的toolbox 中的SAE算法

    ========================================================================================== 最近一直在看Dee ...

  2. 关于使用matlab工具箱BNT进行贝叶斯网络学习中遇到的问题

    关于使用matlab工具箱BNT进行贝叶斯网络学习中遇到的问题 导入BNT工具箱 在代码运行时出现的问题 导入BNT工具箱 在网络上找到bnt工具箱后,解压. 找到设置路径点击后, 点击添加并包含子文 ...

  3. 看不懂matlab工具箱,matlab /simulink 各个工具箱的简单介绍 入门请看

    所谓Matlab工具箱就是一些M文件的集合, 用户可以修改工具箱中的函数,更为重要的是用户可以通过编制M文件来任意地添加工具箱中原来没有的工具函数.此功能充分体现了matlab语言的开放性.许多的专业 ...

  4. vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....

    工业生产中经常遇到复杂的数据信息处理问题,需要大运算量的矩阵计算及对分析结果进行实时.直观的图形化显示.Matlab是集数值分析.矩阵运算.信号处理和图形显示于一体的高性能数学软件,将其强大的计算功能 ...

  5. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)...

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  6. deep learning 深度学习中英文版下载地址

    度学习权威Yoshua Bengio和GAN之父Ian Goodfellow等人合著的DeepLearning经典教程<Deep Learning>.废话不多说,直接上链接. 中文版pdf ...

  7. mpt matlab 工具箱,matlab的mpt工具箱(含voronoi函数)

    [实例简介] matlab的最新mpt工具箱里面含有各种关于画voronoi图等的函数) [实例截图] [核心代码] mpt3-3_2_0 └── mpt3-3_2_0 └── mpt ├── Con ...

  8. 冈萨雷斯matlab工具箱,MATLAB版冈萨雷斯+中文高清版.pdf

    MATLAB版冈萨雷斯+中文高清版:(MATLAB版)数字图像处理冈萨雷斯+中文高清版.pdf.数字图像处理(MATLAB版)冈萨雷斯+中文高清版.包含MATLAB代码实现<数字图像处理(MAT ...

  9. 机器学习 matlab工具箱,[matlab]机器学习及SVM工具箱学习笔记

    机器学习与神经网络的关系: 机器学习是目的,神经网络是算法.神经网络是实现机器学习的一种方法,平行于SVM. 常用的两种工具:svm tool.libsvm SVM分为SVC和SVR,svc是专门用来 ...

最新文章

  1. HTML big 标签
  2. 利用python爬虫(part5)--lxml模块
  3. Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle
  4. Excel的导入与导出
  5. nginx+uwsgi 部署
  6. Android 简介:Android SDK 和开发框架简介
  7. ASP.NET或者 js方式实现文件夹多图片浏览的方式
  8. c++标准程序库:STL容器之vector
  9. 创建java普通工程 ( 4 )
  10. CF AIM Tech Round 4 (Div. 1) A. Sorting by Subsequences
  11. JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍
  12. win10+Python3.7.3+OpenCV3.4.1入门学习(十一 图像金字塔)————11.1 图像金字塔理论基础
  13. 李岩 太极计算机,《高中体育游戏300例》李岩_孔网
  14. 游戏引擎架构-学习笔记
  15. Android组件化开发实践和案例分享 1
  16. Mac系统查看端口占用的进程
  17. 密苏里大学理工学院计算机,东南密苏里州立大学的计算机专业如何?
  18. The Sandbox 的 OliveX Fitness 之城来啦!
  19. 无线网密码修改好了无法连接服务器,无线路由器修改密码后电脑无法上网如何解决...
  20. python文件操作入门

热门文章

  1. 分析 linux 日志文件,linux精讲|操作系统常见日志文件分析
  2. matlab中画花瓣,matlab画心,画玫瑰花,表白合集
  3. sql查询between and_SQL(二)——SQL简单查询
  4. php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别
  5. python 认证_Django 用户认证
  6. b区计算机调剂学校,2021年b区研究生调剂院校有哪些
  7. 计算机专业课题 结题报告,计算机结题报告 - 结题报告 - 书业网.doc
  8. 福建2021高考厦门一中成绩查询,2021年福建厦门各高中中考分数线及录取时间结果查询安排...
  9. hive能替代oracle_173-Hive
  10. linux下的tmpfs目录重启后文件全部消失