Network in Network-读后笔记

2023-12-27 21:59
文章标签 笔记 network 读后

本文主要是介绍Network in Network-读后笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:

  1. 提出一个NIN(网络中的网络)的深度网络结构用以增强模型在感知野在局部图像块的辨别力。
  1. 提出在卷积层使用非线性代替现有的线性模型。
  2. 使用一个由MLP组成的micro neural网络作为非线性模型去扫描输入以提取特征图(feature map)
  3. deep NIN就是将micro neural以栈的形式组合而成。

作者说,Deep NIN的形式相比于传统的卷积神经网络来说不易过拟合,而且可以进行全局平均池化。

1.introduction

cnn由卷积层与池化层组成。
卷积层对下层的数据快来说是一个GLM(generalized linear model,广义线性模型),作者认为广义线性模型的抽象层次较低。作者认为“特征是不变的”,即相同概念下的变量特征是相同。GLM能够获取较好的抽象,当潜在概念的样本是线性可分的时候。因此,作者认为cnn其实有一个假设就是潜在的概念是线性可分的。然而,相同概念的数据一般是存在于一个非线性的流形中,因此,捕捉真实数据的表示一般使用非线性模型。

作者使用一个MLP代替卷积层的线性卷积操作,作者之所以选择是因为MLP是一个通用近似函数而且可由神经网络使用反向传播进行训练。

由此产生的结构作者命名为mlpconv。

 

  1. 线性卷积层与mlpconv层都与receptive field相连接以用输出特征向量
  2. mlpconv使用一个mlp连接input与output
  3. mlp被共享于所有的局部感受野。
  4. 特征映射被包含通过滑动mlp以cnn相同处理方式(扫描)
  5. 整个网络结构作者给个名字叫“Network in Network”(好俗气的名字,像村里的二丫一样带感,真是任性啊)

2.CNN

CNN一般由卷积层与空间池化层以栈的形式交替组成,卷积层通过使用非线性激活函数(如:rectifier,sigmoid,tanh)的线性组合产生特征图。

i,j是像素索引,xij代表输入补丁集中在位置(i,j),k用于索引的通道特性图。

当潜在概念的实例是线性可分时,线性卷积用于抽取是足够的,然而,好的抽象表示一般是高度非线性函数。在传统cnn,这一点可以用超完备过滤的方式。即:增加过滤器,但增加过滤器会增加下层的计算负担。

引入Maxout


maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start-of-art的识别率。

从论文中可以看出,maxout其实一种激发函数形式。通常情况下,如果激发函数采用sigmoid函数的话,在前向传播过程中,隐含层节点的输出表达式为:

其中W一般是2维的,这里表示取出的是第i列,下标i前的省略号表示对应第i列中的所有行。

如果是maxout激发函数,则其隐含层节点的输出表达式为:

 

这里的W是3维的,尺寸为d * m *k,

其中

d表示输入层节点的个数,

m表示隐含层节点的个数,

k表示每个隐含层节点对应了k个”隐隐含层”节点,

这k个“隐隐含层”节点都是线性输出的,而maxout的每个节点就是取这k个“隐隐含层”节点输出值中最大的那个值。因为激发函数中有了max操作,所以整个maxout网络也是一种非线性的变换。

因此当我们看到常规结构的神经网络时,如果它使用了maxout激发,则我们头脑中应该自动将这个”隐隐含层”节点加入。

参考一个日文的maxout ppt 中的一页ppt如下:

 

maxout的拟合能力是非常强的,它可以拟合任意的的凸函数。

最直观的解释就是任意的凸函数都可以由分段线性函数以任意精度拟合(学过高等数学应该能明白),

而maxout又是取k个隐隐含层节点的最大值,这些”隐隐含层"节点也是线性的,所以在不同的取值范围下,最大值也可以看做是分段线性的(分段的个数与k值有关)。论文中的图1如下(它表达的意思就是可以拟合任意凸函数,当然也包括了ReLU了)

 

作者从数学的角度上也证明了这个结论,即只需2个maxout节点就可以拟合任意的凸函数了(相减),前提是“隐隐含层”节点的个数可以任意多,如下图所示

 


maxout的一个假设是潜在概念的实例是位于输入空间的凸集中。

3.Network in Network

