热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

神经网络_理解卷积神经网络?

本文由编程笔记#小编为大家整理,主要介绍了理解卷积神经网络?相关的知识,希望对你有一定的参考价值。南洋理工大学的综述论文《RecentAdvancesinConvolut
本文由编程笔记#小编为大家整理,主要介绍了理解卷积神经网络?相关的知识,希望对你有一定的参考价值。


南洋理工大学的综述论文《Recent Advances in Convolutional Neural Networks》对卷积神经网络的各个组件以及进展情况进行总结和解读,其中涉及到 CNN 中各种重要层的数学原理以及各种激活函数和损失函数。机器之心技术分析师对该论文进行了解读。

论文地址:https://arxiv.org/abs/1512.07108


技术分享图片

 


引言

近段时间来,深度 CNN 已经在多个深度学习应用领域取得了出色的表现,并且也有很好的泛化的能力。图像分类、目标检测、实例分割和场景理解等大量任务都使用 CNN 实现了当前最佳。这篇论文总结了从最初到现在的 CNN 发展情况,并给出了以下指示:



  • 解释卷积层的数学原理

  • 解释池化层的数学原理

  • 介绍某些常用的激活函数

  • 介绍某些常用的损失函数

  • 简要介绍基于 CNN 的应用

卷积层的数学原理

从数学上看,第 l 层的第 k 个特征图的位置 (i,j) 处的特征值可以写成 z_{i,j,k}^l,可这样计算:


技术分享图片

 


其中 w_k^l 是第 l 层的权重,b_k^l 是第 l 层的偏置。x_{i,j}^l 是第 l 层的 (i,j) 位置的输入图块。一个特征图的权重是共享的。CNN 的最大优势之一就是这种权重共享机制,因为参数更少时,它能显著降低计算复杂度,同时还能让训练和优化更简单。

基于这类基本卷积层的一种最著名的应用是用于 USPS 数字和 MNIST 识别的 LeNet-5,如下图所示:


技术分享图片

 


LeNet-5 由三类层构成,即卷积层、池化层和全连接层。卷积层的目标是学习更能代表输入的特征,池化层则是为了降低空间维度,全连接层则是用于类别预测。具体而言,卷积层由多个卷积核构成,这使其能够得到多个特征图,而且特征图的每个神经元都会连接到之前一层中的临近神经元区域,我们将这个区域称为之前一层中神经元的感受野(receptive field)。

如上图所示,首先通过求输入与一个学习后的卷积核的卷积,可以得到一个新的特征图,然后在卷积得到的结果上逐元素应用非线性激活。在当时,MNIST 或 USPS 数字的分类结果是很好的,即使现在也仍有很多研究者在使用它们来进行简单实验,以解释说明各种各样的算法。一般而言,任何类型的卷积网络都能在这些数据集上轻松实现 97%-98% 的准确度。

近段时间来,研究者还为卷积运算提出了一些新型的架构。其中最著名的一个是扩张卷积(dilated convolution)。扩张型 CNN 是 CNN 的一项近期进展,为卷积层引入了某些额外的超参数。通过在过滤器之间插入零,可以增大网络的感受野,使得网络能够覆盖更多相关信息。从数学上看,使用扩张方法的 1-D 扩张卷积可将信号 F 与大小为 r 的卷积核 k 进行卷积:(F_{*l} k)_t = sum_t (k_t * F_{t?l * t}),其中 *l 表示 l-扩张卷积。通过这种方式,该公式可以直接扩展成 2-D 扩张卷积。


技术分享图片

 


上图展示了三个扩张卷积层,其中扩张因子 l 随每层而指数增大。中间特征图 F2 是由底部特征图 F1 通过应用 1-扩张卷积而得到的,其中 F2 中的每个元素都有一个大小为 3×3 的感受野。F3 是由 F2 通过应用 2-扩张卷积而得到的。特征图 F4 是由 F3 通过应用 4-扩张卷积而得到的。见红色轮廓。

池化层的数学原理

