说起CNN,一开始大家会想到某家电视台,但过了几年,大部分人都会想到深度学习。应该说,CNN是近两年深度学习风暴的罪魁祸首。2012年以来,它让沉入冷宫的神经网络重出江湖,确立了其在人工智能王国的霸主地位。如果你认为深度学习只能用来理解图像,那你就大错特错了,因为它的用途非常广泛,从文本到图像,下到音频,从手写数字识别到大名鼎鼎的GAN对抗学习都离不开它.但是要理解CNN,还是以图像为例更合适。总之,CNN图像处理的本质是信息提取。一个庞大的网络可以逐步提取最关键的图像特征。我们有时称之为自动特征工程。CNN的构建灵感来自于人类识别视觉信息的过程。人脑识别物体的第一个问题是:某一类物体对应的图像有几千万张,比如一个苹果,各种状态有几千种状态,我们识别物体的类型,其实就是给成千上万张不同的图片赋予同一个标签。CNN的灵感来自于人脑物理学中的一个属性,即一个事物的结果与一系列的变化无关,这叫做不变性。比如你把一个苹果旋转任意角度都是苹果,也就是说这个苹果没有旋转。变性,但数字6不起作用。旋转一定角度就变成9,没有旋转不变性。我们人类通常可以忽略这些变化来识别事物,也就是忽略与这种变化相关的信息。如果我们识别图像,实际上我们的算法必须具有人类的能力。首先,让它学习与真实对象信息无关的内容。以数字识别为例。虽然数字是多少与旋转的角度有关,但与图中的上下左右无关。我们称这种不变性为平移不变性。解决这个问题最粗暴的方法之一就是创建大量的样本,比如把“1”放在很多不同的位置,然后让机器从错误中学习。然后穷尽所有的位置,但是我相信没有人用这种方式完成物体的识别。那么该怎么办?CNN中的卷积就是这个问题的答案,因为卷积运算本身是平移不变的(我知道这听起来很模糊,见下文)。卷积,顾名思义,“量”就是扫,“积”就是相乘。卷积本质上是利用一个叫做kernel的矩阵,从图像的小块中逐个粘贴,将图像块的每个像素乘以一次得到一个输出值,扫描后得到新的图像。我们用一个3*3的卷积对一个4*4的图像进行卷积,看看效果。卷积的数学过程一个卷积核就像一个小探测器,它的DNA刻在卷积核的数字上,告诉我们它要做什么,卷积核扫一扫图片,只要它的DNA是不变的,所以它看到的结果在图片的任何地方都是一样的。这就是卷积本身具有平移不变性的原理。由于这种不变性,一个能识别1的卷积在图片的任何地方都可以识别1,一个trainingcost可以对任何一张图片进行操作。在图像处理领域,卷积已经有了另一个名字,叫filter,filter,我们把图像放进去,它会出来一个新的图像,可以是图像的边缘,可以是锐化后的图像,也可以是它可以模糊过去的图像。如果你玩过photoshop,你会发现里面有一些滤镜,锐化、虚化、高反差识别等,都是用的类似的技术。一个矩阵经过处理得到一个图片转换。我们有时会说低通和高通滤波器,低通滤波器通常用来降噪,而高通可以得到图像的细微纹理。你玩photoshop,玩的就是卷积。当卷积核中的个数固定时,其功能也固定。为什么这样有效?由于相邻像素之间往往存在图像特征,内核通过计算小范围内像素之间的关系来提取局部特征,可以理解为局部信息的传感器,或者物理学中的算子。比如提到的边缘提取滤波器,它做的物理运算也叫拉普拉斯算子,只有当像素点在由亮变暗的过程中,它才取1,其他的取0,所以它提取的图像特征是边缘。其实我们知道,图像中的信息往往都包含在它的边缘,如果你画一个人的素描,你就能完全认出这个人。通过找到信息的关键载体——边缘,并过滤掉其他冗余信息,我们得到了比第一层处理得更好的图像,大大降低了搜索图像的可能性。卷积中常用的是卷积边缘提取过程。Kernel本质有两个:***,kernel是局部化的,即只对图像中的局部区域敏感,其次,权重是共享的。也就是说,我们用一个kernel来扫描整个图像,processkernel的值保持不变。这样可以保证刚才说的翻译不变形。例如,如果你识别一个物体,显然你的识别不应该依赖于物体的位置。独立于位置和平移不变。那么卷积如何帮助你从不同的模式中识别出数字1呢?数字的尖线会使卷积值变高(警报声)。无论你的1出现在图像的哪个位置,我的部分扫描+统一权重算法都会帮你算出来,你用同样的卷积核识别1来扫描图像,瞧,我给你找出任何位置。卷积和神经网络有什么关系?答案是卷积扫描图像,每个卷积核与图像块相乘的过程可以看作是一个独立的神经元利用它的突触来检测图像的一小部分,然后做出我看到或看到的决定我没看到什么。整个卷积过程不是对应一层神经网络吗?啊哈,整个卷积过程相当于一层神经网络!neuronslikesmalldetectors刚才说了卷积是一种可以检测图片中任意位置的一种提取同类信息的工具,然后我们也提到了除了提取之外,我们还需要做的一项工作是提取重要的信息信息并丢弃不重要的信息。实现这个的操作叫做pooling,但是请注意,这时候如果原图是28*28,那么kernel出来的图形还是28*28,但其实大部分时候,local图像的特征不会在像素级别发生变化。我们可以把局部特征看成一个假设,把这个假设作为一个数学公式加到卷积层中,帮助我们过滤冗余信息。这就是pooling所做的——即抛开你周围的环境,与你一起成长。了解那些像素。MaxPooling的数学过程Pooling的本质是降采样,提高统计效率。用更冠冕堂皇的词来说,它使用局部特征不变性来降低维度。池化的方法有很多种。常见的叫maxpooling,就是找几个相邻的像素点。价值最高的一个作为其他人的代表被丢弃。这样,通过卷积到池化的过程,在识别1的任务中,我们可以验证每个小区域是否有边,从而找到1可能存在的区域。在池化结束时,我们得到的是一个降维图像。这张图的意思就是告诉你原图的每个区域是包含1还是不包含1,也叫featuremap。好的,我们可以从一堆图片中识别出1,那么我们如何得到2呢?让我们把2写成Z形,你知道我们该怎么做吗?我们不能只识别垂直线,还需要识别水平线,记住,一个卷积层只处理一个特征,如果你想同时找到垂直线和水平线,我们需要两个不同的卷积层,并将它们并行连接,手写那么数字识别呢?横线对应一张特征图,竖线对应另一张特征图。如果要识别2,只需要比较两个featuremap,看两个featuremap是否同时有报警。(水平线和垂直线)。我们仍然可以使用一个卷积来完成这个比较过程(原因仍然是平移不变性)!这时,新的卷积层将前面两个卷积的结果并行合成,或者说形成一个特征的特征,即水平线和垂直线相交的特征。在这里,我们可以将我们的理论提升到一个新的水平。深度是什么意思?让我们考虑一下。正确识别一幅图像,不能只看变化,不能只看边角。了解张三李四需要了解整个形象。也就是说,我们需要从局部关联演进到全局关联。真实的图像必须具有全局视角,例如我的脸。眼镜、鼻子、耳朵一起看,才能叫我的脸。只要是偏的,就什么都不是。如何提取全局特征?从一个层级推进到另一个层级,通常是对上一层进行横向和纵向的整合(层与层之间的组合或者层内的组合或者两者),我们的特征组合是基于之前通过pooling降维的层,所以实际上,每个神经元决策的信息都比上一层多。我们用一个学术术语——感受野来表示一个神经元决策所覆盖的像素数量。上层看到更多的输入神经元,所以感受野看到更多。越靠近顶层的神经元,就越接近全局连接。领域越深,感受野越大,表达越抽象。这类似于物理学的一个基本方法——尺度变换(后面会讲到),也是一个非常核心的提取全局信息的方法。我称之为水平。渐进的方法。你一步一步对图片进行下采样,将图像中的四个小格子合并为一个,然后再将新图像中的四个小格子合并为一个,直到一张大图像被缩减为一个小样本。每一层的卷积并不是一个卷积,而是一组进行不同特征提取的卷积网络,比如我刚才提到的不同方向的边缘凹槽形成的一组卷积。你可以想象后面有一组不同大小的透视图组成的网络,体现了我们在空间尺度上可以实现的特征工程。在这样的逐层互连中,高层越高,感受野越大。整个CNN网络就像一个封建等级社会。最高层是王者,他是整个集团中唯一具有全球视野的人。下一层是各大领主,然后是领主、骑士、农民(下神经元)身上的风尘。我们把刚才的词换成抽象。深度卷积赋予神经网络抽象能力。这种逐层向上卷积进行基础变换的过程称为base-making(深度学习就是base-making),再深一点就称为representation,比喻人类思维是抽象的。抽象是在深层次上将不同的事物联系起来。CNN提前教会了我们一种物理抽象的方法。到此为止,我所描述的都是一些人工的特征工程,即使网络很深,也顶多是一个深度网络,与学习无关。我们说这样的系统(mxnxpxz),我们要手动去设计,再穷也可能会出错。我们说这样的结构只能由机器自己去学习,这就是深度学习的本质。我们使用几个基本假设(规律性)和一个优化函数来让优化(进化)找到这样的结构。基本假设无非是图像的几个基本结构,体现在几个不变量上。物理学真的很棒。深度学习的训练是计算机帮助人完成机器学习中特征工程最难的一步(特征工程的本质是基变换)。过去,人类绞尽脑汁思考如何进行图像识别,寻找人如何识别图像,希望将人可以用来识别物体的特征输入计算机,但现在通过深度卷积,计算机完成这个过程本身。2012年卷积网络的发展趋势,可以关注几个方向:1.Deepermodel:从AlexNet到VCG19,Highwaynetwork到residualnetwork,一个主要的发展趋势是更深的模型。当你采用更深层次的模型时,你通常会发现一些神奇的事情发生了。当然网络的宽度(通道数)也在增加。这只是最基础的CNN,小菜一碟。2.信息交换更顺畅:深度,第一个问题是训练难,反向传播很难传递。从残差网络到现在流行的DenseNetwork,一个主要的发展趋势就是不同层级之间的信息交换越来越顺畅。我们逐渐在不同层之间添加直接的信息渠道。DenseNetwork3,迁移学习、半监督学习、对抗学习、强化学习等监督学习以外的学习方法的结合。后两者远比监督学习有趣。4.重量轻。CNN网络越来越深,导致网络上的文件加载困难。这使得CNN网络的轻量级部署成为一个关键点。我们希望在性能和能耗之间取得平衡。一个好的方法是降低网络的权重,去除不重要的权重。另一种是减少每个权值本身的数据位数,甚至用0和1来表示。虽然看起来我们丢失了很多信息,但是,由于庞大的网络中的信息是通过统计来表达的,我们并不能确定丢失了多少。类似生物过程的剪枝处理以上是CNN的总结。不要认为图像处理与您无关。其实我刚才说的是如果你在一篇文章中把它转成矩阵,无非是图像,而你把一段音频转成矩阵。它只不过是一个图像,你看,它可以链接到CNN。我想说,无论你做什么,无论你是勤奋的计算机工程师、游戏设计师,还是高大上的金融分析师,甚至是普通消费者,未来你的生活都离不开CNN了,更多内容请关注:巡洋舰深度学习实战课程,带你深度学习实战。课程涵盖机器学习、深度学习、深度视觉、深度自然语言处理,以及最具特色的深度强化学习,看你能否完成跨学科深度学习在你所在领域的应用,惊艳小伙伴,成为大牛在你周围的人眼里。刚才提到的方法将在课程中详细开发。
