好久没写作业了,因为组里分配了任务,学习了Resnet和DenseNet,把概要po上来和大家分享。
Res:
学长说,不要看别人的博客。看多了就看傻了!俗话说,不听老人言,吃亏在眼前。
第一篇论文来咯!Deep Residual Learning for Image Recognition!国人写的好像,强。
老惯例了 ,英语论文,先通读全文。
abstract 部分。啊 不用想:我们的东西很吊。非常叼,打败了好多好多。我们的层数很深,但是优化很快,精确度很高。在各个比赛我们都是number one。学到了三个数据集/比赛: ILSVRC/CIFAR 10/COCO
以后我的论文也要这样。话说 论文都是这样的吗?这么多框框[][][][][][][ 20] ,不会让我一个一个参考文献看过来把?这样岂不是要递归?
Introduction部分:
①,最近的深度卷积很火啊 ,这个深度很关键啊。层数可是很重要的参数呢。
②是不是简单的增加层数就可以改善模型呢?但群众里面有坏人啊,梯度爆炸和消失简直臭名昭著。不过已经被很大程度解决了,通过反向传播的SGD(随机梯度下降)和正则归一化。
③解决了又怎么样,层数太深,正确率一样给我饱和。而且还不是过拟合的问题,哎 气不气。
④,理论上有方法,实际上不可行。让深层比浅层更好的话。
⑤,你们确实不行,但我行啊 啪,直接一个残差的定义Fx=Hx-x
⑥ Fx+x的实现可以通过短切连接(快捷键)。我们这里很简单,就通过恒等映射,加到附加层。
⑦,我们的网络真的很强!!!不怕深度加,精度还佳佳。
⑧,我们在cifar10也用了 ,深度尽量深一点。
⑨,我们的方法在各个比赛上都拔得头筹,证明他是有效且通用的。我们希望residual net work也能用在其他地方
相关工作部分:
① :VLAD和FISHER VECTOR是两个很好的方法,在浅层时。确实,编码redisudal 向量比原始向量简单多了。
② :多栅格和分层预处理都是很有效的方法,比起那些没有使用residual的方法来说。
③ :shortcut 链接来由已久。Etc。
④ :与我们同期的一项工作“高速公路网络”(高速神经网络),不行。我们,行。为啥,因为我们永远在残差。
开始deep residual study了。
3.1 residual learning
多个非线性网络可以渐近近似一个复杂函数(依然是开放理论),那就也能来近似residual函数。那我们就干把 ,应该会简单点。(Hx是想求的,x是初始输入。Fx是残差。)
这个重新设计是基于之前那个 越深反而越差的问题提出的。在新的残差模型下,如果恒等映射是理想的,这多层非线性模型的权值就能打为0(?),但实际情况不可能理想嘛。但是我们可以找到一些有源头的扰动。 这比学习一个新的函数容易多了。如例7,恒等映射会提供一个合理的预处理。
3.2 通过捷径的恒等映射。
定义了 y=F(x,w)+x
F代表了要学习的残差,b被省略了。中间还要经过线性整流。F+x表现为一个shortcut连接,和对应元素相加。之后还有第二个非线性整流。
我们保证普通网络和residual网络其他参数保持不变,做一个对比。
F和x的维度要一样,在其他案例中,甚至可以加入一个Ws来调整x的维度。但通常一个恒等映射就足够了,Ws只用来调整维度。
F的形式是灵活多变的这篇文章实验中的F通常有两到三层。一层的话,不就是线性的吗?
我们也注意到,虽然上述的东西都是针对全连接层的,但其实卷积神经网络也可以用的。F可以代替多个卷积层的。对应元素相加表现为两个特征图。
3.3 网络建筑学
我们做了很多测试,一致性也很好。为了说明我们是对的 给你们看俩例子。
一 普通网络。
用VGG的人生哲学????????来激励普通网络。卷积用3*3,有俩附加条件:1,对于相同的输出特征图大小,层里要有相同的滤波器数量。2,若特征图尺寸减半,滤波器数量要加倍来保存每一层的时间复杂性(??????????)。我们通过步宽为2的卷积层来降素取样。这个网络 以一个全局平均的联合层及1000路全连接神经网络结束。有34个加权参数层。
值得注意的是 我们只有36亿浮点运算,只是VGG的百分之18
二 residual 网络。
残差网络 ,两层加一个,维度相同直接用,维度增加 考虑: 1:用0来条目填充。2:加Ws。
3.4实施
我们跟着21-40的练习来实施。 图片在[256.480]随机取样中的短边来塑形。我们在卷积和激活之间会批归一化。我们初始化 我们SGD用 256个样本一批。我们学习速度是0.1,进入错误平坦期是0.01。我们权重损失是0.0001,动量是0.9.
我们用标准的10裁剪,采用全连接卷积的形式。对每个规模的数据进行平均。
给你们看看实验吧
4.1 图像分类
实验是在2012分类数据集上的,1000类 训练128万张,评估5万和10万张测试。评估了1错和5错。
普通网络:评估了18和34层,34层不行,错误率高。即使18层是34的子集。我们每层都用了BN,所以前向和反向传播都不会遇到梯度消失问题。我们就推测,深度网络会指数级的降低收敛率。然后影响训练错误的减少。
Residual网络 :然后我们来评价residual网络,我们还是18和34层。除了加一些捷径连接外没啥改变了。第一轮我们用0填充,和恒等映射,这样没有额外参数。观察到三个现象:1,34层比18层好很多。而且34层降低了训练和验证集错误,我们觉得恶化问题已经被我们定位了,要多试试。2,比起普通的网络 我们层数变深后强很多!3,虽然普通的18层和residual的18层正确率差不多,但是我们速度快的多啊。
接下来考虑 研究一下 推测参数。 考虑三种:A,0填充,无参数,B,投影shortcuts来增加维度,其他时候用恒等,C,所有的路径都用投影。结果就是C比B好一点点,B比A好一点点。但也只有一点点。为了简单,C被舍弃了。下面介绍的瓶口架构基于恒等捷径。
更深的瓶颈架构设计,担心算力不够,我们用了3层的残差,两个1*1一个3*3.1*1用来减少或者增加维度的。3*3没看懂要干嘛 ,留作更小的输入输出的瓶颈?无参数恒等shortcuts对于瓶颈设计十分重要。若用投影,时间复杂度和模型规模要double。因为捷径连接到了两个更高维度的输出上。
50 层Resnet:
我们用这个三层的瓶颈锁替换掉两层的,结果就是五十层的。我们用方案B处理维度。需要38亿次浮点运算。
101 层和152层Resnet:
我们加深,但虽然层数多,但还是比VGG快。而且精确度还在一直上升,太棒了!
与最前沿的方法比:
和其他的比 我们的34层已经很能打了,至于152层?哼哼 你们都不是很够看啊0.0。
4.2 西法10集和分析
我们在CIFAR10 上进行很多实验,主要为了看深度很高的情况 ,所以采用的方法很简单(精度稍微低一点)
我们架构又变了,3*3卷积+6n层3*3卷积+2n层。全局均值联合,10路全连接,采用A方案。我们w衰减0.0001动量0.9,初始化权值,BN,不抓爆,开始学习速度0.1,后来再变小。然后各种采样,最后只取原始的32*32.
结果呢?普通的还是会出现高深度恶化现象,我们依然很强。我们到110层,0.1的学习速度,太快以至于不能开始收敛。我们先放小。再变大,再变小哈哈。结果很强!。
对上述现象分析:
我们强强强!!!
探索1000层以上:
对不起 1000层我们也没崩,训练集依然强!测试集比100层差了一丢丢,我懂,过拟合嘛。可能可以通过一些方法来改善,我们还在学习。
4.3 在PASCAL MSCOCO目标检测
对不起 我们真的强!其他应用也强。 我们还赢了很多奖 好耶!。
更多看附录 ,附录在哪啊 你妹啊。
附录来了来了,
A 我们采用无全连接的方法(但听说本身VGG去掉全连接好像也没事) (我崩了 这一段1好多专有名词啊) 大意就是说了在几个数据集上是怎么做的。
B 目标检测改善。
我们使用一个新的特征(来自回归盒),联合新旧预测,还用了非极大值抑制。 效果改善了一点。
Dense:
摘要:普通的 L层就有L个连接,我们的L(L+1)/2个连接。(这个神奇的数字让我直接推断他们是第一层连接到了后面的所有网络)。我们这样做,快,参数少,效果好! 超越state of the art,好耶。(我以后也想写这样的摘要,呜呜呜,我也要打上花体的state-of-the-art)
从LENET到VGG到高速/残差 经历颇多。CNN变深,有梯度问题,残差.高速很强随机缩深和分形网也不弱,他们都用的同一种方法,就是在前面层和后面层之间建立短链接。 我们不一样,我们是将后面的层与他前面的每一层都全部联系在一起。而且我们不是用和联系起他们,而是用拼接,秀不秀?我们第l层就有l个输入,介于此,命名为dense卷积网络
这种构建看起来用的参数确实多。但实际上却很少,因为我们不需要像以前那样学习冗余的特征图。Res就很大,因为每一层都有自己的权重。我们每次只取一点点,最后一层会根据所有的做出抉择。
而且 densenet改善了信息和梯度在网络上的流动。使训练更为容易,有一点隐含深监督的味道。还能减少小数据集的过耦合哦!在几个比赛上我们都试过了,我们的参数更少,而且表现的也好。
二:相关工作
神经网络架构的探寻已经成了神经网络学习的一部分了。其实类似于我们的理论在1980年就出现了,后来也陆续有种种,与我们工作并行的穿层连接与我们也相似。
高速网和残差网都用一个旁路来支持。效果也好。随机深度网,采用随机抓爆一些残差层来达到1200层。表明 它内部很多冗余现象。
增加宽度对增加深度也是有用的。分形和残差都证明了这一点。Densenet不致力于加深和加宽,而是致力于研究如何充分重复利用特征图。同样是拼接不同层特征图densenet就比inceptionnet好很多.还有其他的网络,大家八仙过海,但抱歉,可能还是我们比较强。
好久没写作业了,因为组里分配了任务,学习了Resnet和DenseNet,把概要po上来和大家分享。的更多相关文章
- 好久没写原生的PHP调用数据库代码了分享个
好久没写原生的PHP代码调用数据库了 eader("Content-type: text/html; charset=utf-8"); $time=$symptoms=$attr= ...
- 好久没写Blog了
上一年的经历: <炸年兽>搞了一阵后,美术去创业了.. 和另一个美术断断续续,做了个<斗战圣佛>,挺山寨的,都没敢跟别人说. 不管怎么说也算是自己上了一个appStore的游戏 ...
- 利用border和伪类画出三角形 ps:好久没写博客了。。。
有一个半月没有写博客了,这段时间,小哥我经历了自入行前端最为黑暗的时期,迷茫,空虚,不想写代码,不想做研究了.连打游戏都没有兴趣,如同行尸走肉一般.还好,毕业论文的初稿完成后,整个时间段最恶心最难熬的 ...
- c++设计模式总结 好久没写博客了 实在是忙
具体代码就不贴出来了 通俗易懂的理解方式 原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品 ...
- python io 模块之 open() 方法(好久没写博客了)
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file ...
- 好久没写blog了 ~ 换了个城市,换了个公司,各种忙碌
最近一直在忙工作交接以及换城市.入职的事情 ~~~ 新公司做C++的比较少,so全上C++11了,写代码各种爽. 最近应该会写一点关于QT的blog , 学到新知识了哈.
- 好久好久没写,,百度API逆地址解析以及删除指定marker
百度地图Api中 除覆盖物有两个方法:map.removeOverlay()或者 map.clearOverlays(),其中 clearOverlays()方法一次移除所有的覆盖物removeOve ...
- 好久没写了,SQLSERVER服务丢失后怎么办
服务器突然中了病毒,查杀后,结果两个服务也丢了, 从其他机器上COPY了两个EXE过来,编写这两个服务就搞定了,不用重装MSSQL2005了 sc create MSSQLSERVER binpath ...
- HihoCoder1654: XY游戏([Offer收割]编程练习赛39)(好久没写搜索)(已经超级简短了)
描述 如下图所示,在4x4的棋盘上有X和Y两种棋子各若干枚:O表示空格. OXXY YOOX XOOY XOXX 小Hi每次可以选择任意一枚棋子,将它移动到上下左右相邻的空格中. 小Hi想知道最少移动 ...
随机推荐
- nRF24L01基于FIFO TX队列的发送性能优化
RF24项目代码分析 头文件 https://github.com/nRF24/RF24/blob/master/RF24.h 源文件 https://github.com/nRF24/RF24/bl ...
- [开发笔记usbTOcan]用树莓派搭建私有Git服务器
0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...
- word缺失字体问题
问题 有时候word会确实一些公文使用的字体,所以会用微软雅黑进行自动替换.所以你看到和打印的仿宋等字体,会被替换成微软雅黑,这对于政府公文或者企业行政文档是不好的. 这里面的字体替换你可以用一些字体 ...
- Scala 中下划线的用法
1.存在性类型:Existential types def foo(l: List[Option[_]]) = ... 2.高阶类型参数:Higher kinded type parametersca ...
- python封装函数到模块
导入整个模块: import 模块名 导入特定函数: from module_name import function_name 通过逗号可以分割函数名,如果需要导入多个则 from a import ...
- Java多线程专题1: 并发与并行的基础概念
合集目录 Java多线程专题1: 并发与并行的基础概念 什么是多线程并发和并行? 并发: Concurrency 特指单核可以处理多任务, 这种机制主要实现于操作系统层面, 用于充分利用单CPU的性能 ...
- 分页方法需要参数(当前页数,总数据量,拿到query的值)
class Pagination: def __init__(self, page_num, all_count ,params=None,per_num=10,max_show=11): " ...
- .NET6: 开发基于WPF的摩登三维工业软件
MS Office和VisualStudio一直引领着桌面应用的时尚潮流,大型的工业软件一般都会紧跟潮流,搭配着Ribbon和DockPanel风格的界面.本文将介绍WPF下两个轻量级的Ribbon和 ...
- 当Hobject类型出现内存泄漏爆炸增长的问题,怎么处理
尝试使用get,和set(在拍照之后,调用set,在obj使用前释放资源的思想来完成) HObject Get_inputImage() { return inputImage; } void Set ...
- 分布式事务框架-Litx补偿事务框架源码解析
前言 之前某段时间在研究分布式事务过程中,对实现原理比较好奇,于是去Gitee上找了几个人气比较高的框架进行学习,其中印象深刻的有Litx,因为Litx源码不多,且都是基于Spring和Dubbo底层 ...