池化层是 CNN 中一个很重要的模块,这类层最重要的目标是降低特征图的大小,具体方式是通过使用某个函数来融合子区域,比如取平均或最大/最小值。池化的工作方式是在输入上滑动一个窗口并将该窗口中的内容送入池化函数。池化的工作方式非常类似于离散卷积,只是用某个其它函数替代了卷积核的线性组合。

描述沿某个方向 j 的池化层的性质的数学公式:



  • i_j:沿方向 j 的输入大小

  • k_j:沿方向 j 的池化窗口大小

  • s_j:沿方向 j 的步幅

所得到的沿方向 j 的输出大小 o_j 可以这样计算:o_j = (i_j - k_j) / s_j + 1,注意池化层通常不会使用零填充。

最大池化和平均池化可以归纳为 Lp 池化,可描述为:


技术分享图片

 


其中 y_{i,j,k} 是池化算子在第 k 个特征图的位置 (i,j) 处的输出,a_{m,n,k} 是第 k 个特征图中的池化区域 R_{ij} 中位置 (m,n) 处的特征值。特别要指出,当 p=1 时,Lp 对应于平均池化,当 p 趋近无穷是,Lp 会变成最大池化。

池化还有一些其它选择,比如混合池化,其公式可写成:


技术分享图片

 


这可被视为最大池化和平均池化的混合版本,其中 λ 是一个 0 到 1 之间的随机值,表明了使用平均池化和最大池化的位置。在实践中,这有望降低过拟合问题,且表现也会比单纯的最大池化或平均池化好一点。

某些常用的激活函数

ReLU


技术分享图片

 


上图是 ReLU 函数。ReLU 激活函数定义如下:


技术分享图片

 


其中 z_{i,j,k} 是第 k 通道中位置 (i,j) 处的激活函数的输入。ReLU 是一个逐元素的函数,会保留正的部分,并将负的部分变成零。相比于 sigmoid 或 tanh,ReLU 中的 max(.) 运算能使其速度更快。ReLU 的缺点是其在 0 处的不连续性,这可能会导致在反向传播中出现梯度消失问题。

Leaky ReLU


技术分享图片

 


为了避免梯度消失问题,研究者提出了一种很重要的 ReLU 变体函数:Leaky ReLU。其数学形式为:


技术分享图片

 


其中 λ 的取值范围是 (0,1)。Leaky ReLU 并不强制负的部分为零,相反它允许有一个较小的非零梯度。

PArametric ReLU


技术分享图片

 


上图是 PReLU 的图示。PReLU 和 Leaky ReLU 的不同之处是参数 λ。首先来看 PReLU 的公式:


技术分享图片

 


其中 λ_k 是第 k 个通道所学习到的参数。这些 λ 不是预定义的,而是通过数据学习到的,而且可学习的参数 λ_k 的数量正是网络中通道的数量。因为用于训练的额外参数很少,所以无需担心过拟合问题。它可以在反向传播过程中与其它参数一起同时优化。另外也还有很多其它有用的非线性激活函数,比如 ELU、Maxout 等。

某些常用的损失函数

hinge 损失

hinge 损失通常用于训练 SVM 及其变体。用于多类 SVM 的 hinge 损失定义如下:


技术分享图片

 


其中 w 是可训练的权重;δ(y(i), j) 是指示函数,如果 y(i) = j,则其输出为 1,否则输出为 0。N 是样本数量,K 是类别数量。如果 p=1,则称为 L1-hinge 损失;如果 p=2,则称为 L2-hinge 损失。

softmax 损失


技术分享图片

 


softmax 损失可以说是分类目标方面最流行的损失,其中 N 是图像数量,K 是类别数量,p_j 是第 j 类的概率,y 是基本真值。1{.} 是一个指示函数,如果 y_i == j,则输出 1,否则输出 0。

softmax 损失是一种泛化的 logistic 损失,能将预测结果转换成范围 (0,1) 之间的非负值并给出在各类别上的概率分布。

对比损失