3.1 MLP卷积层
径向基函数与多层感知机是两个通用近似函数。
作者认为,在不知道潜在目标的先验分布时使用通用近似函数是比较好的方法。作者选择MLP,其原因是:

  1. MLP与cnn相兼容
  1. MLP可自行深度化

计算公式:

 

网络结构

 

计算过程见下面图例中的NIN部分。


举例子解释

假设现在有一个3x3的输入,用一个9维的向量x代表,卷积核大小也是3x3,也9维的向量w代表。

对于常规卷积层,直接x和w求卷积,然后relu一下就好了。
maxout,有k个的3x3的w(这里的k是自由设定的),分别卷积得到k个1x1的输出,然后对这k个输入求最大值
NIN,有k个3x3的w(这里的k也是自由设定的),分别卷积得到k个1x1的输出,然后对它们都进行relu,然后再次对它们进行卷积,结果再relu。(这个过程,等效于一个小型的全连接网络)

计算过程

常规卷积层,maxout,NIN:

 

总结

maxout和NIN都是对传统conv+relu的改进。

maxout想表明它能够拟合任何凸函数,也就能够拟合任何的激活函数(默认了激活函数都是凸的)

NIN想表明它不仅能够拟合任何凸函数,而且能够拟合任何函数,因为它本质上可以说是一个小型的全连接神经网络

3.2 全局平均池化

传统的cnn是在较低层使用卷积,如分类任务中,最后的卷积层所得feature map被矢量化进行全连接层,然后使用softmax 回归进行分类。一般来说,在卷积的末端完成的卷积与传统分类器的桥接。全连接阶段易于过拟合,妨碍整个网络的泛化能力,一般应有一些规则方法来处理过拟合。

Dropout


Dropout是hintion最近2年提出的,源于其文章Improving neural networks by preventing co-adaptation of feature detectors.中文大意为:通过阻止特征检测器的共同作用来提高神经网络的性能。

Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是将其权重保留下来(只是暂时不更新而已),因为下次样本输入时它又可以工作了(有点抽象,具体实现看后面的实验部分)。

按照hinton的文章,他使用Dropout时训练阶段和测试阶段做了如下操作:

在样本的训练阶段,

没有采用pre-training的网络时(Dropout当然可以结合pre-training一起使用),hintion并不是像通常那样对权值采用L2范数惩罚,而是对每个隐含节点的权值L2范数设置一个上限bound,

当训练过程中如果该节点不满足bound约束,则用该bound值对权值进行一个规范化操作(即同时除以该L2范数值),说是这样可以让权值更新初始的时候有个大的学习率供衰减,并且可以搜索更多的权值空间(没理解)。

在模型的测试阶段,使用“mean network(均值网络)”来得到隐含层的输出,其实就是在网络前向传播到输出层前时隐含层节点的输出值都要减半(如果dropout的比例为50%),其理由文章说了一些,可以去查看(没理解)。

关于Dropout,文章中没有给出任何数学解释,Hintion的直观解释和理由如下:

  1. 由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。
  1. 可以将dropout看作是模型平均的一种。对于每次输入到网络中的样本(可能是一个样本,也可能是一个batch的样本),其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时share隐含节点的权值。这样不同的样本就对应不同的模型,是bagging的一种极端情况。个人感觉这个解释稍微靠谱些,和bagging,boosting理论有点像,但又不完全相同。
  1. native bayes是dropout的一个特例。Native bayes有个错误的前提,即假设各个特征之间相互独立,这样在训练样本比较少的情况下,单独对每个特征进行学习,测试时将所有的特征都相乘,且在实际应用时效果还不错。而Droput每次不是训练一个特征,而是一部分隐含层特征。
  1. 还有一个比较有意思的解释是,Dropout类似于性别在生物进化中的角色,物种为了使适应不断变化的环境,性别的出现有效的阻止了过拟合,即避免环境改变时物种可能面临的灭亡。

介绍了半天,作者准备在全连接层做文章了,作者提出一个新的策略,名为“全局平均池化”,用来代替cnn中传统的全连接层。

