入门篇:卷积神经网络指南(一)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud



卷积神经网络听起来像一个奇怪的生物学和数学的组合,但它是计算机视觉领域最具影响力的创新之一。2012年是卷积神经网络最流行的一年,因为Alex Krizhevsky用它赢得当年的ImageNet竞争(基本上算得上是计算机视觉的年度奥运),它将分类错误记录从26%降至15%,这是惊人的改善。从那时起,深度学习开始流行起来,Facebook使用神经网络进行自动标记算法,Google进行照片搜索,亚马逊的产品推荐,家庭饲料个性化的Pinterest,以及以搜索为基础设施的Instagram。

今天我们来看看在图像处理中如何使用CNN进行图像分类。

1.空间问题

图像分类是输入图像并输出类(猫,狗等)的任务,或是最能描述图像的类的概率。对于人类来说,这个任务是我们从出生的那一刻开始学习的第一个技能之一。我们人类能够快速,无缝地识别我们所处的环境以及我们周围的对象。当我们看到一个图像,甚至只是看着我们周围的世界,大多数时候,我们能够立即刻画场景,并给每个对象一个标签,所有这些都没有意识到注意。能够快速识别模式的这些技能,从先前的知识推测出来,适应不同的图像环境是我们的特长。我个人觉得这是人类三维视角的独特的优势,相较于机器的二维视角。

2.输入和输出

当计算机看到图像(将图像作为输入)时,它将看到的是像素值的数组。根据图像的分辨率和大小,它会看到一个32 x 32 x 3的数组(3是RGB值)。我们假设我们有一个JPG形式的彩色图像,其大小是480 x 480.代表性的数组将是480 x 480 x 3。这些数字中的每一个都给出一个从0到255的值,它描述某个点的像素强度。这些数字在我们进行图像分类时对我们毫无意义,但它是计算机可用的唯一输入。所以,这在人类的潜意识中是非常困难的。

3.我们想要电脑做什么

现在我们知道了问题以及如何输入和输出,让我们考虑一下如何解决这个问题。我们希望电脑能够区分所有的图像,并找出识别狗或识别猫的独特功能。当我们看一只狗的照片时,如果图片具有可识别的特征,例如爪子或四条腿,我们可以对其进行分类。以类似的方式,计算机能够通过寻找诸如边缘和曲线的低级特征,然后通过一系列卷积层来构建更抽象的概念来执行图像分类。这是CNN功能的总体概述,我们来详细了解一下。

3.1生物连接

首先你要有一点生物学背景。当你第一次听到“卷积神经网络”一词的时候,你可能会想到与神经科学或生物学有关的东西。CNN确实从生物学中的视觉皮质获得启发,视觉皮层是具有对视野的特定区域敏感的细胞区域,而且特定区域一般很小。这个想法在1962年由Hubel和Wiesel的实验产生的。Hubel和Wiesel发现,所有这些神经元都被组织在一个柱状结构中,并且它们一起能够产生视觉感知。具有特定任务(视觉皮层中的神经元细胞寻找特定特征)的系统内的专门组件的想法也是机器使用的构思。也是我们常说的局部感受野:就是输出图像某个节点的响应所对应的最初的输入图像的区域。这也是CNN的基础。

4.结构体

接下来我们谈谈具体细节。对CNN做什么的更详细的概述将是:拍摄图像、通过一系列卷积、非线性、池(下采样)和完全连接的层,并获得输出。如我们前面所说,输出可以是单个类或最能描述图像的类的概率。现在,困难的部分是理解这些层中的每一个,首先让我们进入最重要的一个。

4.1第一层:数学 Math

CNN中的第一层总是卷积层。第一件事是要确保你记得是这个转换的输入,像我们之前提到的,输入是一个32 x 32 x 3的像素数组。解释转换层的最好方法是想象一下闪光在图像左上方的手电筒,这个手电筒的光线覆盖着5×5的区域。而现在,我们可以想象这个手电筒可以滑过输入图像的所有区域。在机器学习术语中,这种手电筒被称为滤波器(或有时称为神经元内核),并且其闪烁的区域称为接收场。现在这个过滤器也是数字数组(数字称为权重参数)。一个非常重要的注意事项是,该滤波器的深度必须与输入深度相同(这样才可以确保数学运算),因此滤波器的尺寸为5 x 5 x 3。

译者注:滤波器:filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。

