25、卷积神经网络

1、全连接层网络的参数太多

  通过运用局部相关性和权值共享的思想,我们成功把网络的一层参数量从‖𝐼‖ ∗ ‖𝐽‖减少到 𝑘 ∗ 𝑘(准确地说,是在单输入通道,单卷积核的条件下)。这种局部连接、共享权值的网络就是卷积神经网络。

2、局部相关性

   

       在全连接层中,每一个输出节点都会与所有的输入节点相连接,用于提取所有输入节点的 特征信息,这种稠密(Dense)的连接方式是全连接层参数量大、计算代价高的根本原因。全 连接层也称为稠密连接层(Dense Layer),当全连接层的激活函数𝜎为空时,全连接层也称为 线性层(Linear Layer)。当考虑输入节点对输出节点的重要性分布时,选出最重要的一部分输入节点,而抛弃重要性较低的部分节点,这 样输出节点只需要与最重要的一部分输入节点相连接。

3、权值共享

    

      如果将与输入节点各个相乘的权值w看作为一种观察这些节点特征的一种观察方式,那么在全连接层中,每一个输出节点都来自不同观察方式与各个特征结合产生的结果,倘若将观察方式设置为一样,那么就意味着每个输出节点的局部连接权值是一样的,即共享。这样,就会大大的减少网络中参数的计算。对于3x3的核,特征图谱中只有一个的时候,参数只有3x3,参数量的大小与图片的shape无关,只与每一次的关注的区域的大小有关。离散的卷积操作就是对应元素相乘再相加。

4、核的选择

      在DP中,核的选择是由SGD决定的,而在CV中,卷积核都是通过经验得到的。

         

 

 

   每经过一个观察方式(卷积核)就会得到一个特征图,多个卷积核得到特征图谱(feature map)

5、卷积神经网络

   

 

   卷积核在图片上进行移动,每移动一次计算得到一个像素点值

   

 

  图片的shape为[ b,5,5,1],核的shape为[3,3],得到一个新的feature map,如果不进行pad的话,会得到一个输出shape为[b,3,3,1]

  对于多通道的计算,输入的图片shape为[b,5,5,c],核的shape为[c,3,3](这样的一个[c,3,3]称为一个核,而不是c个核),不管输入是几个通道,输出的结果还是为[b,3,3,1]。

6、pading和stride

        

 

   输入为[b,w,h,c]的图片,输出为[b,w,h,1],其中w和h会小于等于w和h。如果我们希望输出的shape和输入的shape保持一致,那么就可以使用pading进行填充。stride是步长,通过设置步长,可以对原输入进行降维操作,对原来的feature map进行成倍的减少。

 7、channels

  在输入为[b,w,h,c]时,只使用一个卷积核的话,即[c,3,3],无论输入的shape的c有多大,都只会输出一个单通道的输出,,如果希望输出多个通道,从而增加未知维度的信息,我们可以使用N个核来进行操作,即核[N,c,3,3](n个c通道的3x3的核)输出N个通道,最后得到的结果为[b,w,h,N],这就完成了一个多通道输入,多通道输出的网络。

    

 8、堆叠结构

 

 

堆叠结构可以实现从底层特征到中层特征,再到高层的抽象概念的抽取,底层的特征多为一些边缘、颜色和纹理等特征,而这些特征就组合成了高层抽象特征。

  1. 积神经网络每层的卷积核权重是由数据驱动学习得来,不是人工设计的,人工只能胜任简单卷积核的设计,像边缘,但在边缘响应图之上设计出能描述复杂模式的卷积核则十分困难。

  2. 数据驱动卷积神经网络逐层学到由简单到复杂的特征(模式),复杂模式是由简单模式组合而成,比如Layer4的狗脸是由Layer3的几何图形组合而成,Layer3的几何图形是由Layer2的纹理组合而成,Layer2的纹理是由Layer1的边缘组合而成,从特征图上看的话,Layer4特征图上一个点代表Layer3某种几何图形或表面的组合,Layer3特征图上一个点代表Layer2某种纹理的组合,Layer2特征图上一个点代表Layer1某种边缘的组合。

  3. 这种组合是一种相对灵活的方式在进行,不同的边缘→不同纹理→不同几何图形和表面→不同的狗脸、不同的物体……,前面层模式的组合可以多种多样,使后面层可以描述的模式也可以多种多样,所以具有很强的表达能力,不是“死板”的模板,而是“灵活”的模板,泛化能力更强。

  4. 卷积神经网络真正使用时,还需要配合池化、激活函数等,以获得更强的表达能力,但模式蕴含在卷积核中,如果没有非线性激活函数,网络仍能学到模式,但表达能力会下降

 9、layers.Conv2D

layers.Conv2D(64, kernel_size=[3, 3], padding="same",strides=2, activation=tf.nn.relu)

 64是卷积核的个数,即输出为64通道,kernel_size是核的尺寸,padding为same时,会进行pading,使得输出和输入的尺寸是一样,如果为valid,那么不会进行pading,输出会略小于输入。strides=2会让输出的尺寸减少一半。

10、梯度计算

       

 通过链式法则是可以求导的,tf提供了自动求导的工具。

posted on 2019-12-31 15:26  Luaser  阅读(494)  评论(0编辑  收藏  举报