其思想为:在MLPconv的最后一层为每一个分类任务的相应种类生成一个特征映射。
作者说这样有两个优点,

  1. 全局平均池化更原生的支持于卷积结构,通过加强特征映射与相应分(种)类的对应关系,因此,特征映射可以很容易地解释为分类映射。
  2. 全局平均池化一层没有需要优化的参数,因此在这一层可以避免过拟合。
  3. 全局平均池化汇总(求和)空间信息,因此其对空间变换是健壮的。

作者说,全局平均池化作为一个结构化正则化矩阵可以明确的用于加强特征映射到类别映射的信任度。

cnn的全连接层有什么问题,大家都在这里做文章?

印象中有一种说法是全连接层是简单的将特征映射变成矢量按顺序编排输入到softmax回归中,这种方法破坏了卷积层中提取特征时保留下来的位置信息。

具体的使用有待学习。To Be Continue...

3.3 Network In Network结构

全局的NIN结构就是一个栈式组合的MLPconv,然后,用全局平均池化替换全连接层,用MLPconv代替卷积操作,仍旧用子采样分隔MLPconv

4 实验

4.1 介绍

作者用四个数据集进行实验。CIFAR-10/100,SVHN,MNIST。

网络结构为:三层MLPconv+空间最大池化+下采样+全局平均池化,除最后一个MLPconv层外,其余层使用dropout进行正则化。

训练过程:手动设置参数--〉最小batch=128--〉初始化权重与学习率,重复进行,直到在训练集上的准确率停止改善,并且学习率最终为初始值的百分之一。

4.2 CIFAR-10

CIFAR-10数据集由10个类别的近50k幅训练和10k测试自然图片组成,每一张图片为RGB彩色,32x32大小。

作者使用相同于Maxout一文方法的全局对比度归一化与ZCA白化。

每个MLPconv层的特征映射数量被设计成相同,使用验证集进行两个参数的调优操作(局部感受野大小与权重衰减)。当两个hyper-parameters是固定的,我们从头开始重新训练网络训练集和验证集。

白化


白化是一种重要的预处理过程,其目的就是降低输入数据的冗余性,使得经过白化处理的输入数据具有如下性质:

  • (i) 特征之间相关性较低;
  • (ii) 所有特征具有相同的方差。

白化处理分PCA白化和ZCA白化,PCA白化保证数据各维度的方差为1,而ZCA白化保证数据各维度的方差相同。

PCA白化可以用于降维也可以去相关性,而ZCA白化主要用于去相关性,且尽量使白化后的数据接近原始输入数据。

1.PCA白化

根据白化的两个要求,我们首先是降低特征之间的相关性。

 

 

在PCA中,我们选取前K大的特征值的特征向量作为投影方向,如果K的大小为数据的维度n,把这K个特征向量组成选择矩阵U(每一列为一个特征向量),

为旋转后的数据。

如果K<n,就是PCA降维,如果K=n,则降低特征间相关性降低。

原始数据分布

 

PCA旋转后数据分布

上图显示了原始数据和经过PCA旋转之后的数据,可以发现数据之间的相对位置都没有改变,仅仅改变了数据的基,但这种方法就降低了数据之后的相关性。(原始数据的相关性为正,因为x1增加时,x2也增加;而处理之后的数据的相关性明显降低)

 

 

第二个要求是每个输入特征具有单位方差,以

 

直接使用作为缩放因子来缩放每个特征

,计算公式

,经过PCA白化处理的数据分布如下图所示,此时的协方差矩阵为单位矩阵I。

PCA白化与ZCA白化对比
PCA白化

ZCA白化

2.ZCA白化

 

 

ZCA白化的定义为:

ZCA白化只是在PCA白化的基础上做了一个旋转操作,使得白化之后的数据更加的接近原始数据。

ZCA白化首先通过PCA去除了各个特征之间的相关性,然后是输入特征具有单位方差,此时得到PCA白化后的处理结果,然后再把数据旋转回去,得到ZCA白化的处理结果,感觉这个过程让数据的特征之间有具有的一定的相关性,

下面实验进行验证。

在实验中,我分别计算了原始数据,旋转后数据,PCA白化以及ZCA白化的协方差矩阵,数据用的是UFLDL的实验数据,是个协方差矩阵分别为:

 

<---仅是分隔作用--->

从上面的4个协方差矩阵可以发现,正如上面所述,旋转之后降低了特征之间的相关性,rotate协方差矩阵的主对角线以外的值都接近零。

