CNN基础知识
CNN - Convolutional Neural Networks
是近些年在机器视觉领域很火的默许部分,最先由Yan Lecun提出。
如果想学细节 可看Li Feifei CS231n课程
如何工作?
给一张图片,每个圆负责处理图片的一部分。
这些圆就组成了一个filter。
filter可以识别图片中是否存在指定的pattern,以及在哪个区域存在。
下图中有4个filter,同一种颜色的filter的不同点负责图片不同的区域。
神经元利用convolution的技术查找pattern,简单地理解就是用filter的形式去查找图片是否具有某种pattern。
weights和bias对模型的效果起着重要的作用。
把白圆圈换成神经元,就是CNN的样子。
Convolution层的神经元之间没有联系,它们各自都只连接inputs。
同一层的神经元用相同的weights和bias,这样同一层的神经元就可以抓取同样的pattern,只不过是在图片上的不同的区域。
接下来是ReLU(Rectified Linear Unit)层和Pooling层,它们用来构建由convolution层找到的pattern。
CNN也用Back propagation训练,所以也有vanishing gradient的可能。而ReLU作为激活函数的话,gradients会大体保持常值的样子,这样就不会在关键的那几层有很明显的下降。
Pooling层是用来降维的。
经过convolution的ReLU的作用后,会有越来越复杂的形式,所以Pooling层负责提取出最重要的pattern,进而提高时间空间的效率。
这三层可以提取出有用的pattern,但它们并不知道这些pattern是什么。
所以接着是Fully Connected层,它可以对数据进行分类。
一个典型的Deep CNN由若干组 Convolution-ReLU-Pooling层组成。
但CNN也有个缺点,因为它是监督式学习,所以需要大量的有标签的数据。