当前位置:主页 > 天堂2网页版 > 理解深度学习中的卷积

理解深度学习中的卷积

时间:2018-09-05

译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课、教程在反复传颂卷积神经网络的好,却都没有讲什么是“卷积”,似乎默认所有读者都有相关基础。这篇外文既友好又深入,所以翻译了过来。文章高级部分通过流体力学量子力学等解释卷积的做法在我看来有点激进,这些领域恐怕比卷积更深奥,所以只需简略看看即可。以下是正文:

织梦好,好织梦

卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。但卷积为什么如此强大?它的原理是什么?在这篇博客中我将讲解卷积及相关概念,帮助你彻底地理解它。

内容来自dedecms

网络上已经有不少博客讲解卷积和深度学习中的卷积,但我发现它们都一上来就加入了太多不必要的数学细节,艰深晦涩,不利于理解主旨。这篇博客虽然也有很多数学细节,但我会以可视化的方式一步步展示它们,确保每个人都可以理解。文章第一部分旨在帮助读者理解卷积的概念和深度学习中的卷积网络。第二部分引入了一些高级的概念,,旨在帮助深度学习方向的研究者和高级玩家进一步加深对卷积的理解。

织梦内容管理系统

什么是卷积

整篇博客都会探讨这个问题,但先把握行文脉络会很有帮助。那么粗略来讲,什么是卷积呢?

dedecms.com

你可以把卷积想象成一种混合信息的手段。想象一下装满信息的两个桶,我们把它们倒入一个桶中并且通过某种规则搅拌搅拌。也就是说卷积是一种混合两种信息的流程。

织梦好,好织梦

卷积也可以形式化地描述,事实上,它就是一种数学运算,跟减加乘除没有本质的区别。虽然这种运算本身很复杂,但它非常有助于简化更复杂的表达式。在物理和工程上,卷积被广泛地用于化简等式——等会儿简单地形式化描述卷积之后——我们将把这些领域的思想和深度学习联系起来,以加深对卷积的理解。但现在我们先从实用的角度理解卷积。

dedecms.com

我们如何对图像应用卷积

当我们在图像上应用卷积时,我们在两个维度上执行卷积——水平和竖直方向。我们混合两桶信息:第一桶是输入的图像,由三个矩阵构成——RGB三通道,其中每个元素都是0到255之间的一个整数。第二个桶是卷积核(kernel),单个浮点数矩阵。可以将卷积核的大小和模式想象成一个搅拌图像的方法。卷积核的输出是一幅修改后的图像,在深度学习中经常被称作feature map。对每个颜色通道都有一个feature map。

织梦内容管理系统

convolution.png 内容来自dedecms

内容来自dedecms

边缘检测卷积核的效果 织梦好,好织梦

这是怎么做到的呢,我们现在演示一下如何通过卷积来混合这两种信息。一种方法是从输入图片中取出一个与卷积核大小相同的区块——这里假设图片为$100\times100$,卷积核大小为$3\times3$,那么我们取出的区块大小就是$3\times3$——然后对每对相同位置的元素执行乘法后求和(不同于矩阵乘法,却类似向量内积,这里是两个相同大小的矩阵的“点乘”)。乘积的和就生成了feature map中的一个像素。当一个像素计算完毕后,移动一个像素取下一个区块执行相同的运算。当无法再移动取得新区块的时候对feature map的计算就结束了。这个流程可以用如下的动画演示: 织梦好,好织梦

aa-convolution-02.gif dedecms.com

织梦好,好织梦

RAM是输入图片,Buffer是feature map

内容来自dedecms

你可能注意到这里有个正规化因子m,这里m的值为kernel的大小9;这是为了保证输入图像和feature map的亮度相同。 织梦内容管理系统

为什么机器学习中图像卷积有用

图像中可能含有很多我们不关心的噪音。一个好例子是我和Jannek Thomas在Burda Bootcamp做的项目。Burda Bootcamp是一个让学生像黑客马拉松一样在非常短的时间内创造技术风暴的实验室。与9名同事一起,我们在2个月内做了11个产品出来。其中之一是针对时尚图像用深度编码器做的搜索引擎:你上传一幅时尚服饰的图片,编码器自动找出款式类似的服饰。 本文来自织梦

如果你想要区分衣服的式样,那么衣服的颜色就不那么重要了;另外像商标之类的细节也不那么重要。最重要的可能是衣服的外形。一般来讲,女装衬衫的形状与衬衣、夹克和裤子的外观非常不同。如果我们过滤掉这些多余的噪音,那我们的算法就不会因颜色、商标之类的细节分心了。我们可以通过卷积轻松地实现这项处理。

织梦内容管理系统

我的同事Jannek Thomas通过索贝尔边缘检测滤波器(与上上一幅图类似)去掉了图像中除了边缘之外的所有信息——这也是为什么卷积应用经常被称作滤波而卷积核经常被称作滤波器(更准确的定义在下面)的原因。由边缘检测滤波器生成的feature map对区分衣服类型非常有用,因为只有外形信息被保留下来。

本文来自织梦

autoencoder_fashion_features_and_results.png dedecms.com

copyright dedecms

彩图的左上角是搜索query,其他是搜索结果,你会发现自动编码器真的只关注衣服的外形,而不是颜色。

内容来自dedecms

再进一步:有许多不同的核可以产生多种feature map,比如锐化图像(强调细节),或者模糊图像(减少细节),并且每个feature map都可能帮助算法做出决策(一些细节,比如衣服上有3个纽扣而不是两个,可能可以区分一些服饰)。 织梦内容管理系统

使用这种手段——读入输入、变换输入、然后把feature map喂给某个算法——被称为特征工程。特征工程非常难,很少有资料帮你上手。造成的结果是,很少有人能熟练地在多个领域应用特征工程。特征工程是——纯手工——也是Kaggle比赛中最重要的技能。特征工程这么难的原因是,对每种数据每种问题,有用的特征都是不同的:图像类任务的特征可能对时序类任务不起作用;即使两个任务都是图像类的,也很难找出相同的有效特征,因为视待识别的物体的不同,有用的特征也不同。这非常依赖经验。

copyright dedecms

所以特征工程对新手来讲特别困难。不过对图像而言,是否可以利用卷积核自动找出某个任务中最适合的特征?

内容来自dedecms

进入卷积神经网络

crosscorrelation_example.png copyright dedecms

convolution_quiz.png

copyright dedecms

  • 共5页:
  • 上一页
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页
  • 上一篇:相似图片搜索的原理(二) 下一篇:神界危机8.22珍藏版(含隐藏英雄密码)