猜测ZCA白化后的数据的相关性会比PCA白化的要强,在该实验室中表明好像感觉是对的,ZCA白化后主对角线以外的值的绝对值大于PCA白化后(今天看了下发现这个有问题),虽然这种比较可以忽略不计,应该他们的值都是非常的接近的。

3.PCA白化和ZCA白化的区别

PCA白化ZCA白化都降低了特征之间相关性较低,同时使得所有特征具有相同的方差。

  • PCA白化需要保证数据各维度的方差为1,ZCA白化只需保证方差相等。
  • PCA白化可进行降维也可以去相关性,而ZCA白化主要用于去相关性。
  • ZCA白化相比于PCA白化使得处理后的数据更加的接近原始数据。

4.正则化

 

实践中需要实现PCA白化或ZCA白化时,有时一些特征值

在数值上接近于0,这样在缩放步骤时我们除以

将导致除以一个接近0的值,这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数

 


当x在区间 [-1,1] 上时, 一般取值为


参数


Deep Learning 优化方法总结 By YuFeiGan 更新日期:2015-07-01

1.Stochastic Gradient Descent (SGD)

1.1 SGD的参数

在使用随机梯度下降(SGD)的学习方法时,一般来说有以下几个可供调节的参数:

  • Learning Rate 学习率

  • Weight Decay 权值衰减

  • Momentum 动量

  • Learning Rate Decay 学习率衰减

    ps:
    再此之中只有第一的参数(Learning Rate)是必须的,其余部分都是为了提高自适应性的参数,也就是说后3个参数不需要时可以设为0。

1.1.1 Learning Rate

学习率决定了权值更新的速度,设置得太大会使结果越过最优值,太小会使下降速度过慢。
仅靠人为干预调整参数需要不断修改学习率,因此后面3种参数都是基于自适应的思路提出的解决方案。

1.1.2 Weight decay

在实际运用中,为了避免模型的over-fitting,需要对cost function加入规范项。

Weight decay adds a penalty term to the error function.     

在SGD中我们加入 −ηλWi 这一项来对cost function进行规范化。

这个公式的基本思路是减小不重要的参数对结果的影响,而有用的权重则不会受到Weight decay的影响,这种思路与Dropout的思路原理上十分相似。

Link 1

Link 2

大家都知道DNN常有overfiting的问题,有人会想到为何有些算法(比如DT/最近邻等)在training data上很快达到100%,而NN却需要不停训练却一直达不到。原因之一是相对训练数据中模式,网络参数过多且不加合理区分,导致判决边界调谐到特定训练数据上,并非表现一般特性。由于初始weight is small, neur执行在线性范围,随着training,nonlinear才逐渐显现,decision boundary变弯。但gradient descent完成之前停止training则可避免overfiting。

其实在dropout被叫响之前,它有个哥们叫weight decay技术,对于非常多weight的NN,along with training,decay all weights。小权值网络更适于做线性判别模型。weight decay具体公式有需要的可以找我。有人会问有价值的weight是不是也会decay。其实BP算法本质能对降低error function意义不大的weight变的越来越小,对于如此小的值,可以完全discard(是不是想起了dropout,呵)。而真正解决问题的weight不会随便被decay。还有些其他本质我们后续再讨论。

对于activation function的选择是个技巧,但有规律可循。其实很多人忽视了sigmoid的2个参数gamma和phi,直接用“裸体的”sigmoid。想了解“穿着衣服的"sigmoid的可以再联系我。如果有prior information,比如分布有GMD引起的,则gaussian形式的函数将是个好选择(有没有想到ReLU的曲线与sigmoid的曲线分布类似,至于对x<0的y限制为0的本质下回分解吧)。没有这些prior时,有三个基本原则(但不是死的):非线性,saturability,连续光滑性(这点有待再探讨)。nonlinear是提供deep NN比shallow NN强的计算能力的必要条件。saturability限制weight和activation function的上下边界,因而是epoch可以有限。光滑连续性希望f和一阶导在自变量范围内有意义。