现在,我们来看看滤波器的第一个位置。当滤波器在输入图像周围滑动或卷积时,它将滤波器中的值与图像的原始像素值(AKA运算单元乘法)相乘。所以你将等到一个数字,请记住,这个数字只是代表滤波器位于图像左上方的代表。现在,我们对每个位置重复此过程。(下一步是将滤镜向右移动1个单位,然后再次向右移动1个,依此类推。)每个位置都会产生一个数字,滤波器将所有位置的滑动后,你会发现剩下的是28 x 28 x 1的数字数组,我们称之为激活图特征图。你得到一个28 x 28阵列的原因是,有784个不同的位置,一个5 x 5的过滤器可以适应32 x 32的输入图像。这些784个数字被映射到一个28×28阵列。

现在我们使用两个5 x 5 x 3的过滤器,而不是一个。那么我们的输出将是28 x 28 x 2.通过使用更多的滤镜,我们可以更好地保留空间维度。

4.2高层次视角(high-level perspective)

我们来谈一谈从高层次视角看这个卷积实际在做什么。这些滤波器中的每一个都可以被认为是特征标识符。当我说特征时,我指的是直边、简单的颜色和曲线。假设我们第一个滤波器为7 x 7 x 3,将成为一个曲线检测器。(在本节中,我们忽略了滤波器为3单位深的事实,为了简单起见,仅考虑滤波器和图像的顶层深度)。作为曲线检测器,滤波器将具有像素结构,其中存在的是沿着曲线形状的区域的更高的数值(记住,我们正在谈论的这些过滤器只是数字!)。   
     

现在,让我们回想一下数学上的可视化。当我们在输入的左上角有这个过滤器时,它是该区域中滤波器和像素值之间的计算乘法。现在,让我们举一个我们要分类的图像的例子,让我们把过滤器放在左上角。

记住:我们要做的是将滤波器中的值与图像的原始像素值相乘。

在输入图像中,如果存在类似于该滤波器表示的曲线的形状,则所有乘法相加在一起将导致较大的值!现在我们来看看当我们移动过滤器时会发生什么。

值要低得多!这是因为图像部分中没有任何响应曲线滤波器中的内容。请记住,此转换图层的输出是激活图。因此,在一个滤波器卷积的简单情况下(如果该滤波器是曲线检测器),那么激活图将显示图像中最可能出现曲线的区域。在这个例子中,我们的28 x 28 x 1激活图的左上角值将为6600。我们的激活图中右上角的值将为0,因为输入中没有任何内容导致过滤器被激活(或者更简单地说,原始图像的该区域中没有曲线)。记住,这只是一个滤波器。它用于检测向外和向右弯曲的线条。我们也可以使用其他滤波器,用于向左或直边弯曲的线条。

4.3深入网络

在传统的卷积神经网络架构中,其他层次之间非常分明。我强烈地建议有兴趣的人阅读并理解他们的功能和效果,但总体来说,它们提供了非线性的维度,有助于提高网络的鲁棒性和控制过度。经典的CNN架构如下所示:

然而,最后一层是非常重要的,我稍后会介绍。让我们回顾一下我们刚刚所学到的东西。

我们讨论了第一个转换层中的滤波器被设计为检测什么。它们检测低级特征,如边缘和曲线。可以想象,为了预测图像是否是一种对象,我们需要网络能够识别更高级别的特征,例如手或爪子或耳朵。所以让我们考虑第一个转换层之后的网络输出。当我们通过另一个转换层时,第一个转换层的输出成为第二个转换层的输入。 

当我们谈论第一层时,输入只是原始图像。然而,当我们谈论第二个转换层时,输入是从第一层产生的激活图。因此,输入的每一层基本上都描述了原始图像中出现某些低级特征的位置。现在当你应用一组滤波器(通过第二个转换层)时,输出将是表示较高级特征的激活图。这些特征的类型可以是半圆(曲线和直边的组合)或正方形(几条直边的组合)。当你通过网络并通过更多的转换层时,你将获得代表越来越复杂特征的激活图。

4.4完全连接层

现在我们可以检测到这些高级特征,接下来就是一个完全连接的层。该层基本上接收一个输入卷(volume)(无论是在其前面的conv或ReLU或池层的输出),并输出N维向量,其中N是程序必须选择的类的数量。例如,如果你想要一个数字分类程序,N将是10,因为有10位数字。该N维向量中的每个数字表示某一类的概率。例如,如果用于数字分类程序的结果向量是[0,1,1,75,0,0 ,0,0,0,05],则这表示图像为1的概率为10%,10%的概率为图像是2,图像为3的概率为75%,图像为9的概率为5%。(:还有其他方式可以表示输出,但我只是显示softmax方法。)

