CNN-卷积神经网络
- CNN在处理自然信号上的四大关键思想:
- 局部连接——不是所有神经元之间都是有明显关系的,互相产生连接的只是一小部分神经元。或者更确切地说,CNN关注的是pattern,而不是整张图片
- 权重共享——相同的pattern就可以用一样的参数,即便它们出现在同一张图的不同位置
- 池化层导致的下采样——下采样不会改变图像,而且可以使图像变小
- 使用多层神经网络——???
- pooling池化层的意义:
- convolution卷积层负责detect局部的特征,而pooling可以将意义上相似的几个features融合成一个。
- pooling的操作减小了表示法的规模;pooling操作还将小的位置移动和形状扭曲给忽视掉了;”粗粒化“
- convolution卷积层的意义:
- 结构化数据,如语音、语言、图像,都在局部范围内高度相关,以致于形成local motif,而卷积核就可以用来detect这种local motif;
- 卷积的操作是忽略motif位置的,而图像等信号的确也存在这样的性质,如相同的motif会在不同的位置出现。
CNN视频的问题:
- 如何计算几个CNN网络所包含的参数量?
- 参考答案:CNN卷积各层的参数和链接个数的计算
- 明确一个问题:CNN哪里需要参数?参数和链接个数是一回事吗?
- 答:参数和链接个数不是一回事;CNN的参数,对于最后连接的fully-connected层而言,x个输入层神经元对应y个输出层神经元,就该有(x*y+1)个参数,其中+1指的是偏置项b;对于convolution卷积层而言,参数个数就是卷积核数量+1,这个+1也是bias项;对于Pooling池化层,要先讨论参数是否需要,若仅仅是max-pooling或average-pooling,那么无需参数;但如果将max or average计算得到的结果乘以weight加上bias,那么每进行一次这样的运算就需要两个参数,那么Pooling层的参数就取决于前一个卷积层得到的feature map个数。
- 为啥深度神经网络需要non-linear的激活函数,linear function做激活函数有啥不行的?
- linear-function不是不行。理论上来说,无穷多个直线也可以无限组合逼近光滑曲线,因而无穷多个linear-function理论上是可以做激活函数以表示足够多足够复杂的函数映射的;但linear-function的表示能力显然比non-linear的弱,所以tanh、sigmoid和ReLU这类non-linear的激活函数更好;而ReLU的求导比另两个简单很多,而且可以有效解决“梯度消失”的问题,所以现在大部分都会选择ReLU做激活函数
- 如何计算多个卷积层-池化层组成的多层神经网络每一层的感受野?
- 感受野的计算:https://zhuanlan.zhihu.com/p/28492837
- 感受野:即每个feature map可以感知的原神经元个数。我们默认每个filter都是正方形的,故直接使用边长代表感受野的大小。例如,假设第一层卷积核是3*3,stride=2,则显然第一层卷积层的感受野是3;第二层卷积层的输入经过了上一层的池化,即将2*2的范围进行max-pooling。因为stride=2,因而卷积核其实是走过了5*5的范围,最终这第二层的感受野也就是5.