momentum的概念来自newton第一定律,在BP算法中引入momentum的目的是允许当误差曲面中存在平坦区时,NN可以更快的速度学习。将随机反向传播中的学习规则修正为包含了之前k次权值更新量的alpha倍。具体公式表达有需要的可以找我。(是不是启发你想到了adagrad/adadelta呢,其实看到公式后你更有启发,呵)。momentum的使用"平均化"了随机学习这种weight的随机更新,增加了稳定性,在加快learning中甚至可以远离常引起错误的平坦区。

误差函数常采用cross entropy,是因为它本质上度量了概率分布间的"距离"。具体公式有需要的可以联系我,一起讨论。此外,如果想得到局部性强的分类器可以考虑闵科夫斯基误差。是的,还有其他物理意义的误差函数,采用哪一种要看用来干什么了。

对于batch learning,online learning, random learning(据悉msra有更多标注语音但就用了2000小时语音训练)仁者见仁智者见智,这也是为什么jeff dean设计DistBelief提供了Downpour和Sandblaster了。当training data巨大时,内存消耗很大(即使分布式的在内存中存的下但要考虑是否必要),工业界使用的NN常采用online或random协议。在batch learning中样本的重复出现提供的信息同随机情况下样本的单次出现一样多,而实际问题并不需要精确复制各个模式以及实际dataset常有高冗余度,batch learning比random learning慢。但不易嵌入到online learning的"二阶技术"却在某些问题上有其他优势。

对于DNN来说,BP层层计算很耗时。二阶导数矩阵(Hesse阵)规模可能又很大。大家知道的拟合较好的方法,如LBFGS、共轭梯度法、变量度量法等,保持了较快的收敛速度。但值得一提的是,对Hesse阵的无偏近似方法Curvature Propagation可以参考ilya的论文哦。从此paper中也可理解下BP与Hesse的"秘密"。

大家都头疼learningRate的选择,其实这个与上述讨论的多个方面有关系,例如NN的结构、activation function形式、momentum策略、decay方式、期望迭代的总次数、优化的方式、期望目标分类器的表现等等。有一点,我们可以利用误差的二阶导数来确定learning rate。也可以利用二阶信息对NN中unnecessary weight的消去做指导。

1.1.3 Learning Rate Decay

一种提高SGD寻优能力的方法,具体做法是每次迭代减小学习率的大小。

在许多论文中,另一种比较常见的方法是迭代30-50次左右直接对学习率进行操作(η ← 0.5⋅η)

1.1.4 Momentum

灵感来自于牛顿第一定律,基本思路是为寻优加入了“惯性”的影响,这样一来,当误差曲面中存在平坦区SGD可以一更快的速度学习。

注意:这里的表示方法并没有统一的规定,这里只是其中一种

Link 1
Link 2-pdf
Link 3
Link 4-pdf

SGD优缺点
实现简单,当训练样本足够多时优化速度非常快
需要人为调整很多参数,比如学习率,收敛准则等
Averaged Stochastic Gradient Descent (ASGD)
在SGD的基础上计算了权值的平均值。
$$\bar{w}t=\frac{1}{t-t_0}\sum^t{i=t_0+1} w_t$$

ASGD的参数
在SGD的基础上增加参数t0t0
学习率 ηη
参数 t0t0
ASGD优缺点
运算花费和second order stochastic gradient descent (2SGD)一样小。
比SGD的训练速度更为缓慢。
t0t0的设置十分困难
Link 1

  1. Conjugate Gradient(共轭梯度法)
    介于最速下降法与牛顿法之间的一个方法,它仅仅需要利用一阶导数的信息,克服了GD方法收敛慢的特点。

Link 1

Limited-memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) (一种拟牛顿算法)
L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。

Link 1
Link 2
Link 3

应用分析
不同的优化算法有不同的优缺点,适合不同的场合:

LBFGS算法在参数的维度比较低(一般指小于10000维)时的效果要比SGD(随机梯度下降)和CG(共轭梯度下降)效果好,特别是带有convolution的模型。
针对高维的参数问题,CG的效果要比另2种好。也就是说一般情况下,SGD的效果要差一些,这种情况在使用GPU加速时情况一样,即在GPU上使用LBFGS和CG时,优化速度明显加快,而SGD算法优化速度提高很小。
在单核处理器上,LBFGS的优势主要是利用参数之间的2阶近视特性来加速优化,而CG则得得益于参数之间的共轭信息,需要计算器Hessian矩阵。


