当前位置: 首页 > 编程日记 > 正文

Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)

前言:

最近一直在思考,如果我使用SCSAE(即stacked convolution sparse autoendoer)算法来训练一个的deep model的话,其网络的第二层开始后续所有网络层的训练数据从哪里来呢?其实如果在这个问题中,当我们的样本大小(指提供的最原始数据,比如大的图片集)和我们所训练第一个网络的输入维度是一样的话,那么第二层网络的输入即第一层网络的输出(后续的网络依次类推),但是这种情况下根本就不会涉及到convolution(一般有convolution的地方也会有pooling),所以不属于我想要讨论的SCSAE框架。后面根据自己对deep learning的理解(刚接触DL不到2个月,菜鸟一个)认为第二层网络的输入需要将原始的训练样本集通过covolution的方法经过第一层网络(已训练好了的网络)的输出采样(如果输出的特征图尺寸比第二层网络的输入尺寸大的话,就需要通过随机采样方法了)得到。

最近同时还在思考的另一个问题是,如果我们的SCASE网络预训练成功后,后期的fine-tuning该怎样进行呢?当然了,fine-tuning的过程肯定会用到BP算法的,但是此时的SCASE网络并没有清晰直观的网络结构(不像非convolution网络那样,虽然有多层,但是前一层网络的输出直接连接到后一层网络的输入,结构清晰,一目了然,其fine-tuning过程容易理解),所以在使用BP算法时会不会有什么不同呢?特别是其中convolution后的pooling部分,比如max-pooling,该部分就不需要学习任何参数,但它也是SCASE结构中的一层,所以感觉其对BP算法计算会有影响。

内容:

带着这2个问题而是就在网络上开始寻找答案了。首先,找到了一篇文章Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction,看这个标题感觉就是我想要的,只是它没有预训练网络时不是用的SAE,而是标准的AE,这点影响不大。大致浏览了下文章,下面是一些笔记:

DAE(denoised autoencoder)是在训练网络参数时,先计算下输入样本的统计特性,并根据这个统计特性给这些样本加入一定的噪声,再把这些带噪声的图像输入到网络中训练。这样做的好处是,如果网络能够重构带噪声的样本,那么它的泛化能力就更强。

SCAE(本文作者的方法)中每个隐含层的节点都是用来做covolution的,因此针对某个隐含层节点,给定一张大图片通过convolution就可以得到一张特征图,然后对这张特征图用刚才那个节点的权值转置矩阵就可以还原出对应的那幅大图。

关于梯度下降的一些小总结:

标准梯度下降也就是batch梯度下降,其更新过程的增量是一次用所有样本的误差来计算得到的。

随机梯度下降和标准梯度下降法类似,区别在于它每次更新权值时只是用一个随机的样本来计算其增量。

共轭梯度下降是前面梯度下降的基础上采用某种策略来更改学习率,其策略是通过一系列线搜索来找到误差函数最小值的方向,然后在该方向上找到一个适合的学习率,当然,其第一次的线搜索为梯度的负方向。

Max-pooling可以提高提取特征的不变性,最初的目标是用在有监督的学习中的。作者所使用的max-pooling一般是无重叠的,它有公开max-pooling相关的matlab源码:http://www.idsia.ch/~masci/software.php文章指出使用了max-pooling层后就没有必要隐含层或者权值作L1或者L2的规则化了,why?

作者用一个隐含层(或者后面再加一个max-pooling层)对数据库MNIST和CIFAR10提取出了20个7*7的特征,其实验结果显示如下:

其中的a为不加噪声,不用pooling层学习到的特征;b是加了噪声但没用pooling层时的特征;c是用了2*2大小的pooling层后但没加噪声时对应的特征;d是用了2*2大小的pooling层且加了噪声学习到的特征。

从上面可以看到,c图学习到的特征比较不错。C图是没有加入噪声且用了pooling层。由于a图和b图学到的都是不重要的特征,而d图学到特征的又不太像人脑视觉皮层那样,所以作者认为加噪声用处不大,且max-pooling功能特别强大,大到像作者说的那样有了max-pooling后什么约束就可以不用了,好像神器一样。我不太赞同作者的观点,一是它只是用了普通的AE(没有其他任何的约束,纯属一个压缩),且特征的个数不多,训练样本的个数也少,所以学习不到特征也是很正常的。

