机器学习 李宏毅 L21-Convolutional Neural Network
2018-01-30 12:46
501 查看
CNN设计的初衷
CNN最初用于影像分类等。1. Fully connected NN的效率较低。对于特殊的部分检测,可以只使用图片的某些小部分就可以实现,这样可以简化参数;
2. 针对图像不同位置的相同特征,可以去除一部分冗余的神经元,降低参数;
3. 图像进行降采样,不会影响图像的形状。因此我们可以对图像进行降采样,降低参数。
CNN的基本架构如下图所示,包括一次或多次的convolution layer和max pooling layer,然后进行flatten layer。
1) some patterns are much smaller than the whole image
2) the same patterns appear in different regions
3) subsampling the pixels will not change the object
第1和第2点会被convolution layer考虑,第3点会被pooling考虑。
Convolution的操作过程
CNN会使用一些filter,也就是一些小的矩阵。它们的大小是需要设计的,它们的数值是通过学习得到的。先假设已经知道这些矩阵的数值,然后对于大的图像,利用小的矩阵进行乘积操作;每进行一次操作后,进行一次stride,stride=N,则整个小矩阵向右移动N格。这样一直做下去,则会得到一张新的image。新image与原来的Image有几点不同,第一是新image的形状可能会变小;第二是新Image可能有多个数字来描述,则取决于有多少个filter,每个filter生成image的一个描述量,feature map。
彩色图片,可以分解为RGB三个channel。此时,filter需要采用立方体形式,也就是filter也需要有三个channel。
CNN与fully connected NN的关系如下图所示,CNN在进行矩阵卷积操作时,只相当于进行了图像中输入的部分连接操作,因此CNN的连接数量更少。另外,由于filter的stride操作,因此部分权重也会一样,因为它们共用一些参数,这样会保证参数更加少。
Max pooling的操作
对于计算完成的image的每一个feature map,进行分组操作,然后选出每组中最大的值代表该组的情况,这样变相实现了降采样,减小了参数量。最终,可以通过多次convolution和pooling操作,可以得到一些比原始图片小的新图像,这些新图像的channerl是使用的filter的连乘积。
flattern操作
对于最后得到的多channel的小图像,可以进行拉直操作,得到一组向量。将该向量进行fully connected network操作,可以得到最后的输出结果。keras操作
一般,靠近输入的地方filter少,而靠近输出的地方filter会增多。因为靠近输入的地方Pattern较简单,而靠近输出的地方pattern较复杂。CNN各层的定性分析
可以将第一层layer进行分析,得到他们的定性功能描述。对于高层layer,可以通过多个图片输入,得到neuron对于哪些图片的activation最强,从而推断他们的功能。
具体的,对于训练好的网络,第一层可以直接绘制,可以定性分析第一次的功能。对于后面的convolution layer,可以定义一个优化函数,其输入为输入的图像,固定值为各层的权重等,需要优化的目标函数如下图所示。通过调整输入图像,得到最大的输出,此时的输入图像就是对于各filter响应最强的情况。对于后级的fully connected network,也可以采用同样的方式进行分析。
对于输出层,DNN很容易受到干扰。存在很多方法去检验CNN的正确性。以下是课件中的截图,采用遮挡层将图片部分遮挡,从而判断输出是否合理。
有趣的应用
Deep dream的应用Deep style的应用
还包括了语音辨识、文字辨识等等。
相关文章推荐
- [机器学习入门] 李宏毅机器学习笔记-11(Convolutional Neural Network;卷积神经网络)
- [机器学习] UFLDL笔记 - Convolutional Neural Network - 反向传播与梯度计算
- 机器学习模型数据结构:logistic regression, neural network, convolutional neural network
- [机器学习入门] 李宏毅机器学习笔记-34 (Recurrent Neural Network part 3;循环神经网络 part 3)
- [机器学习入门] 李宏毅机器学习笔记-32 (Recurrent Neural Network part 1;循环神经网络 part 1)
- 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
- [机器学习] UFLDL笔记 - Convolutional Neural Network - 矩阵运算
- [机器学习] UFLDL笔记 - Convolutional Neural Network - 全连接、局部连接、卷积与池化
- [机器学习入门] 李宏毅机器学习笔记-33 (Recurrent Neural Network part 2;循环神经网络 part 2)
- 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))
- ImageNet classification with deep convolutional neural network
- 人群场景分析--Slicing Convolutional Neural Network for Crowd Video Understanding
- Multi-Task Convolutional Neural Network for Face Recognition阅读笔记
- 快速去阴影--Fast Shadow Detection from a Single Image Using a Patched Convolutional Neural Network
- Deep Learning 学习随记(八)CNN(Convolutional neural network)理解
- 机器学习: Python with Recurrent Neural Network
- [文献阅读]A Convolutional Neural Network Cascade for Face Detection
- 级联人脸检测--A Convolutional Neural Network Cascade for Face Detection
- 台大Machine Learning 2017Fall 卷积神经网络 Convolutional Neural Network
- Image Style Transfer Using Convolutional Neural Network