4.3 CIFAR-100

CIFAR-100数据库中的图片大小与格式与CIFAR-10相同,但是包含了100个分类。因此,C-100中每一分类的数据就是C-10的十分之一。对于CIFAR-100数据库,作者没有训练超参数,而是直接使用了CIFAR-10所训练好的超参数直接进行训练。模型与CIFAR-10的唯一区别就是最后一个MLPconv层的输出为100个特征映射。作者训练后得到的错误率为35.68%,作者声称已超越现存对手。见下图。

 

4.4 街景门牌号

SVHN数据库由630420个32x32的彩色图片组成。分成训练集、测试集和额外集。数据集的任务是用于分类定位图片中心的数字。作者训练和测试的过程与Goodfellow相同[心语:哇喳喳啊,Goodfellow的文章要看啊]。具体而言是,对于每一类类,从训练集中选择400个样本,再从额外集中选择200个样本用于验证,训练集与和额外集中其余的样本用于训练,组成的验证集仅仅用于超参的选择,不会在训练过程中使用。

作者仍旧采用Goodfellow等人的预处理过程,局部对比度正则化。其训练模型的结构与参数与CIFAR-10的模型相似,三层MLPconv+全局平均池化。作者的模型达到了2.35%,比较结果见下图。

 

4.5 MNIST

MNIST数据库由0-9个数字的图片组成,图片大小为28x28,约有60k张训练图片和10k张测试图片。作者仍旧使用CIFAR-10的模型进行训练,只是将每个MLPconv层生成的特征映射数量减少[心语:md,减少多少啊!],减少的原因是MNIST与CIFAR-10相比较是一个简单的数据库,只需要较少的参数。作者测试其方法没有使用数据集扩充(data augmentation),其结果如下图。作者的模型所得测试误差为0.47%,比当前最好的结果Conv with Maxout+Dropout略差。

 

4.6 全局平均池化作为正则化矩阵

从作者的使用角度来说,全局平均池化层的作用与全连接层相似,两者都是将矢量化的特征映射进行线性变换。两者区别在于其变换知识。对于全局平均池化来说,转换矩阵被置于前面(/前缀)并且其块对角元素是非零相同值,而全连接层可以有密集的转换矩阵并且其值易于反向传播优化。为研究全局平均池化的正则效果,作者使用全局平均池化代替了全连接层,并且保持模型其它部分是相同的。两个模型都使用CIFAR-10进行训练,其结果对比如下图。从图中可以看出,全连接层without Dropout的是最差(高)的,而且作者的模型是最好(少)的。作者给出的结论是全连接层容易过拟合

 

作者进一步研究全局平均池化是否与传统的cnn具有相同的正则能力。作者实现一个hinton所说的传统cnn模型,其由三个卷积层和一个局部连接层组成。局部连接层产生16个特征映射并被输入到with dropout的全连接层中。为公平起见,作者将局部连接层的特征映射由16减至10,这样与其所提出的模型一致(在作者全局平均池化模式中,每个类中只有一个特征映射被允许),通过用全局平均池化代替dropout+fully connection layer,作者创建了一个等价的带有全局平均池化的网络模型。

经过训练,传统cnn模型(没有dropout的)误差率为17.56%,增加dropout的cnn为15.99%[此值非作者实验得出,是hinton文章所述],作者所用的,即替换后的模型其误差率为16.46%,比传统cnn减少了百分之一。作者认为,其结果比dropout要差(高)一些,是因为全局平均池化层对线性卷积的要求比较高(demanding,苛刻)

4.7 可视化of NIN

作者将最后一个MLPconv层中的特征映射显式的执行为类别的置信图,通过全局平均池化方法(只得到唯一的一个强烈的局部感受野模型)。作者抽取并直接显示了用于CIFAR10上的模型中最后一层MLPconv的特征映射(图),见下图。

作者认为可视化再次说明了NIN的效果,NIN模型通过使用MLPconv可以收到一个更为强烈的局部感受野模型,全局平均池化可以提高


转自:
作者:鸣祥
链接:https://www.jianshu.com/p/96791a306ea5
來源:简书
 

这篇关于Network in Network-读后笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/544415

相关文章

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个