后面作者构建了一个含6个隐含层的深度网络来对MNIST和CIFAR10这2个数据库来做识别,使用的是没有经过任何处理的raw数据。由于一开始作者已经得到结论只用max-pooling和标准AE,不用加噪声,所以这个网络也是按照他的结论设定的。第1个隐含层实现100个5*5的filter,第2个隐含层为2*2的max-pooling,第3个隐含层为150个5*5的filter,第4个隐含层也为2*2的max-pooling,第5个隐含层为200个3*3的filter,第6个隐含层有300个节点,实现全连接,最后的输出层四softmax分类器。这个网络适用于这2个数据库,只是在CIFAR10数据库是,由于它的数据库是rgb的,所以讲rgb分成3个通道的图像分别输入到刚刚那个6隐含层网络中识别(这点比较有意思)。

下面是它的实验结果:

总结:

从这篇文章(文章没太多内容,没必要细读)没有找到我要的2个问题的答案,不过个人推测它预训练的过程有点像第一个问题我猜测的那样。第二个问题,作者根本就没有展开说(只是说用了5%的样本进行有监督微调),可能是这个方法默认为大家都知道了吧。

所以后面打算读CNN方面的文章,因为如果把CNN过程弄懂了,那么我的这2个问题就不是问题了,哈哈。

参考资料:

http://www.idsia.ch/~masci/software.php

     Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction

相关文章:

用memcache.php监测memcache的状况

最新的memcache pecl中,新增了一个memcache.php,这个php文件可以用来方便的查看memcache的状况,界面上与apc自带的apc.php风格一致。 如图: 应该算是最方便的监测memcache的办法了。 memcache.php源文件下载 是一个PHP源文件,…

想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!

\关键点\垃圾回收日志中包括着一些关键性能指标; \要做一次正确的垃圾回收分析需要收集许多数据,所以好的工具是非常必要的; \除了垃圾回收之外还有很多事件都可能会让应用程序暂停; \让你的应用程序暂停的事件也会让垃圾回收器暂…

Linux必学的网络操作命令

因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。Linux的网络命令比较多,其中一些命令像ping、ftp、telnet、route、netstat等在其它操作系统上也能看到&am…

丢弃Transformer,FCN也可以实现E2E检测

作者 | 王剑锋来源 | 知乎CVer计算机视觉专栏我们基于FCOS,首次在dense prediction上利用全卷积结构做到E2E,即无NMS后处理。我们首先分析了常见的dense prediction方法(如RetinaNet、FCOS、ATSS等),并且认为one-to-ma…

Linux命令基础--uname

uname 显示系统信息 语 法:uname [-amnrsvpio][--help][--version] 补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。 参 数: -a或-all 详细输出所有信息,依次为内核名称,主机名&am…

FEC之我见一

顾名思义,FEC前向纠错,根据收到的包进行计算获取丢掉的包,而和大神沟通的结果就是 纠错神髓:收到的媒体包冗余包 > 原始媒体包数据 直到满足 收到的媒体包 冗余包 > 原始媒体包数据 则进入恢复模式,恢复出…

改变Repeater控件中按钮颜色

昨晚有在论坛看到一帖&#xff0c;手上的工作一直忙到现在&#xff0c;Insus.NET现在抽点时间尝试实现它。 Insus.NET没有使用数据库作为数据源&#xff0c;而是使用List<T>作为数据源。因此你在这篇博文中学到很多有关泛型的知识。另外Insus.NET使用CheckBoxList来替代多…

CSDN湘苗培优,遇见更好的自己

CSDN 湘苗培优报名火热进行中&#xff01;JOIN US号外&#xff01;号外&#xff01;“湘苗培优”报名火热进行中&#xff01;????????????????????????为什么要报名“湘苗培优”只要你想学&#xff0c;这里有CSDN技术认证、企业导师零距离技术交流求职…

