52

10 分钟理解深度学习中的卷积

 5 years ago
source link: https://mp.weixin.qq.com/s/BK07_B_TBmNgFR-nV8Jw7g?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

u2y67f6.jpg!web

今年来深度学习中的 卷积神经网络 (上图是一个卷积神经网络形态)技术开始显现威力,通过简单的几行代码就能实现对图片、视频等信息的处理、学习和预测。

然而,理解 卷积神经网络 ,特别是对于第一次接触深度学习领域的人而言,太多 玄而又玄 的词语,如 卷积Convolution、卷积核Kernel、通道channels ,搞的大家晕头转向,不知所错。不过 卷积Convolution 拥有十分强大的特征提取功能和高度可扩展性,在本文中我们将剖析其内部作用机制。

二维卷积2D Convolutions

讲解卷积,最直观的是对图片进行卷积,尤其是单通道(比如黑白图片是单通道,而彩色图片一般是三通道)的图片。这样的图片也就是2维数据,下面的动画就是对一张图片进行 卷积操作

bIVjQrB.gif

其中移动的小方框是 卷积核 , 卷积核相当于权重矩阵 ,如下图所示

EFNFVre.jpg!web

我们选取动画中的 第一帧 ,详解数据之间的关系,我们发现 卷积核 移动过程中与其对应位置的数字相乘累加得到右侧图中的数字。

yIJZj2B.jpg!web

因此我们可以形象的将 卷积 分别理解为: 大家可以理解成移动, 可以理解成相乘累加。

经常使用的操作

填充操作

上面的卷积操作,得到的新图片尺寸变小。有时候为了让卷积后的图片尺寸不变,需要使用 填充操作padding 。例如在原始图片外围填充一圈0,最终通过卷积得到的新图片尺寸不变。

rM7F7fJ.gif

步长striding

比如我们移动 卷积核 的跨度变大,例如从1变成2,请看下图

ryU7beM.gif

多通道

我们都知道屏幕是由图片有三元色,通过三种颜色就能组成五彩斑斓的颜色。而彩色图片只需要红、绿、蓝三种元色图片(三通道)组成的。如下图

vEZnIra.jpg!web

而更多的情况是由多种通道组成的,如下图

vaEjUbi.png!web

注意对 单通道数据 进行 卷积 使用的是 一个卷积核 。但是当对 多通道数据 进行卷积使用的是 多个卷积核 ,这些卷积核彼此是不同的,所以每个通道得到的新特征矩阵也是各不相同。

NrU3QnV.gif

每个通道产生每个通道的一个版本,并且 过滤器filter 作为整体产生 一个总特征矩阵

ENVZJzr.gif

前面的所有的过程我们可以理解为 Y = AX + b 当中的 AX ,即对于 输入的数据X 进行线性变换得到 AX

但是为了保证 AXY 相匹配(对应),还需要残差项 b 。如下图

qAB3ErF.gif

局部性Locality

在本文的前半部分,我们讨论过:

  • 卷积核kernel 综合提炼了来自局部位置的像素信息,并输出卷积后的特征矩阵。

  • 卷积核 是作用于整张图片的,在对一张图片每个局部位置进行 扫描移动 的过程中,卷积核是不变的。

刚刚我们出现了 扫描 这个词,比如我们对一张 大头照 进行扫描,使用 不同尺寸的卷积核 扫描出的信息是不同的。卷积核从小到大,可能依次扫描出的东西是 线条、鼻子、脸部、头 , 鼻子 是由各种 线条 组成的。而 脸部 包含 鼻子头部 包含 脸部

aimy6fy.jpg!web

YvaEFjY.jpg!web

图片中的像素是有序出现的,比如相邻的两个像素往往颜色相近或相同。如果 相邻像素存在差异 ,那么这作为 异常 就可以转换为 特征 。这种思路也是早期 电脑视觉处理 中常用的 特征提取方法 。例如,对于 边界检测edge detection ,我们可以使用 Sobel边界检测滤波器(Sobel edge detection filter) ,这是一种卷积核参数,对单通道数据进行卷积。如下图

eyIzAvj.jpg!web

上图就是使用 Sobel这种卷积核 处理后的结果,边缘位置都是灰色,而非边缘位置的像素全部变为0,即白色。因此, Sobel 卷积核能很好抽取出图片中的边界信息。

既然 卷积核 这么神奇,那么 卷积核的参数 是否可以学习?

答案是可以的,卷积神经网络的强大之处就在于可以从不同层面上对数据进行特征抽取。

对于在原始像素上操作的 早期层 ,我们可以合理地期望具有相当低级别特征的 特征检测器 ,例如 边缘 ,线 等。

我们看一个 特征可视化 的例子, 卷积核 识别出的特征按照层次从低到高依次是 边、纹理、模式、局部、个体对象

RZ7bqqF.jpg!web

往期文章

《用Python做文本分析》视频教程  

100G Python学习资料(免费下载)

100G 文本分析语料资源(免费下载)     

typing库:让你的代码阅读者再也不用猜猜猜

Seaborn官方教程中文教程(一)

数据清洗 常用正则表达式大全

大邓强力推荐-jupyter notebook使用小技巧

PySimpleGUI: 开发自己第一个软件

深度特征合成:自动生成机器学习中的特征

Python 3.7中dataclass的终极指南(一)

Python 3.7中dataclass的终极指南(二)

2017年度15个最好的数据科学领域Python库

使用Pandas更好的做数据科学

[计算消费者的偏好]推荐系统与协同过滤、奇异值分解

机器学习: 识别图片中的数字

应用PCA降维加速模型训练

如何从文本中提取特征信息?

使用sklearn做自然语言处理-1

使用sklearn做自然语言处理-2

机器学习|八大步骤解决90%的NLP问题      

Python圈中的符号计算库-Sympy

Python中处理日期时间库的使用方法  

视频讲解】Scrapy递归抓取简书用户信息

美团商家信息采集神器

用chardect库解决网页乱码问题

感兴趣不要错过哦!原价 499 元,现在拼团只需 68

AJNNzuj.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK