您的位置:首页 > 其它

机器学习 李宏毅 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的应用



还包括了语音辨识、文字辨识等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习
相关文章推荐