两个无序单链表,排序后合并成一个有序链表

两个无序单链表&#xff0c;排序后合并成一个有序链表算法思想&#xff1a;用冒泡法&#xff0c;对链表1和2进行排序&#xff0c;对排序后的两个链表&#xff0c;从小到大进行循环&#xff0c;装入链表3中。#include<stdio.h>#include<stdlib.h>struct stud/*定义链…

FEC之我见三

继续上文讲解&#xff1a; 3&#xff09;标准的RTP头结构如下所示&#xff1a; 其中第一个字节中的x标志位是否扩展了RTP头&#xff0c;RTP协议允许用户自定义的扩展&#xff0c;扩展的字段紧挨上述RTP固定头。RTP扩展投中承载如下信息&#xff1a;1).当前包所在的Group组序号&…

集体智慧及其常用算法

集体智慧定义是指由许多的个体通过合作与竞争中所显现出来的智慧&#xff0c;集体智慧是一种共享的或者群体的智能。它是从许多个体的合作与竞争中涌现出来的。集体智慧在细菌、动物、人类以及计算机网络中形成&#xff0c;并以多种形式的协商一致的决策模式出现。常用算法如下…

带你「周游世界」的 MODNet 算法

来源 | Jack Cui责编 | 晋兆雨头图 | CSDN下载自视觉中国最近又有一个算法火了&#xff0c;不知道你们看到没&#xff1f;直接看效果&#xff01;效果这么稳定的人像 Image Matting 算法真的不多&#xff0c;并且还能进行实时处理&#xff01;处理视频、图像&#xff0c;不在话…

ASP.NET格式化日期

1.绑定时格式化日期方法: <ASP:BOUNDCOLUMN DATAFIELD "JoinTime " DATAFORMATSTRING "{0:yyyy-MM-dd} " > <ITEMSTYLE WIDTH "18% " > </ITEMSTYLE &g…

docker的网络架构配置

http://xiaorenwutest.blog.51cto.com docker 网络架构模默认情况下&#xff0c;容器可以建立到外部网络的连接&#xff0c;但是外部网络无法连接到容器。Docker 允许通过外部访问容器或容器互联的方式来提供网络服务外部访问容器:容器中可以运行一些网络应用&#xff0c;要让外…

【官方福利】CSDN内测师限时申请,参与赢年末礼包

各位程序猿们都下载CSDN官方出品的插件了吧&#xff1f;什么&#xff1f;还有不知道插件是什么的同学&#xff1f;&#xff1f;你错过了太多&#xff01;更酷更高效的浏览器插件&#xff0c;一键万能操作&#xff0c;新标签页极简个性&#xff0c;让你的工作效率UP UP UP&#…

Sql年月日计算方法

通常&#xff0c;你需要获得当前日期和计算一些其他的日期&#xff0c;例如&#xff0c;你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割&#xff08;年、月、日等&#xff09;&#xff0c;然后仅仅用分割出来的年、月、日等放在几…

读《每天懂一点成功概率学》

概率出现某种结果的数量/出现所有结果的数量 所谓“数学概率”&#xff0c;就是理论上计算出来的概率&#xff0c;例如抛硬币时&#xff0c;只有正面和反面两种结果&#xff0c;因此正面出现的概率就是1/2。 另一方面&#xff0c;我们反复抛硬币&#xff0c;根据实际结果计算出…

AV1时代要来了,超高清视频时代视频编码技术的机遇与挑战

近些年随着视频行业的迅猛发展&#xff0c;尤其像短视频、点播、直播、VR等领域的爆发&#xff0c;人们对于高清、超高清视频体验的追求越来越强烈&#xff0c;流媒体平台如何在提升观众观看体验&#xff0c;同时降低播放成本&#xff0c;利用技术降低带宽消耗的同时又能最大化…

