Convolutional Neural Network

Convolutional Neural Network

在这里插入图片描述
CNN的model比一般的DNN更简单
在这里插入图片描述在这里插入图片描述
图像的下采样Subsampling 与 上采样 Upsampling
在这里插入图片描述

1.Convolution

在这里插入图片描述那么CNN是怎么运作的呢?
在这里插入图片描述
能够处理不同位置的同一个pattern,移动步长stride是可以自己设的

向量内积(点乘)和外积(叉乘)概念及几何意义
在这里插入图片描述
如果我们处理的不是黑白的图片,而是彩色的呢?
在这里插入图片描述

(1)全连接 vs. 卷积网络
1.局部连接

在这里插入图片描述

2.权值共享

在这里插入图片描述
但是,这怎么train?(不重要)
  其实现在这都是用torch做的,几乎没有机会给你自己写(跟原来用Backpropagation用一模一样的做法,只是有一些weight永远是0,你不去train它,怎么让weight的值永远都是一样呢?以上同一个颜色所指的weight用BP分别算出一个gradient,再把本来要share的weight的gradient平均,然后再update它们的值)

2.Max pooling

就是做subsampling
在这里插入图片描述

在这里插入图片描述

3.flatten

就拉直展开成vector
在这里插入图片描述

4.CNN in Keras

在这里插入图片描述在这里插入图片描述
Deep Learning是一个黑盒子,你learn完之后完全不知道为什么是这样,但还是有方法能够分析的。

what does CNN learn?  以数字辨识为例

第一层卷积每个filter在对输入的图像进行过滤,试图捕捉到什么东西。
第一层还是比较简单的,它的filter就是一个3*3的pixels,看9个pixels就可以知道它在捕捉什么。

比较难想象的是,第二层的filter在做什么?
第二层有50个3 * 3的filters,但是这些filter的Input并不是pixels,而是做完convoluntion,max pooling的结果。就算把这个3 * 3的weight都拿出来,你也不知道它在做什么。另外这个3 * 3的filter考虑的范围并不是3 * 3个pixels,而是比9个pixels更大的范围。它的3 * 3的Input是做完convolution,max pooling之后的结果,所以它实际在img上看到的范围是比3 * 3更大的。

那么怎么来分析一个filter做的事情是什么呢?
在这里插入图片描述

这个方法的神奇之处就在于,我们之前训练CNN模型是为了找合适的参数而做梯度下降,而现在是反过来,参数固定,我们找合适的图片做梯度上升来让这个filter的激活程度最大。

就是找到每个filter能够探测出的样本特征

第k个filter的激活程度:现在Input的东西跟cativation有多相近,有多match

a k a^k ak的值越大,说明filter扫过的位置和filter越接近,说明这个filter对这种特征越敏感

总结:filter就是用来detect某一种pattern,比如竖直的直线,斜条纹之类的…

在这里插入图片描述
CNN网络实际上是通过不断的层数深入在提取图像更深层次的特征,是一种自动提取图像特征的网络。

有一种精神就是通过对output的一些处理(加contrain等等),让machine所识别出的东西更贴近于我们的认知。

这种精神演化出deep dream和deep style

在这里插入图片描述
deep dream训练如果输入图像有类型动物的特征,那么filter会放大这样的特征,到最后输出的时候图像上真的强化成了动物。

deep style是deep learn的进阶版本

在这里插入图片描述在这里插入图片描述
deep style训练将输入图像的context内容和filter训练好的风格结合,filter会将图像强化成他之前训练的风格,比如相近颜色,曲线程度等(呐喊风格),最后输出的也就是这样风格的原图像。

CNN的应用领域

1.Playing Go

如果想让machine来下围棋,一般typical的neural network也能做到,但是CNN的performance会更好。
在这里插入图片描述

什么时候我们可以用CNN?

要有img该有的那些特性,开头部分根据三个观察,设计出CNN这种架构,对处理img的问题特别有效。

为什么这种架构可以用在围棋上面呢?

围棋有一些特性和影像处理是很相似的:

在这里插入图片描述

2.Speech & Text

在这里插入图片描述
做文本处理时,filter只在时间序列上移动,而不在embedding dimension上移动(如果知道word2vec
,就知道不合理(make sense))
,简单理解:因为我们要比较的是不同词语义之间的联系,而不是同一个词里面语义有什么不同,所以应该向着sentence方向移动

因为在word embedding里面每个dimension(行)的含义是独立的,所以当我们使用CNN的时候,假设第二个dimension和第一个dimension之间有某种特别的关系,第四个dimension和第五个dimension之间有某种特别的关系,如果这种关系是重复,也就是说同样一个pattern出现在纵列的不同位置,它们代表的是同样的意思

通俗易懂的人工智能教程

更多的学习资料

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值