这个完全连接层可以查看上一层的输出(表示高级特征的激活图),并确定与特定类最相关的特征。例如,如果程序预测某些图像是狗,则在激活图中将具有高值,这些图表示诸如爪或四条腿等高级特征。类似地,如果程序预测某些图像是鸟,它将具有高值的激活图,代表高级特征,如翅膀或喙等。完全连接层最后输出的是一个概率。

4.5训练

这是我有意没有提到的神经网络的另一个方面,它可能是最重要的部分。第一个转换层中的滤波器如何查找边和曲线?完全连接层如何看激活图?每个层中的滤波器如何知道这是什么值?计算机能够调整其滤波器值(或权重)的方式是通过称为反向传播的训练过程。

在进行反向传播之前,我们必须先退后一步,谈一谈神经网络为了工作需要什么。现在我们都出生了,我们不知道什么是猫或狗或鸟。以类似的方式,在CNN启动之前,权重或滤波器值被随机化。过滤器不知道如何寻找边缘和曲线。然而,随着年龄的增长,我们的父母和老师向我们展示了不同的图片,并给了我们相应的标签。给予图像和标签其实就是CNN的训练过程。我们有一个训练集,有成千上万的狗,猫和鸟的图像,而且每个图像都有一个标签。

回到backprop(反向传播)

反向传播可以分为四个不同的部分:正向传递,损失函数,后向传递和权重更新。在我们的第一个训练中,由于所有权重或滤波器值都被随机初始化,所以输出可能会像[.1 .1 .1 .1 .1
.1 .1 .1 .1]。具有当前权重的网络不能寻找那些低级特征,因此不能对分类有什么合理的结论。记住,我们现在正在使用的是训练数据,该数据同时具有图像和标签。例如,输入的第一个训练图像为3,图像的标签为[0 0 0 1 0 0 0 0
0 0]。损失函数可以以许多不同的方式定义,但常见的是MSE(均方误差),它是½倍(实际预测)平方。

现在,我们想要达到预测标签(ConvNet的输出)与训练标签相同的点(这意味着我们的网络获得了预测能力)。为了达到目的,我们要尽量减少损失量。将其视为微积分中的优化问题,我们希望了解哪些输入直接地导致了网络的丢失。

现在,我们想要做的是执行一个向后传递的网络,这是决定哪些权重有助于损失,并找到调整方式,以使损失减少。这是权重更新。这时我们把所有权重和更新,以便它们沿梯度的相反方向改变。

向前传递>损失函数>向后传递>参数更新是一个训练迭代。该程序将对每组训练图像(通常称为批次)重复此过程以进行固定次数的迭代。一旦完成了最后一个训练示例的参数更新,网络应该被训练得很好,以保证层的权重得到调整。

4.6测试

最后,要看我们的CNN是否有效,我们有一套不同的图像和标签,并通过CNN传递图像。我们将输出与地面事实进行比较,看看我们的网络是否正常工作!

5.总结:

虽然这篇文章应该是了解CNN的一个好的开始,但绝不是全面的概述。这篇文章中没有讨论包括非线性和汇集层以及网络的超参数,如滤波器大小,步幅和填充。还没有讨论如网络架构,批量归一化,梯度消失,dropout,初始化,非凸优化,偏差,损失函数的选择,数据增加,正则化方法,反向传播的修改等问题。如果你想要了解这些,请继续关注我!

作者:Adit Deshpande,加州大学洛杉矶分校计算机科学专业。

文章原标题《A Beginner's Guide to Understanding Convolutional Neural Networks》

作者: Adit Deshpande

 译者:虎说八道,审阅:

文章为简译,更为详细的内容,请查看原文

时间: 2024-08-22 15:05:27

入门篇:卷积神经网络指南(一)的相关文章

一篇卷积神经网络的编年史

人工神经网络模型整体上的发展过程如下图所示: 上图对比了本文所述的各种神经网络之间,操作复杂度和精度之间的关系.   LeNet5 1998, Yann LeCun 的 LeNet5. 图像特征分布在整个图像上.  在具有很少参数的多个位置上提取类似特征时,具有可学习的参数的卷积是个比较有效的方法.  在没有应用GPU的时候,能够保存参数和计算就成了一个关键优势.  LeNet5并没有把每个像素都作为大型多层神经网络的一个输入,因为图像是高度空间相关的,如果用了这种方法,就不能很好地利用相关性.

零基础入门深度学习(三):卷积神经网络