敏捷软件开发(c#版)文摘

第一部分 敏捷开发 第1章 敏捷实践 第2章 极限编程概述 第3章 计划 第4章 测试 第5章 重构 第6章 一次编程实践 第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 SRP 第9章 OCP 第10章 LSP 第11章 DIP 第12章 ISP 第13章 C#程序员UML概观 第三部分 薪水支付案例研究 第四部分 打…

asp.net 2.0 中GridView里设置日期格式

在asp.net 1.0 中的datagrid 中 设置日期字段格式时用 DataFormatString"{0:yyyy-MM-dd}"即可。在gridview 中设置短日期格式 使用<asp:BoundField HeaderText"发表时间" DataField"PostTime" DataFormatString"{0:yyyy-MM-dd}" &g…

springboot初学

首先苦于用ssh、ssm来搭建一个项目&#xff0c;这个基础搭建工作就大概要用半天的功夫才能弄好&#xff0c;想到就头疼&#xff0c;后面听了实验室一位大神的建议&#xff0c;用springboot啊&#xff0c;简单的不止一点点。就顺便学习了下这个神器&#xff0c;果然厉害。 有一次…

Exchange 2013与OWA13集成

好久没发新文章了&#xff0c;因为工作变动的原因&#xff0c;实在抱歉&#xff0c;今天给大家分享先office web app 2013怎么和最新的Exchange 2013进行集成使用吧&#xff0c;这点还是蛮有特色的&#xff0c;因为我们改变以往在OWA中预览Office的效果&#xff0c;我们先看看默…

判断一个string是否可以为数字

方案一&#xff1a;Try...Catch(执行效率不高)/// <summary>/// 名称&#xff1a;IsNumberic/// 功能&#xff1a;判断输入的是否是数字/// 参数&#xff1a;string oText&#xff1a;源文本/// 返回值&#xff1a; bool true:是 false:否/// </summary>/// <…

CSDN湘苗培优|火热报名中

湘苗培优火热报名中CSDN高校俱乐部在这里&#xff0c;你能获得CSDN技术认证与企业导师零距离技术交流参与线下技术沙龙活动求职简历指导参与项目交付并有机会企业内推现在报名即可选择由企业支付学费的订单式培养&#xff0c;或入职后再支付学费等多种付费模式&#xff0c;Z大程…

安装配置Emacs-rails

首先你的机器上肯定要安装emacs啦&#xff0c;此步略过不表。1、从 http://rubyforge.org/projects/emacs-rails 下载最新emacs-rails&#xff0c;解压文件到~/.emacs.d/rails 目录2、根据README&#xff0c;你需要下载三个依赖库&#xff1a;cd ~/.emacs.d/rails wget http://…

实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化

来源 | 早起Python大家好&#xff0c;在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序&#xff0c;很多本文将迎合热点&#xff0c;延续上次的NBA爬虫GUI&#xff0c;探讨如何爬取虎扑NBA官网数据&#xff0c;并且将数据写入Excel中同时自动生成折线图&#xff0c;主要…

删除SQL数据库中事务日志方法

DUMP TRANSACTION [数据库名] WITH NO_LOG BACKUP LOG [数据库名] WITH NO_LOG DBCC SHRINKDATABASE([数据库名])

新浪微博应用 IE下面框架嵌套框架的问题解决

新浪微博应用 IE下面框架嵌套框架的问题分为两种&#xff1a;1、回调的参数有误&#xff1b;2、session丢失&#xff1b;第一个问题&#xff0c;需要亲们仔细研读接口文档&#xff0c;App.AuthDialog.show({client_id : <?php echo $this->getParam(sub_appkey);?>,…

corosync+pacemaker+crm简单配置

# 系统 centos7.2 安装版本都是Yum源node1: 192.168.8.111 node2:192.168.8.112 vip :192.168.8.200nfs :192.168.8.113 # 互信~] ssh-keygen~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys~]# chmod go .ssh/authorized_keys~]# scp -p .ssh/i…

给AI系统做“安全体检”,阿里安全提出自动化AI对抗平台CAA | AAAI 2021

出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;安全人员曾为某车企自动驾驶系统做过一次安全测试&#xff0c;用物理对抗攻击欺骗Autopilot车道检测系统&#xff0c;导致汽车在Autopilot不发出警告的情况下驶入错误车道。假如这是一场真实的攻击&#xf…