对比损失常被用于训练用于图像检索或人脸验证的孪生网络。其基本思想是增大不相似配对之间的距离,减小相似配对之间的距离。数学公式可写成:


技术分享图片

 


如果 y=1,则第二项为 0,总损失就来自第一项,这就意味着目标就成了降低相似配对之间的距离。如果 y=0,则第一项为 0,总损失就来自第二项,这就意味着目标就成了增大不相似配对之间的距离。注意,如果不相似配对之间的距离小于余量,则总损失会增大。

三重损失

三重损失是对对比损失的一种聪明的改进。假设我们有三张图像,这个三元组单元 (x_a, x_p, x_n) 包含一个锚图像、正例和负例。


技术分享图片

 


上述公式是三重损失,其中 N 是图像数量,d_{a,p} 是锚图像与其正例图像之间的距离,d_{a,n} 是锚图像与其负例图像之间的距离,m 是余量。其目标是增大 d_{a,n},使得 d_{a,p} 和 d_{a,n} 之差大于余量 m。三重损失的目标是最小化锚图像和正例之间的距离,以及最大化负例和锚图像之间的距离。

常用的损失函数有很多,比如 histogram 损失、lda 损失、KL-散度损失等。就不一一介绍了。

CNN 的应用

图像分类


技术分享图片

 


2012 年,Krizhevsky et al. [1] 提出了 LeNet-5 的一个扩展版 AlexNet,在 ILSVRC 2012 取得了最佳表现。上图即为其架构。由于计算时间限制,他们使用了一种并行结构来进行训练。一个 GPU 运行图中顶部的层部分,另一个 GPU 运行上图底部的层。

目标检测


技术分享图片

 


2014-2017 年,微软和 Facebook 的研究者开发了多种基于 CNN 的目标检测方法,包括但不限于 R-CNN、SPP-Net、fast RCNN、faster RCNN 和 Mask RCNN。上图是基本的 R-CNN [2]。在从原始图像中提取出区域提议之后,它们会被调整为固定尺寸并会被发送给一个预训练的 CNN。然后输出特征会得到优化,以便边界框回归和分类。

图像分割


技术分享图片

 


图像分类可以粗略地分为两部分:形义分割和实例分割。其目标是预测单张图像中每个像素属于哪一类。CNN 可用于从像素层面或图块层面预测类别可能性。Long et al. [3] 为像素级分割提出了一种全卷积网络,如上图所示,该网络类似于一般的网络,只是最后一层不同,这一层被称为去卷积层。这一层的学习目标是上采样标签图的分辨率。其结果可以是一张输出图像,其中包含了密集的像素级预测。

基于 CNN 的方法可用于很多不同的领域,比如图像检索、人脸识别、文本分类、机器翻译、3D 重建、视觉问答或图像绘制等。这里不可能全面覆盖。

分析师简评

尽管 CNN 表现出色而且泛化能力优异,但仍还有些问题仍待进一步研究。CNN 的训练需要大规模数据集和大量计算能力,但人工收集数据的成本很高而且易出错。因此,研究者们也在探索能利用大量无标注数据的弱监督学习和无监督学习。与此同时,为了加速训练过程,也有必要开发高效且可扩展的并行训练算法。最后且最重要的是如何解释网络以及理解网络的内在部分,因为人们如果不知道 CNN 表现优异的原因,人们不会愿意坐在基于 CNN 的自动驾驶汽车中或接受基于 CNN 的医疗技术的治疗。


推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • SLAM优秀开源工程最全汇总
    https:zhuanlan.zhihu.comp145750808 1、CartographerCartographer是一个系统,可跨多个平台和传感器配置以2D和3D形式提供实 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 1.活体相关文献综述调研参考:https:blog.csdn.netCVAIDLarticledetails845673192.基于LBP纹理特征的检测1)基于LBP_256特征提 ... [详细]
  • 今天凌晨开始苹果正式开始了iOS10的推送工作,使用iPhone和iPad的用户可 ... [详细]
author-avatar
若我倆有了愛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有