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也有个缺点,因为它是监督式学习,所以需要大量的有标签的数据。 

posted @ 2018-10-12 11:44  Vancuicide  阅读(379)  评论(0编辑  收藏  举报