幸福顺延
深度神经网络(DNNs)是 AI 领域的重要成果,但它的 “存在感” 已经不仅仅限于该领域。 一些前沿生物医学研究,也正被这一特别的概念所吸引。特别是计算神经科学家。 在以前所未有的任务性能彻底改变计算机视觉之后,相应的 DNNs 网络很快就被用以试着解释大脑信息处理的能力,并日益被用作灵长类动物大脑神经计算的建模框架。经过任务优化的深度神经网络,已经成为预测灵长类动物视觉皮层多个区域活动的最佳模型类型之一。 用神经网络模拟大脑或者试图让神经网络更像大脑正成为主流方向的当下,有研究小组却选择用神经生物学的方法重新审视计算机学界发明的DNNs。 而他们发现,诸如改变初始权重等情况就能改变网络的最终训练结果。这对使用单个网络来窥得生物神经信息处理机制的普遍做法提出了新的要求:如果没有将具有相同功能的深度神经网络具有的差异性纳入考虑的话,借助这类网络进行生物大脑运行机制建模将有可能出现一些随机的影响。要想尽量避免这种现象,从事 DNNs 研究的计算神经科学家,可能需要将他们的推论建立在多个网络实例组的基础上,即尝试去研究多个相同功能的神经网络的质心,以此克服随机影响。 而对于 AI 领域的研究者,团队也希望这种表征一致性的概念能帮助机器学习研究人员了解在不同任务性能水平下运行的深度神经网络之间的差异。 人工神经网络由被称为 “感知器”、相互连接的单元所建立,感知器则是生物神经元的简化数字模型。人工神经网络至少有两层感知器,一层用于输入层,另一层用于输出层。在输入和输出之间夹上一个或多个 “隐藏” 层,就得到了一个 “深层” 神经网络,这些层越多,网络越深。 深度神经网络可以通过训练来识别数据中的特征,就比如代表猫或狗图像的特征。训练包括使用一种算法来迭代地调整感知器之间的连接强度(权重系数),以便网络学会将给定的输入(图像的像素)与正确的标签(猫或狗)相关联。理想状况是,一旦经过训练,深度神经网络应该能够对它以前没有见过的同类型输入进行分类。 但在总体结构和功能上,深度神经网络还不能说是严格地模仿人类大脑,其中对神经元之间连接强度的调整反映了学习过程中的关联。 一些神经科学家常常指出深度神经网络与人脑相比存在的局限性:单个神经元处理信息的范围可能比 “失效” 的感知器更广,例如,深度神经网络经常依赖感知器之间被称为反向传播的通信方式,而这种通信方式似乎并不存在于人脑神经系统。 然而,计算神经科学家会持不同想法。有的时候,深度神经网络似乎是建模大脑的最佳选择。 例如,现有的计算机视觉系统已经受到我们所知的灵长类视觉系统的影响,尤其是在负责识别人、位置和事物的路径上,借鉴了一种被称为腹侧视觉流的机制。 对人类来说,腹侧神经通路从眼睛开始,然后进入丘脑的外侧膝状体,这是一种感觉信息的中继站。外侧膝状体连接到初级视觉皮层中称为 V1 的区域,在 V1 和 V4 的下游是区域 V2 和 V4,它们最终通向下颞叶皮层。非人类灵长类动物的大脑也有类似的结构(与之相应的背部视觉流是一条很大程度上独立的通道,用于处理看到运动和物体位置的信息)。 这里所体现的神经科学见解是,视觉信息处理的分层、分阶段推进的:早期阶段先处理视野中的低级特征(如边缘、轮廓、颜色和形状),而复杂的表征,如整个对象和面孔,将在之后由颞叶皮层接管。 如同人的大脑,每个 DNN 都有独特的连通性和表征特征,既然人的大脑会因为内部构造上的差异而导致有的人可能记忆力或者数学能力更强,那训练前初始设定不同的神经网络是否也会在训练过程中展现出性能上的不同呢? 换句话说,功能相同,但起始条件不同的神经网络间究竟有没有差异呢? 这个问题之所以关键,是因为它决定着科学家们应该在研究中怎样使用深度神经网络。 在之前 Nature 通讯发布的一篇论文中,由英国剑桥大学 MRC 认知及脑科学研究组、美国哥伦比亚大学 Zuckerman Institute 和荷兰拉德堡大学的 Donders 脑科学及认知与行为学研究中心的科学家组成的一支科研团队,正试图回答这个问题。论文题目为《Individual differences among deep neural network models》。 根据这篇论文,初始条件不同的深度神经网络,确实会随着训练进行而在表征上表现出越来越大的个体差异。 此前的研究主要是采用线性典范相关性分析(CCA,linear canonical correlation analysis)和 centered-kernel alignment(CKA)来比较神经网络间的内部网络表征差异。 这一次,该团队的研究采用的也是领域内常见的分析手法 —— 表征相似性分析(RSA,representational similarity analysis)。 该分析法源于神经科学的多变量分析方法,常被用于将计算模型生产的数据与真实的大脑数据进行比较,在原理上基于通过用 “双(或‘对’)” 反馈差异表示系统的内部刺激表征(Inner stimulus representation)的表征差异矩阵(RDMs,representational dissimilarity matrices),而所有双反馈组所组成的几何则能被用于表示高维刺激空间的几何排布。 两个系统如果在刺激表征上的特点相同(即表征差异矩阵的相似度高达一定数值),就被认为是拥有相似的系统表征。 表征差异矩阵的相似度计算在有不同维度和来源的源空间(source spaces)中进行,以避开定义 “系统间的映射网络”。本研究的在这方面上的一个特色就是,使用神经科学研究中常用的网络实例比较分析方法对网络间的表征相似度进行比较,这使得研究结果可被直接用于神经科学研究常用的模型。 最终,对比的结果显示,仅在起始随机种子上存在不同的神经网络间存在明显个体差异。 该结果在采用不同网络架构,不同训练集和距离测量的情况下都成立。团队分析认为,这种差异的程度与 “用不同输入训练神经网络” 所产生的差异相当。 如上图所示,研究团队通过计算对应 RDM 之间的所有成对距离,比较 all-CNN-C 在所有网络实例和层、上的表示几何。 再通过 MDS 将 a 中的数据点(每个点对应一个层和实例)投影到二维。各个网络实例的层通过灰色线连接。虽然早期的代表性几何图形高度相似,但随着网络深度的增加,个体差异逐渐显现。 在证明了深度神经网络存在的显著个体差异之后,团队继续探索了这些差异存在的解释。 随后,研究者再通过在训练和测试阶段使用 Bernoulli dropout 方法调查了网络正则化(network regularization)对结果能造成的影响,但发现正则化虽然能在一定程度上提升 “采用不同起始随机种子的网络之表征” 的一致性,但并不能修正这些网络间的个体差异。 最后,通过分析网络的训练轨迹与个体差异出现的过程并将这一过程可视化,团队在论文中表示,神经网络的性能与表征一致性间存在强负相关性,即网络间的个体差异会在训练过程中被加剧。 总而言之,这项研究主要调查了多个神经网络在最少的实验干预条件下是否存在个体差异,即在训练开始前为网络设置不同权重的随机种子,但保持其他条件一致,并以此拓展了此前与 “神经网络间相关性” 有关的研究。 除了这篇 这篇 研究以外,“深度学习三巨头” 之一、著名 AI 学者 Hinton 也有过与之相关的研究,论文名为《Similarity of Neural Network Representations Revisited》,文章探讨了测量深度神经网络表示相似性的问题,感兴趣的读者可以一并进行阅读。 Refrence: [1] [2]
兜兜里有糖布布
这两天在公司做PM实习,主要是自学一些CV的知识,以了解产品在解决一些在图像识别、图像搜索方面的问题,学习的主要方式是在知网检索了篇国内近3年计算机视觉和物体识别的硕博士论文。由于时间关系,后面还会继续更新图片相似度计算(以图搜图)等方面的学习成果 将这两天的学习成果在这里总结一下。你将会看到计算机视觉在解决特定物体识别问题(主要是卷积神经网络CNNs)的基础过程和原理,但这里不会深入到技术的实现层面。
计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理成为更适合人眼观察或传送给仪器检测的图像。 ————维基百科 通常而言,计算机视觉的研究包括三个层次: (1)底层特征的研究: 这一层次的研究主要聚焦如何高效提取出图像对象具有判别性能的特征,具体的研究内容通常包括:物体识别、字符识别等 (2)中层语义特征的研究: 该层次的研究在于在识别出对象的基础上,对其位置、边缘等信息能够准确区分。现在比较热门的:图像分割;语义分割;场景标注等,都属于该领域的范畴 (3)高层语义理解: 这一层次建立在前两层的基础上,其核心在于“理解”一词。 目标在于对复杂图像中的各个对象完成语义级别的理解。这一层次的研究常常应用于:场景识别、图像摘要生成及图像语义回答等。 而我研究的问题主要隶属于底层特征和中层语义特征研究中的物体识别和场景标注问题。
人类的视觉工作模式是这样的: 首先,我们大脑中的神经元接收到大量的信息微粒,但我们的大脑还并不能处理它们。 于是接着神经元与神经元之间交互将大量的微粒信息整合成一条又一条的线。 接着,无数条线又整合成一个个轮廓。 最后多个轮廓累加终于聚合我们现在眼前看到的样子。 计算机科学受到神经科学的启发,也采用了类似的工作方式。具体而言,图像识别问题一般都遵循下面几个流程
(1)获取底层信息。获取充分且清洁的高质量数据往往是图像识别工作能否成功的关键所在 (2)数据预处理工作,在图像识别领域主要包括四个方面的技术:去噪处理(提升信噪比)、图像增强和图像修复(主要针对不够清晰或有破损缺失的图像);归一化处理(一方面是为了减少开销、提高算法的性能,另一方面则是为了能成功使用深度学习等算法,这类算法必须使用归一化数据)。 (3)特征提取,这一点是该领域的核心,也是本文的核心。图像识别的基础是能够提取出足够高质量,能体现图像独特性和区分度的特征。 过去在10年代之前我们主要还是更多的使用传统的人工特征提取方法,如PCA\LCA等来提取一些人工设计的特征,主要的方法有(HOG、LBP以及十分著名的SIFT算法)。但是这些方法普遍存在(a)一般基于图像的一些提层特征信息(如色彩、纹理等)难以表达复杂的图像高层语义,故泛化能力普遍比较弱。(b)这些方法一般都针对特定领域的特定应用设计,泛化能力和迁移的能力大多比较弱。 另外一种思路是使用BP方法,但是毕竟BP方法是一个全连接的神经网络。这以为这我们非常容易发生过拟合问题(每个元素都要负责底层的所有参数),另外也不能根据样本对训练过程进行优化,实在是费时又费力。 因此,一些研究者开始尝试把诸如神经网络、深度学习等方法运用到特征提取的过程中,以十几年前深度学习方法在业界最重要的比赛ImageNet中第一次战胜了SIFT算法为分界线,由于其使用权重共享和特征降采样,充分利用了数据的特征。几乎每次比赛的冠军和主流都被深度学习算法及其各自改进型所占领。其中,目前使用较多又最为主流的是CNN算法,在第四部分主要也研究CNN方法的机理。
上图是一个简易的神经网络,只有一层隐含层,而且是全连接的(如图,上一层的每个节点都要对下一层的每个节点负责。)具体神经元与神经元的作用过程可见下图。
在诸多传统的神经网络中,BP算法可能是性能最好、应用最广泛的算法之一了。其核心思想是:导入训练样本、计算期望值和实际值之间的差值,不断地调整权重,使得误差减少的规定值的范围内。其具体过程如下图:
一般来说,机器学习又分成浅层学习和深度学习。传统的机器学习算法,如SVM、贝叶斯、神经网络等都属于浅层模型,其特点是只有一个隐含层。逻辑简单易懂、但是其存在理论上缺乏深度、训练时间较长、参数很大程度上依赖经验和运气等问题。 如果是有多个隐含层的多层神经网络(一般定义为大于5层),那么我们将把这个模型称为深度学习,其往往也和分层训练配套使用。这也是目前AI最火的领域之一了。如果是浅层模型的问题在于对一个复杂函数的表示能力不够,特别是在复杂问题分类情况上容易出现分类不足的弊端,深度网络的优势则在于其多层的架构可以分层表示逻辑,这样就可以用简单的方法表示出复杂的问题,一个简单的例子是: 如果我们想计算sin(cos(log(exp(x)))), 那么深度学习则可分层表示为exp(x)—>log(x)—>cos(x)—>sin(x)
图像识别问题是物体识别的一个子问题,其鲁棒性往往是解决该类问题一个非常重要的指标,该指标是指分类结果对于传入数据中的一些转化和扭曲具有保持不变的特性。这些转化和扭曲具体主要包括了: (1)噪音(2)尺度变化(3)旋转(4)光线变化(5)位移
该部分具体的内容,想要快速理解原理的话推荐看[知乎相关文章] ( ), 特别是其中有些高赞回答中都有很多动图和动画,非常有助于理解。 但核心而言,CNN的核心优势在于 共享权重 以及 感受野 ,减少了网络的参数,实现了更快的训练速度和同样预测结果下更少的训练样本,而且相对于人工方法,一般使用深度学习实现的CNN算法使用无监督学习,其也不需要手工提取特征。
CNN算法的过程给我的感觉,个人很像一个“擦玻璃”的过程。其技术主要包括了三个特性:局部感知、权重共享和池化。
CNN中的神经元主要分成了两种: (a)用于特征提取的S元,它们一起组成了卷积层,用于对于图片中的每一个特征首先局部感知。其又包含很关键的阈值参数(控制输出对输入的反映敏感度)和感受野参数(决定了从输入层中提取多大的空间进行输入,可以简单理解为擦玻璃的抹布有多大) (b)抗形变的C元,它们一起组成了池化层,也被称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。 (c*)激活函数,及卷积层输出的结果要经过一次激励函数才会映射到池化层中,主要的激活函数有Sigmoid函数、Tanh函数、ReLU、Leaky ReLU、ELU、Maxout等。
也许你会抱有疑问,CNN算法和传统的BP算法等究竟有什么区别呢。这就会引出区域感受野的概念。在前面我们提到,一个全连接中,较高一层的每个神经元要对低层的每一个神经元负责,从而导致了过拟合和维度灾难的问题。但是有了区域感受野和,每个神经元只需要记录一个小区域,而高层会把这些信息综合起来,从而解决了全连接的问题。
了解区域感受野后,你也许会想,区域感受野的底层神经元具体是怎么聚合信息映射到上一层的神经元呢,这就要提到重要的卷积核的概念。这个过程非常像上面曾提到的“神经元与神经元的联系”一图,下面给大家一个很直观的理解。
上面的这个过程就被称为一个卷积核。在实际应用中,单特征不足以被系统学习分类,因此我们往往会使用多个滤波器,每个滤波器对应1个卷积核,也对应了一个不同的特征。比如:我们现在有一个人脸识别应用,我们使用一个卷积核提取出眼睛的特征,然后使用另一个卷积核提取出鼻子的特征,再用一个卷积核提取出嘴巴的特征,最后高层把这些信息聚合起来,就形成了分辨一个人与另一个人不同的判断特征。
现在我们已经有了区域感受野,也已经了解了卷积核的概念。但你会发现在实际应用中还是有问题: 给一个100 100的参数空间,假设我们的感受野大小是10 10,那么一共有squar(1000-10+1)个,即10的六次方个感受野。每个感受野中就有100个参数特征,及时每个感受野只对应一个卷积核,那么空间内也会有10的八次方个次数,,更何况我们常常使用很多个卷积核。巨大的参数要求我们还需要进一步减少权重参数,这就引出了权重共享的概念。 用一句话概括就是,对同一个特征图,每个感受野的卷积核是一样的,如这样操作后上例只需要100个参数。
池化是CNN技术的最后一个特性,其基本思想是: 一块区域有用的图像特征,在另一块相似的区域中很可能仍然有用。即我们通过卷积得到了大量的边缘EDGE数据,但往往相邻的边缘具有相似的特性,就好像我们已经得到了一个强边缘,再拥有大量相似的次边缘特征其实是没有太大增量价值的,因为这样会使得系统里充斥大量冗余信息消耗计算资源。 具体而言,池化层把语义上相似的特征合并起来,通过池化操作减少卷积层输出的特征向量,减少了参数,缓解了过拟合问题。常见的池化操作主要包括3种: 分别是最大值池化(保留了图像的纹理特征)、均值池化(保留了图像的整体特征)和随机值池化。该技术的弊端是容易过快减小数据尺寸,目前趋势是用其他方法代替池化的作用,比如胶囊网络推荐采用动态路由来代替传统池化方法,原因是池化会带来一定程度上表征的位移不变性,传统观点认为这是一个优势,但是胶囊网络的作者Hinton et al.认为图像中位置信息是应该保留的有价值信息,利用特别的聚类评分算法和动态路由的方式可以学习到更高级且灵活的表征,有望冲破目前卷积网络构架的瓶颈。
CNN总体来说是一种结构,其包含了多种网络模型结构,数目繁多的的网络模型结构决定了数据拟合能力和泛化能力的差异。其中的复杂性对用户的技术能力有较高的要求。此外,CNN仍然没有很好的解决过拟合问题和计算速度较慢的问题。
该部分的核心参考文献: 《深度学习在图像识别中的应用研究综述》郑远攀,李广阳,李晔.[J].计算机工程与应用,2019,55(12):20-36. 深度学习技术在计算机图像识别方面的领域应用研究是目前以及可预见的未来的主流趋势,在这里首先对深度学习的基本概念作一简介,其次对深度学习常用的结构模型进行概述说明,主要简述了深度信念网络(DBN)、卷积神经网络(CNN)、循环神经网络(RNN)、生成式对抗网络(GAN)、胶囊网络(CapsNet)以及对各个深度模型的改进模型做一对比分析。
深度学习按照学习架构可分为生成架构、判别架构及混合架构。 其生成架构模型主要包括: 受限波尔兹曼机、自编码器、深层信念网络等。判别架构模型主要包括:深层前馈网络、卷积神经网络等。混合架构模型则是这两种架构的集合。深度学习按数据是否具有标签可分为非监督学习与监督学习。非监督学习方法主要包括:受限玻尔兹曼机、自动编码器、深层信念网络、深层玻尔兹曼机等。 监督学习方法主要包括:深层感知器、深层前馈网络、卷积神经网络、深层堆叠网络、循环神经网络等。大量实验研究表明,监督学习与非监督学习之间无明确的界限,如:深度信念网络在训练过程中既用到监督学习方法又涉及非监督学习方法。
[1]周彬. 多视图视觉检测关键技术及其应用研究[D].浙江大学,2019. [2]郑远攀,李广阳,李晔.深度学习在图像识别中的应用研究综述[J].计算机工程与应用,2019,55(12):20-36. [3]逄淑超. 深度学习在计算机视觉领域的若干关键技术研究[D].吉林大学,2017. [4]段萌. 基于卷积神经网络的图像识别方法研究[D].郑州大学,2017. [5]李彦冬. 基于卷积神经网络的计算机视觉关键技术研究[D].电子科技大学,2017. [6]李卫. 深度学习在图像识别中的研究及应用[D].武汉理工大学,2014. [7]许可. 卷积神经网络在图像识别上的应用的研究[D].浙江大学,2012. [8]CSDN、知乎、机器之心、维基百科
萌哒哒的Ashley
虽然我们大多数人都惊叹为什么DL这么好?在使用大量数据进行训练时,它在准确性方面非常出色。近几年随着深度学习算法的发展,出现了很多深度学习的框架,这些框架各有所长,各具特色。下面将为大家介绍2019年最受欢迎的十大深度学习框架。
谷歌的Tensorflow可以说是当今最受欢迎的深度学习框架。Gmail,Uber,Airbnb,Nvidia以及其他许多知名品牌都在使用。TF是目前深度学习的主流框架,Tensorflow主要特性:
TensorFlow优点:
Tensorflow之后用于深度学习的主要框架是PyTorch。PyTorch框架是Facebook开发的,已被Twitter和Salesforce等公司使用。
PyTorch基本特性:
PyTorch优点:
Sonnet深度学习框架是建立在TensorFlow的基础之上。它是DeepMind用于创建具有复杂架构的神经网络。
Sonnet基本特性:
Sonnet优点:
Keras是一个机器学习框架,如果您拥有大量数据和/或你想快速入门深度学习,那么Keras将非常适合学习。Keras是TensorFlow高级集成APi,可以非常方便的和TensorFlow进行融合。这是我强烈推荐学习的一个库。
Keras基本特性:
Keras优点:
顺便说一下TensorFlow和Keras的对比:
PS:Tensorflow处于底层框架:这和MXNet,Theano和PyTorch等框架一样。包括实现诸如广义矩阵 - 矩阵乘法和诸如卷积运算的神经网络原语之类的数学运算。
Keras处于高度集成框架。虽然更容易创建模型,但是面对复杂的网络结构时可能不如TensorFlow。
MXNet是一种高度可扩展的深度学习工具,可用于各种设备。虽然与TensorFlow相比,它似乎没有被广泛使用,但MXNet的增长可能会因为成为一个Apache项目而得到提升。
MXNet基本特性:
MXNet优点:
虽然它不像TF那么受欢迎,但MXNet具有详细的文档并且易于使用,能够在命令式和符号式编程风格之间进行选择,使其成为初学者和经验丰富的工程师的理想选择。
Gluon是一个更好的深度学习框架,可以用来创建复杂的模型。GLUON基本特性:
GLUON优点:
当你听到Swift时,您可能会考虑iOS或MacOS的应用程序开发。但是如果你正在学习深度学习,那么你一定听说过Swens for Tensorflow。通过直接与通用编程语言集成,Swift for TensorFlow可以以前所未有的方式表达更强大的算法。SWIFT基本特性:
SWIFT优点:
直到CMU的DyNet和Facebook的PyTorch出现之前,Chainer是动态计算图或网络的领先神经网络框架,它允许输入数据长度不一致。chainer基本特性:
Chainer优点:
那些使用Java或Scala的人应该注意DL4J(Deep Learning for Java的简称)。DL4J的基本特性:
DL4J优点:
ONNX项目诞生于微软和Facebook,旨在寻找深度学习模型呈现的开放格式。ONNX简化了在人工智能的不同工作方式之间传递模型的过程。因此ONNX具有各种深度学习框架的优点。
ONNX基本特性:
ONNX优点:
那么您应该使用哪种深度学习框架?下面是几点建议:
2019年毕业生论文致谢范文 在平平淡淡的日常中,大家肯定对论文都不陌生吧,论文可以推广经验,交流认识。相信很多朋友都对写论文感到非常苦恼吧,下面是我帮大家整理
2022年下半年软考高项论文考试在11月5日下午3:20-5:20进行,目前考试已经结束,为方便广大考生估分对答案,信管网现将2022年下半年软考高项论文真题公
论文答辩须知 自学考试英语专业(本科)毕业论文撰写与答辩须知(修改稿) 一、 申报资格
数学是一门与实际生活联系密切的学科,最终服务于生活,高效率课堂教学模式的建立首要条件是转变教学观念,建立以学生为主体的学习模式。本文是我为大家整理的浅谈小学数学
无可奈何需要