投稿:Intelligent Software Development 团队介绍:团队成员来自一线互联网公司,工作在架构设计与优化.工程方法研究与实践的最前线,曾参与搜索.互联网广告.共有云/私有云等大型产品的设计.开发和技术优化工作.目前主要专注在机器学习.微服务架构设计.虚拟化/容器化.持续交付/DevOps等领域,希望通过先进技术和工程方法最大化提升软件和服务的竞争力.   在前面的文章中,我们介绍了全连接神经网络,以及它的训练和使用.我们用它来识别了手写数字,然而,这种结构的网络对于图像

零基础入门深度学习(4) - 卷积神经网络

在前面的文章中,我们介绍了全连接神经网络,以及它的训练和使用.我们用它来识别了手写数字,然而,这种结构的网络对于图像识别任务来说并不是很合适.本文将要介绍一种更适合图像.语音识别任务的神经网络结构--卷积神经网络(Convolutional Neural Network, CNN).说卷积神经网络是最重要的一种神经网络也不为过,它在最近几年大放异彩,几乎所有图像.语音识别领域的重要突破都是卷积神经网络取得的,比如谷歌的GoogleNet.微软的ResNet等,打败李世石的AlphaGo也用到了这

TensorFlow实现神经网络入门篇

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 如果你一直关注数据科学/机器学习,你就不能错过深度学习和神经网络的热潮.互联网公司正在寻找这方面的人,而且从竞赛到开源项目,都有巨额奖金.  如果你对深度学习所提供的前景感到兴奋,但是还没有开始,在这里或许是你开始的第一步.  在这篇文章中,我将介绍TensorFlow.阅读本文后,你将能够理解神经网络的应用,并使用TensorFlow解决现实生活中的问题,本文中的代码是用Python编写的,Python最近

卷积神经网络不能处理“图”结构数据?这篇文章告诉你答案

本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用.ICML 是机器学习方面的顶级会议,这篇文章--<< Learning CNNs for Graphs>>--所研究的内容也具有非常好的理论和实用的价值.如果您对于图的数据结构并不是很熟悉建议您先参考本文末的相关基础知识的介绍. CNN已经在计算机视觉(CV)以及自然语言处理等领域取得了state-of-art 的水平,其中的数据可以被称作是一种Euclidean Data,CNN正好能够

看了这篇文章,了解深度卷积神经网络在目标检测中的进展

近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高.回顾从 2014 到 2016 这两年多的时间,先后涌现出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD 等越来越快速和准确的目标检测方法. 1. 基于 Region Proposal 的方法 该类方法的基本思想是:先得到候选区域再对候选区域进行分类和边框回归.  1.1 R-CNN[1] R-CNN 是较早地将 DCNN

《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

第一篇 Part 1 基础入门篇第1章 Ansible基础入门第2章 Ansible基础元素介绍第3章 Ansible Ad-Hoc命令集第4章 Playbook快速入门第5章 Ansible Playbook拓展 第1章 Ansible基础入门 "未来主体是传统行业利用互联网技术,以云端用人工智能的方式处理大数据",在腾讯"云+未来"技术峰会上,马化腾这样形容未来.15年前,电脑还只是少数人的专属,那时的网吧还很火,还没人知道"网咖"是什么.而

深度学习全网最全学习资料汇总之入门篇

作为人工智能领域一个重要的研究分支,深度学习技术几乎出现在当下所有热门的AI应用领域,包括语音识别,语义理解,图像识别,大数据分析等等,甚至有人把当前的人工智能等同于深度学习.面对如此重要的江湖地位,我们相信一定有为数众多的 AI 开发者对深度学习技术充满了好奇心,想要快速着手使用这项强大的技术来解决现实生活中的实际问题.因此,雷锋网(公众号:雷锋网)将围绕深度学习技术整理一个系列文章,全面覆盖与其相关的各项知识点. 本文针对如何入门深度学习这一话题,整理了若干参考资料,希望对广大开发者有所裨益

(转) 深度学习全网最全学习资料汇总之入门篇

  本文转自: http://www.dlworld.cn/ZiLiaoXiaZai/3428.html 深度学习全网最全学习资料汇总之入门篇  作为人工智能领域一个重要的研究分支,深度学习技术几乎出现在当下所有热门的AI应用领域,包括语音识别,语义理解,图像识别,大数据分析等等,甚至有人把当前的人工智能等同于深度学习.面对如此重要的江湖地位,我们相信一定有为数众多的 AI 开发者对深度学习技术充满了好奇心,想要快速着手使用这项强大的技术来解决现实生活中的实际问题.因此,雷锋网将围绕深度学习技术