更新中…
CNN的结构
一般包括 卷积层(Convolution Layer)、池化层(Pooling Layer)、全连接层(Fully Conected Layer),以下主要讲各层的作用、处理过程以及研究进展。
卷积层
作用
卷积的作用是为了特征提取
卷积过程
这里的卷积并不是数学意义上的卷积,贴斯坦福cs231n课程上的一个demo
卷积的计算过程
这里常需加上一个bias。
在计算结束后,会通过ReLU进行修正。
一般卷积处理后图片尺寸会变小,如果希望图片尺寸不变可用zero padding处理。
参数共享
与传统神经网络不同,层与层之间的连接不再是全连接方式,而是通过类似“感受野”的卷积核形式 进行参数共享。卷积核也成为filter,滤波器的深度同原始图片深度一致。
卷积核参数的初始化?如何确定卷积核数量?什么样的卷积核提取什么样的特征?
- 一般利用高斯分布进行初始化 贴一篇初始化参数的文章参数初始化
- 在接近输入层,我们一般提取基础的特征,所以一般用较少的卷积核。越往后,特征越细化,因此需要更多的卷积核来提取这些精细化的特征。
- 一些特定作用的滤波器
池化层
作用
提取更重要的特征,减少参数,减小计算量
池化过程
池化方法一般有 max pooling和averagepooling两种。当然可以通过加了pooling和不加进行对比来看pooling是否对提取特征有效果。
池化后真的能保留特征吗?
全连接层
作用
进行分类
全连接
在做全连接之前,通常要把池化后的数据 转化 成一列的形式,做成flatten层。再对flatten层进行全连接处理,用softmax进行分类。
当然可以通过 卷积来形成flatten层,此时称为全卷积神经网络(FCNN)。这里也可以看到全连接层可能占有整个卷积神经网络的大部分参数。
softmax是怎么工作的?
提取出特征 拍平 后,在softmax层前,我们有参数矩阵和选好的特征, W K ∗ N W_{K*N} WK∗N K表示总的类数。 P ( y = j ∣ x ) = e x T w j ∑ k = 1 K e x T w k P(y=j|x)=\frac{e^{x^Tw_j}}{\sum_{k=1}^{K}e^{x^Tw_k}} P(y=j∣x)=∑k=1KexTwkexTwj即x被分为第j类在所有情况下所占的概率。参数的训练同softmax loss相关。