cnn主要适合处理图片,比如给图片分类、给图片自动打标签、无人驾驶等。一般2D的cnn用来处理图片,3D的cnn用来处理视频。近来也有人开始用于nlp自然语言处理(参考阅读)。cnn卷积神经网络是对传统神经网络的改进,改进点包括:
1,提出卷积层convolutional layers layer和池化层max-pooling layer(subsampling layer),替代全连层fully connected layer。
2,将层之间的全连接改成非全连接,从而降低运算量,也降低过拟合的发生。
3,卷积层用的激活函数是ReLU或者tanh。
cnn的原理详细介绍参见(colah's blog)
cnn架构
cnn架构图,
架构详细分析,cnn的层有三类:Convolutional Layer, Pooling Layer和Fully-Connected Layer。其典型架构为[INPUT - CONV - RELU - POOL - FC]。
Convolution卷积
如何理解卷积的概念,可以参照(这儿)。更详细更深入的解释卷积参照Chris Olah’s post on the topic。卷积可以用来作图片模糊处理、探测图片边缘。
- kernel, filter, or feature detector
用于卷积时的移动窗口。 - convolutional layers layer
- activation functions
cnn卷积层的激活函数通常用ReLU或tanh。
池化Max Pooling
- max-pooling layer
Fully-Connected Layer
也叫softmax layer,最后一层通常选用softmax激活函数。
CNN for NLP
cnn可以用于nlp自然语言处理,包括文本分类、情感分析、垃圾邮件监测、主题分类、关系抽取、信息抽取、信息推荐、等。cnn for nlp的原理参见Understanding Convolutional Neural Networks for NLP。
使用tensorflow实现一个文本分类cnn模型。具体参见Implementing a CNN for Text Classification in TensorFlow。
开源代码
tensorflow实现cnn实例(github源码)
cnn用于文本分类实例(github源码)
网络课程
- 斯坦福大学cnn课程
CS231n: Convolutional Neural Networks for Visual Recognition(Spring 2017)官网
sennchi