菜鸟实习日记~day10(Inception1234+Highe

作者: 飞翔的小瓜瓜 | 来源:发表于2017-09-11 17:02 被阅读0次

    科研:

    一、Higher dimensional(引用于知乎)

    在研究或者使用深度学习技术时,大多数人都会被“维度”这个概念搞晕,无论是数据本身还是算法结构,都面对着各种高维的理论概念,正确理解深度学习中和“维度”相关的概念是掌握深度学习方法过程中不可回避的技术瓶颈。

    数据的高维度问题

    深度学习的目标是基于某些给定信息对未知变量进行预测。在模型进行预测时,需要基于一些输入的信息进行判断,这些输入信息往往不是单一变量,而是多个变量,因此深度学习中数据的高维问题往往是指模型输入变量的高维问题

    向量(Vector)

    对深度学习模型来说,向量是最基本的输入数据的结构,每个维度上的数据可以表示一个进行预测的参考信息。一般的预测问题中,输入数据都可以用向量表示,向量中的各个值可类比于多元线性回归模型中的各个自变量的作用。

    矩阵(Matrix)

    深度学习模型的输入可以是矩阵。其实,任何输入数据都可以只用向量表示,而无需用更复杂的结构来表示。实际情况是,对于很多深度学习框架,在底层仍然是将数据矩阵转化为向量进行计算。

    既然如此,为什么会有矩阵形式的输入存在呢?只是为了方便!深度学习的很多模型是用于处理图片的,将图片的像素作为输入,每张图片按照网格进行切分成存储着像素信息的矩阵。

    张量(Tensor)

    除了矩阵以外,还有一种数据的输入格式,叫“张量”。数据存储在一条线上,叫向量,存储在一个平面上,叫矩阵,再复杂点,就是存储在一个立方体上… …对!数据可以存储在更高维度的空间上。存储在立方体上,就叫“方块”?哦不,叫张量!或者确切地说,叫3维张量。张量还有更高维度的形式,4维,5维,…假设宇宙中存在这样的数据结构。一般来说,4维的张量就可以处理大多数深度学习任务了,更高维的应用也有,比较不接地气而已。张量是一个泛化的概念,可以描述任意空间结构的数据。这里的维度不是数据的维度,而是指数据存储结构的维度。向量是1维的张量,矩阵是2维的张量

    3维的张量也是用于处理图片的输入,只不过这个图片的内容更加丰富!基于矩阵的方法只能表示一个黑白的图片,而无法表示彩色的图片,因为这个网格平面里并没有包含任何和与点的颜色有关的信息。于是,考虑到R.G.B三原色就可以表示任何色彩,故可以用三个矩阵描述这个画面,每个矩阵对应一个颜色通道。这样,一幅画可以表示成多个“画层”的叠加结果,每一层对应一个R.G.B颜色。由于画面是多层的结构,故除了有长和宽,也有高的空间信息。

    除了在深度学习模型的初始输入层的数据输入具有3维的张量的结构,其在中间的隐层中,也会出现3维的张量结构。隐层的张量结构主要存在于CNN(Convolutional Neural Networks)的应用中,即卷积神经网络。在CNN中的每个卷积层,包含多个卷积核,每个卷积核用于捕捉画面中某种特定的结构,即通过卷积操作,每个卷积核将对输入的图片进行转化生成一个对应的降维后的“画层”。因此,即便CNN的隐层输入只有一个“画层”,但由于卷积核很多,仍然会出现多个“画层”,从而生成3维的张量的数据结构

    更高维的情况(Higher Dimensions)

    除了3维的张量,还存在更高维度的张量,比如4维,可以考虑时间的维度。例如基于深度学习模型识别某个影片中出现的人物,某个输入的像素点表示的含义,不仅和像素点的位置、颜色相关,还和像素点出现的时间相关。

    总结:最后思考一个问题?为什么要用张量,而不用向量表示输入数据。其根本在于,张量除了存储了数据外,还记录了数据在存储时的空间位置。这种数据空间位置的信息对于预测任务是非常有价值的。如果将高维的张量数据都转化为向量的结构作为深度学习模型的输入,则破坏了输入变量原本的空间结构,丢失了数据固有蕴含的信息,使得深度学习模型的性能受到严重影响。此外,很多深度学习模型,如CNN,在模型设计时,本身就已经利用了基于对数据空间位置结构的假设,因此需要在输入数据变量时尽可能地保留和数据存储相关的结构信息。

    二、Inception v1-v4

    1.Inception v1:

    深层架构与经典计算机视觉模型结合

    效率越来越重要,通过扩大网络的size,即深度和每层的units数量

    但是会导致过拟合与参数过多计算量太大

    so:全连接——>稀疏连接(同时也满足了多尺度)

    为什么加了一个1*1的卷积层之后,计算量就减少了呢?维度就降低了呢?

    对于一个3*3的卷积,输入维度是100*100*500(通道是500),输出后是100*100*200(有200种3*3的卷积核,当然可以数值一样,但是一个3*3只能得到一个特征图,一张),那么这个卷积的参数为3*3*500*200(卷积大小*输入维度*输出维度)

    所以,一个1*1的卷积,可以降低参数(即维度部分),将整个特征图纵向变窄~

    如下图:

    “#3×3 reduce” and “#5×5 reduce” stands for the number of 1×1 filters in the reduction

    layer used before the 3×3 and 5×5 convolutions

    2.Inception v2 & v3

    注:文中的m,n说是filters,其实应该是feature map的数量(通道数),文中用词不当。

    首先与VGG进行对比,说虽然VGG精度很高,但是参数过多,计算量太大。

    于是提出减少计算量的基础上,设计卷积网络的原则:

    @Avoid representational bottlenecks, especially early in the network。

    避免瓶颈(极细)的地方出现,会阻塞网络流

    @Higher dimensional representations are easier to process locally within a network.

    @Spatial aggregation can be done over lower dimensional embeddings without much or any loss in representational power.

    @Balance the width and depth of the network.平衡深度和宽度

    之后提出,维度降低是inception模型减少计算量的主要方法

    最原始的结构

    本文方法是,将大卷积拆成小卷积,同时保证感受野相同,输入输出大小相同,以下是3种inception2的结构:

    @5*5->3*3+3*3

    @3*3->1*3+3*1计算量再一次减少,并且n越大,减少幅度越大。(7最合适,经实验)

    @将上图改为并行结构

    inception v3是所有如下v2的结合:

    v3在raw的v2上做了如下变化:RMSProp替代SGD,在类别全连接层后加入 LSR层,将7x7卷积核由三个3x3卷积核替代。

    Inception v4 and Inception-Resnet

    在该论文中,姑且将ResNet的核心模块称为residual connections,实验结果表明,residual connections可以提高Inception网络的准确率,并且不会提高计算量

    Inception-A结构

    下面是最厉害的Inception-resnet结构

    Inception-ResNet-A网络结构

    其中的+就是residual connection了。通过20个类似的模块组合,Inception-ResNet构建如下:

    基于Inception-v3和Inception-v4,文中分别得到了Inception-ResNet-v1和Inception-ResNet-v2两个模型。另外,文中还提到当卷积核超过1000个的大网络训练时,将残差(residuals)缩小有助于训练的稳定性。这个做法同原始ResNet论文中的two-phase training的效果类似。

    总结来讲,Google Research团队在这篇report中介绍了新的Inception-v4网络,并结合最新的residual connection技术,将ImageNet上图像分类的结果刷到了3.08%了

    (引用:作者:xinggang  链接:http://www.jianshu.com/p/329d2c0cfca9)

    相关文章

      网友评论

        本文标题:菜鸟实习日记~day10(Inception1234+Highe

        本文链接:https://www.haomeiwen.com/subject/ydlfsxtx.html