卷积神经网络为什么能称霸计算机视觉领域?

640?wx_fmt=png&wxfrom=5&wx_lazy=1

来源:图灵人工智能

摘要:在机器视觉和其他很多问题上,卷积神经网络取得了当前最好的效果,它的成功促使我们思考一个问题,卷积神经网络为什么会这么有效?在本文中,将为大家分析卷积神经网络背后的奥秘。


思想起源


在各种深度神经网络结构中,卷积神经网络是应用最广泛的一种,它由LeCun在1989年提出[1]。卷积神经网络在早期被成功应用于手写字符图像识别[1][2][3]。2012年更深层次的AlexNet网络[4]取得成功,此后卷积神经网络蓬勃发展,被广泛用于各个领域,在很多问题上都取得了当前最好的性能。


卷积神经网络通过卷积和池化操作自动学习图像在各个层次上的特征,这符合我们理解图像的常识。人在认知图像时是分层抽象的,首先理解的是颜色和亮度,然后是边缘、角点、直线等局部细节特征,接下来是纹理、几何形状等更复杂的信息和结构,最后形成整个物体的概念。


视觉神经科学(Visual Neuroscience)对于视觉机理的研究验证了这一结论,动物大脑的视觉皮层具有分层结构。眼睛将看到的景象成像在视网膜上,视网膜把光学信号转换成电信号,传递到大脑的视觉皮层(Visual cortex),视觉皮层是大脑中负责处理视觉信号的部分。1959年,David和Wiesel进行了一次实验[5],他们在猫的大脑初级视觉皮层内插入电极,在猫的眼前展示各种形状、空间位置、角度的光带,然后测量猫大脑神经元放出的电信号。实验发现,当光带处于某一位置和角度时,电信号最为强烈;不同的神经元对各种空间位置和方向偏好不同。这一成果后来让他们获得了诺贝尔奖。


目前已经证明,视觉皮层具有层次结构。从视网膜传来的信号首先到达初级视觉皮层(primary visual cortex),即V1皮层。V1皮层简单神经元对一些细节、特定方向的图像信号敏感。V1皮层处理之后,将信号传导到V2皮层。V2皮层将边缘和轮廓信息表示成简单形状,然后由V4皮层中的神经元进行处理,它颜色信息敏感。复杂物体最终在IT皮层(inferior temporal cortex)被表示出来。


640?wx_fmt=jpeg

视觉皮层结构


卷积神经网络可以看成是上面这种机制的简单模仿。它由多个卷积层构成,每个卷积层包含多个卷积核,用这些卷积核从左向右、从上往下依次扫描整个图像,得到称为特征图(feature map)的输出数据。网络前面的卷积层捕捉图像局部、细节信息,有小的感受野,即输出图像的每个像素只利用输入图像很小的一个范围。后面的卷积层感受野逐层加大,用于捕获图像更复杂,更抽象的信息。经过多个卷积层的运算,最后得到图像在各个不同尺度的抽象表示。


卷积运算


一维信号的卷积是数字信号处理里的一种经典手段,在图像处理领域,卷积也是一种常用的运算。它被用于图像去噪、增强、边缘检测等问题,还可以提取图像的特征。卷积运算用一个称为卷积核的矩阵自上而下、自左向右在图像上滑动,将卷积核矩阵的各个元素与它在图像上覆盖的对应位置的元素相乘,然后求和,得到输出像素值。以Sobel边缘检测算子为例,它的卷积核矩阵为:


640?wx_fmt=jpeg


假设输入图像的矩阵为以(x,y)为中心的3x3子图像为:


640?wx_fmt=jpeg


在该点处的卷积结果按照如下方式计算:


640?wx_fmt=jpeg


即以(x,y)为中心的的子图像与卷积核的对应元素相乘,然后相加。通过核卷积作用于输入图像的所有位置,我们可以得到图像的边缘图。边缘图在边缘位置有更大的值,在非边缘处的值接近于0。下图为Sobel算子对图像卷积的结果,左图为输入图像,右图为卷积后的结果:


640?wx_fmt=jpeg

Sobel算子卷积结果


从上图可以看到,通过卷积将图像的边缘信息凸显出来了。除了Sobel算子之外,常用的还有Roberts 、Prewitt算子等,它们实现卷积的方法相同 ,但有不同的卷积核矩阵。如果我们使用其他不同的核,也可以抽取更一般的图像特征。在图像处理中,这些卷积核矩阵的数值是人工设计的。通过某种方法,我们可以通过机器学习的手段来自动生成这些卷积核,从而描述各种不同类型的特征,卷积神经网络就是通过这种自动学习的手段来得到各种有用的卷积核。


卷积层


卷积层是卷积神经网络的核心。下面通过一个实际的例子来理解卷积运算。如果被卷积图像为:


640?wx_fmt=jpeg


卷积核为:


640?wx_fmt=jpeg


首先用图像第一个位置处的子图像,即左上角的子图像和卷积核对应元素相乘,然后相加,在这里子图像为:


640?wx_fmt=jpeg


卷积结果为:

640?wx_fmt=jpeg


接下来在待卷积图像上向右滑动一列,将第二个位置处的子图像:


640?wx_fmt=jpeg


与卷积核卷积,结果为154。接下来,再向右滑动一位,将第三个位置处的子图像与卷积核进行卷积,结果为166。处理完第一行之后,向下滑动一行,然后重复上面的过程。以此类推,最后得到卷积结果图像为:


640?wx_fmt=jpeg



经过卷积运算之后,图像尺寸变小了。我们也可以先对图像进行扩充(padding),例如在周边补0,然后用尺寸扩大后的图像进行卷积,保证卷积结果图像和原图像尺寸相同。另外,在从上到下,从左到右滑动过程中,水平和垂直方向滑动的步长都是1,我们也可以采用其他步长。


卷积运算显然是一个线性操作,而神经网络要拟合的是非线性的函数,因此和全连接网络类似,我们需要加上激活函数,常用的有sigmoid函数,tanh函数,ReLU函数等。关于激活函数的解释,为什么需要激活函数,什么样的函数可以用来做激活函数,我们会在后续的文章中讲述,请关注我们的公众号。


前面我们讲述的是单通道图像的卷积,输入是二维数组。实际应用时我们遇到的经常是多通道图像,如RGB彩色图像有三个通道,另外由于每一层可以有多个卷积核,产生的输出也是多通道的特征图像,此时对应的卷积核也是多通道的。具体做法是用卷积核的各个通道分别对输入图像的各个通道进行卷积,然后把对应位置处的像素值按照各个通道累加。


由于每一层允许有多个卷积核,卷积操作后输出多张特征图像,因此第L个卷积层的卷积核通道数必须和输入特征图像的通道数相同,即等于第L-1个卷积层的卷积核的个数。


下图是一个简单的例子:


640?wx_fmt=png

多通道卷积


在上图中卷积层的输入图像是3通道的(图中第1列)。对应的,卷积核也是3通道的。在进行卷积操作时,分别用每个通道的卷积核对对应通道的图像进行卷积,然后将同一个位置处的各个通道值累加,得到一个单通道图像。在上图中,有4个卷积核,每个卷积核产生一个单通道的输出图像,4个卷积核共产生4个通道的输出图像。


池化层


通过卷积操作,我们完成了对输入向图像的降维和特征抽取,但特征图像的维数还是很高。维数高不仅计算耗时,而且容易导致过拟合。为此引入了下采样技术,也称为pooling即池化操作。


池化的做法是对图像的某一个区域用一个值代替,如最大值或平均值。如果采用最大值,叫做max池化;如果采用均值,叫做均值池化。除了降低图像尺寸之外,下采样带来的另外一个好处是平移、旋转不变性,因为输出值由图像的一片区域计算得到,对于平移和旋转并不敏感。


下面通过一个实际例子来理解下采样运算。输入图像为:


640?wx_fmt=jpeg


在这里进行无重叠的2x2max池化,结果图像为:


640?wx_fmt=jpeg


结果图像中第一个元素11是原图左上角2x2子图像:


640?wx_fmt=jpeg


元素的最大值11。第二个元素9为第二个2x2子图像:


640?wx_fmt=jpeg


元素的最大值9,其他的以此类推。如果是采用的均值下采样,结果为:


640?wx_fmt=jpeg


池化层的具体实现是在进行卷积操作之后对得到的特征图像进行分块,图像被划分成的不相交块,计算这些块内的最大值或平均值,得到池化后的图像。


均值池化和max池化都可以完成下采样操作,前者是线性函数,而后者是非线性函数,一般情况下max池化有更好的效果。


网络结构


典型的卷积神经网络由卷积层、池化层、全连接层构成。在这里以LeNet5网络来说明,下图是这个网络的结构:


640?wx_fmt=jpeg


网络的输入为的灰度图像,由3个卷积层,2个池化层,1个全连接层组成。前面两个卷积层后面都有一个池化层。输出层有10个神经元,表示0-9这10个数字。


应用


机器视觉是深度学习技术最先取得突破的领域,也是应用最广泛的领域。在AlexNet出现之后,卷积神经网络很快被用于机器视觉里的各种任务,包括通用目标检测、行人检测、人脸检测、人脸识别、图像语义分割、边缘检测、目标跟踪、视频分类等各种问题,都取得了成功。


自然语言处理领域大多数的问题都是时间序列问题,这是循环神经网络擅长处理的问题。但对于有些问题,使用卷积网络也能进行建模并且得到了很好的结果,典型的是文本分类和机器翻译。


除此之外,卷积神经网络在语音识别、计算机图形学等其他方向也有应用。


卷积层可视化


卷积网络设计的初衷是通过卷积层和池化层逐级提取图像在各个不同抽象层次的特征,我们会有这样的疑问:现实结果真的是这样的吗?


先看图像卷积之后的结果。下面是一张卡车的图像:


640?wx_fmt=jpeg

卡车图像


用AlexNet网络处理之后,第一个卷积层的输出结果(我们把各个卷积核的结果依次排开了)是这样的:


640?wx_fmt=jpeg

卷层1的结果


可以看到这里抽取了一些边缘信息。第二个卷积层的输出结果是这样的:


640?wx_fmt=jpeg

卷层2的结果


它抽取了更大区域的特征。后面几个卷积层的结果是这样的:


640?wx_fmt=jpeg

卷层3—5的结果


卷积层3-5的结果在上图中依次排开。然后我们看全连接层,下图自上向下是3个全连接层的输出结果:


640?wx_fmt=jpeg

全连接层的结果


我们再来看卷积核的可视化结果。第一个卷积层的卷积核图像如下图所示:


640?wx_fmt=jpeg

     卷积层1的卷积核


     可以看到,这些卷积核确实是在提取边缘,方向等信息。再看第2个卷积层的卷积核:


640?wx_fmt=jpeg

卷积层2的卷积核


看上去很杂乱,没有反应太多信息。有没有更好的办法?答案是肯定的,目前出现了一些文章解决卷积层可视化的问题。在这里,我们介绍一种典型的方法,通过反卷积运算将卷积核的效果可视化出来。


文献[6]设计了一种用反卷积操作可视化卷积层的方案。具体做法是,将卷积网络学习到的特征图像左乘得到这些特征图像的卷积核的转置矩阵,将图片特征从特征图像空间投影到像素空间,以发现是哪些像素激活了特定的特征图像,达到分析理解卷积网络的目的。这这操作称为反卷积,也叫转置卷积。


对于卷积层,在反卷积运算时使用正向传播时的卷积核的转置矩阵对特征图像进行卷积,将特征图像还原到原始的像素图像空间得到重构的图像。通过反卷积操作得到卷积核的可视化图像如下图所示:


640?wx_fmt=jpeg

     通过反卷积进行可视化


上图表明,前面的层提取的特征比较简单,是一些颜色、边缘特征。越往后的卷积层提取的特征越复杂,是一些复杂的几何形状。这符合我们对卷积神经网络的设计初衷,即通过多层卷积完成对图像的逐层特征提取和抽象。


另外一种分析卷积网络机理的方法是根据卷积结果图像直接重构出原始输入图像,如果根据卷积结果可以重构出原始输入图像,则说明卷积网络很大程度上保留了图像的信息。文献[7]设计了一种方法,通过卷积网络提取出来的特征反向表示图像来观察卷积网络的表达能力。在这里,反向表示是指由卷积网络编码后的向量近似重构原始输入图像。具体做法是给定卷积网络编码后的向量,寻找一张图像,这种图像通过卷积网络编码之后的向量与给定向量最匹配,这通过求解一个最优化问题实现。下图是根据卷积输出结果重构出来的图像:


640?wx_fmt=jpeg

卷积图像重构


其中,上面一行是原始图像,下面一行是重构后的图像。从这个结果可以看出,卷积神经网络确实提取出了图像的有用信息。


理论分析


对卷积神经网络的理论解释和分析来自两个方面。第一个方面是从数学角度的分析,对网络的表示能力、映射特性的数学分析;第二个方面是卷积网络和动物视觉系统关系的研究,分析二者的关系有助于理解、设计更好的方法,同时也促进了神经科学的进步。


数学特性


神经网络代表了人工智能中的连接主义思想,它是一种仿生的方法,被看做是对动物大脑神经系统的模拟。在实现时,它又和大脑的结构不同。从数学上看,多层神经网络本质上是一个复合函数。


既然神经网络在本质上是一个复杂的复合函数,这会让我们思考一个问题:这个函数的建模能力有多强?即它能模拟什么样的目标函数?已经证明,只要激活函数选择得当,神经元个数足够多,使用3层即包含一个隐含层的神经网络就可以实现对任何一个从输入向量到输出向量的连续映射函数的逼近[8][9][10],这个结论称为万能逼近(universal approximation)定理。


文献[10]对使用sigmoid激活函数时的情况进行了证明。文献[8]指出,万能逼近特性并不取决于神经网络具体的激活函数,而是由神经网络的结构保证的。


万能逼近定理的表述为:如果640?wx_fmt=jpeg是一个非常数、有界、单调递增的连续函数,640?wx_fmt=jpeg是m维的单位立方体,640?wx_fmt=jpeg中的连续函数空间为640?wx_fmt=jpeg。对于任意640?wx_fmt=jpeg以及640?wx_fmt=jpeg函数,存在整数N,实数640?wx_fmt=jpeg,实向量640?wx_fmt=jpeg,通过它们构造函数640?wx_fmt=jpeg作为函数f的逼近:


640?wx_fmt=jpeg


对任意640?wx_fmt=jpeg的满足


640?wx_fmt=jpeg


万能逼近定理的直观解释是可以构造出上面这样的函数,逼近定义在单位立方体空间中的任何一个连续函数到任意指定的精度。这一结论和多项式逼近类似,后者利用多项式函数来逼近任何连续函数到任何精度。这个定理的意义在于,从理论上保证了神经网络的拟合能力。


但是这只是一个理论结果,具体实现时,神经网络需要多少层,每层要多少个神经元?这些问题只能通过实验和经验来确定,以保证效果。另外一个问题是训练样本,要拟合出一个复杂的函数需要大量的训练样本,而且面临过拟合的问题。这些工程实现的细节也至关重要,卷积网络在1989年就已经出现了,为什么直到2012年才取得成功?答案有这么几点:


1.训练样本数量的限制。早期的训练样本非常少,没有大规模采集,不足以训练出一个复杂的卷积网络。


2.计算能力的限制。1990年代的计算机能力太弱,没有GPU这样的高性能计算技术,要训练一个复杂的神经网络不现实。


3.算法本身的问题。神经网络长期以来存在梯度消失的问题,由于反向传播时每一层都要乘上激活函数的导数值,如果这个导数的绝对值小于1,次数多了之后梯度很快趋近于0,使得前面的层无法得到更新。


AlexNet网络的规模尤其是层数比之前的网络更深,使用了ReLU作为激活函数,抛弃了sigmoid和tanh函数,一定程度上缓解了梯度消失问题。加上Dropout机制,还减轻了过拟合问题。这些技术上的改进,加上ImageNet这样的大样本集,以及GPU的计算能力,保证了它的成功。后面的研究表明,加大网络的层数、参数数量,能够明显的增加网络的精度。对于这些问题,会在后面的专题文章中详细介绍,感兴趣的读者可以关注我们的公众号。


卷积神经网络本质上权重共享的全连接神经网络,因此万能逼近定理对它是适用的。但卷积网络的卷积层,池化层又具有其特性。文献[11]从数学的角度对深层卷积网络进行了解释。在这里,作者将卷积网络看做是用一组级联的线性加权滤波器和非线性函数对数据进行散射。通过对这一组函数的压缩(contraction)和分离(separation)特性进行分析从而解释深度卷积网络的建模能力。另外,还解释了深度神经网络的迁移特性。卷积神经网络的卷积操作分为两步,第一步是线性变换,第二步是激活函数变换。前者可以看成是将数据线性投影到更低维的空间;后者是对数据的压缩非线性变换。作者对这几种变换的分离和压缩特性分别进行了分析。


     与视觉神经系统的关系


卷积网络与人脑视觉系统的关系对于卷积网络的解释和设计有重要的意义,这分为两个方面的问题。第一个问题是深度卷积神经网络是否能够取得和人脑视觉系统相似的性能,这涉及到二者能力的对比。第二个问题是二者在结构上是否具有一致性,这是从系统结构上分析二者的关系。


从更深层来看,这个问题也是人工智能无法回避的一个问题。很多人都会有一个疑问:我们是否要理解了大脑的工作机理才能实现出和它相当的人工智能?对这个问题的答案有两种观点。第一种观点认为,我们要先弄清楚大脑的原理,才能研制出和他功能相当的人工智能。第二种观点认为,即使我们没有弄清大脑的工作原理,也能研制出和它能力相当的人工智能。一个例子就是飞机的发明过程,长期以来,人们都想通过仿照鸟的飞行方式来制造飞机,即煽动翅膀,结果均以失败告终。而螺旋桨的使用,使得我们采用另外一种方法,也能让飞机飞起来,后面出现的喷气发动机甚至让我们突破了音速,远比鸟强大。事实上,大脑可能不是实现和它具有同等功能的智能的唯一方案。


640?wx_fmt=jpeg


文献[12]对第一个问题进行了分析。他们验证了深度神经网络可以取得和灵长类动物视觉IT皮层相同的性能。人脑的视觉神经系统在物体样例变化,几何变换,背景变化的情况下仍然可以达到很高的识别性能,这主要归功于下颞叶皮层inferior temporal cortex,简称IT皮层的表示能力。通过深度卷积神经网络训练的模型,在物体识别问题上同样达到了很高的性能。对两者的精确比较存在很多困难。


作者用扩展的核分析技术对深度神经网络和IT皮层进行了比较。这种技术将模型的泛化误差作为表示复杂度的函数。分析结果表明,深度神经网络在视觉目标识别任务上的的性能可以得到大脑IT皮层的表示能力。


640?wx_fmt=jpeg

神经网络与视觉皮层能力的对比


文献[13]也分析了深层神经网络与视觉神经之间的对应关系。他们利用目标驱动的深度学习模型来理解大脑的感觉皮层。具体的思路是用目标驱动的分层卷积神经网络(goal-driven hierarchical convolutional neural networks,简称HCNNs)对高视觉皮层区中单个单元和群体的输出响应进行建模。这种手段建立起了深层神经网络和大脑感知皮层的对应关系,能够帮助我们理解视觉皮层的机理。从另一角度看,也找到了深度神经网络在神经科学上的对应点。下图是神经网络与视觉皮层的结构和功能对比:


640?wx_fmt=jpeg

神经网络与视觉皮层的结构对比


目前对深度神经网络工作机理、理论的研究还不完善,脑科学的研究也还处于比较低级的阶段。相信在未来通过人类不断的努力,能够更清楚的理解大脑的工作机理,也能够设计出功能更强大的神经网络。


参考文献


[1] Y.LeCun, B.Boser, J.S.Denker, D.Henderson, R.E.Howard, W.Hubbard, and L.D.Jackel. Backpropagation applied to handwritten zip code recognition. Neural Computation, 1989.


[2] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Handwritten digit recognition with a back-propagation network. In David Touretzky, editor, Advances in Neural Information Processing Systems 2 (NIPS*89), Denver, CO, 1990, Morgan Kaufman.


[3] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, november 1998.


[4] Alex Krizhevsky, Ilya Sutskever, Geoffrey E.Hinton. ImageNet Classification with Deep Convolutional Neural Networks.


[5] Hubel D. H, T. N. Wiesel. Receptive Fields Of Single Neurones In The Cat's Striate Cortex. Journal of Physiology, (1959) 148, 574-591.


[6] Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks. European Conference on Computer Vision, 2013.


[7] Aravindh Mahendran, Andrea Vedaldi. Understanding Deep Image Representations by Inverting Them. CVPR 2015.


[8] Kurt Hornik. Approximation capabilities of multilayer feedforward networks. 1991, Neural Networks.


[9] Hornik, K., Stinchcombe, M., and White, H. Multilayer feedforward networks are universal approximators. Neural Networks, 2, 359-366, 1989.


[10] Cybenko, G. Approximation by superpositions of a sigmoid function. Mathematics of Control, Signals, and Systems, 2, 303-314, 1989.


[11] Stephane Mallat. Understanding deep convolutional networks. 2016, Philosophical Transactions of the Royal Society A.


[12] Charles F Cadieu, Ha Hong, Daniel Yamins, Nicolas Pinto, Diego Ardila, Ethan A Solomon, Najib J. Deep Neural Networks Rival the Representation of Primate IT Cortex for Core Visual Object Recognition. 2014, PLOS Computational Biology.


[13] Daniel Yamins, James J Dicarlo. Using goal-driven deep learning models to understand sensory cortex. 2016, Nature Neuroscience.


未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3.2+ 的 concurrent.futures 模块

concurrent.futures 官方文档:https://docs.python.org/3/library/concurrent.futures.html concurrent.futures: 线程池, 并发的处理任务:https://www.h3399.cn/201906/703751.html IO 密集型 vs 计算密集型: IO密集型:读取文件…

C# 判断一字符串是否为合法数字(正则表达式)

代码 ///<summary>///判断一个字符串是否为合法整数(不限制长度) ///</summary>///<param name"s">字符串</param>///<returns></returns>publicstaticboolIsInteger(strings) { stringpattern "…

关于现在人工智能预测的一些冷水

来源&#xff1a;人工智能和大数据 作者&#xff1a;田渊栋最近有关人工智能和深度学习的各种预测满天飞&#xff0c;作为圈内人&#xff0c;我来泼点冷水。我们常说科技树科技树&#xff0c;这个比喻是非常贴切的&#xff0c;现代科技的基础理论并不复杂&#xff0c;做个摘要…

Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )

Windows10下搭建汇编语言开发环境&#xff08;利用DOSBOX和MASM32&#xff09;&#xff1a;https://www.cnblogs.com/zyever/p/7919007.html 如何在win10 64位下搭载汇编环境&#xff08;包含汇编dosbox和masm文件&#xff09;&#xff1a;https://blog.csdn.net/xyisv/articl…

一文解读“边缘计算” 和物联网的亲密关系!

来源&#xff1a;IT技术之家摘要&#xff1a;物联网的最终目标是万物互联&#xff0c;而边缘计算是解决当前云计算所面对的数据传输问题所应用的主要方式&#xff0c;相对于云计算&#xff0c;有更大的优势。物联网的最终目标是万物互联&#xff0c;而当前对于宽带水平来说&…

寄存器 和 存储器

From&#xff1a;https://blog.csdn.net/menshu1892/article/details/79912090 一、计算机硬件 先说内核&#xff1a;内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件&#xff0c;这种访问是有限的&#xff0c;并且内核决定一个程序在什…

博文视点大讲堂36期——让Oracle跑得更快 成功举办

博文视点大讲堂36期——让Oracle跑得更快 成功举办 电子工业出版社博文视点公司于2010年9月日在西单图书大厦成功举办“博文视点大讲堂36期——让Oracle跑得更快”讲座。8月22日&#xff0c;博文视点大讲堂为配合《让Oracle跑得更快—Oracle 10g性能分析与优化思路》的全国热销…

NLP 解决方案是如何被深度学习改写的?

作者&#xff1a;杨晓凡摘要&#xff1a;英特尔人工智能产品事业部&#xff0c;数据科学主任 Yinyin Liu 近日撰写了一篇文章&#xff0c;介绍了深度学习为自然语言处理带来的种种变化。有趣的大趋势是首先产生在 CV 领域的技术也不断用于 NLP&#xff0c;而深度学习解决方案的…

CompletableFuture详解~思维导图

#原图 System.out.println("https://www.processon.com/view/621a1b361e08533fc3afaa44?fromnew1");

如何在SharePoint 2010项目中引用UserProfiles.dll

如果需要进行SharePoint的UserProfile开发的话&#xff0c;我们需要引用以下程序集&#xff1a; C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Server.UserProfiles.dll在添加引用的时候&#xff0c;Visual Studio 2010会…

汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

From&#xff1a;https://www.cnblogs.com/zimmerk/articles/2520011.html From&#xff1a;https://blog.csdn.net/bjbz_cxy/article/details/79467688 汇编寄存器功能详解&#xff1a;https://wenku.baidu.com/view/14ef15857cd184254a353586.html 寄存器、汇编命令详解&am…

斯坦福大学科学家研发微型植入式神经刺激器

来源&#xff1a;IEEE电气电子工程师协会实现使用可读生命体征传感器和可控制的植入器来装备我们的身体&#xff0c;就仿佛科幻小说中描述的一般&#xff0c;而事实上&#xff0c;这远比你想象中的要更接近现实。斯坦福大学最近研发出一款微型植入式神经刺激器&#xff0c;只有…

PPT演示力~思维导图

#原图 System.out.println("https://www.processon.com/view/6222dcb1e0b34d07287d09c6?fromnew1");

靠云计算翻身的微软正在“挑衅”亚马逊AWS

来源&#xff1a;第一财经摘要&#xff1a;凭借云计算业务“回春”的老牌科技企业微软还在继续享受转型的福利。微软最新发布的财报显示&#xff0c;云计算业务依然是公司目前业务最大的功臣。北京时间4月27日&#xff0c;微软发布的2018财年第三季度财报显示&#xff0c;在截止…

证书有效性验证、根证书

来源&#xff1a;证书有效性验证、根证书 - 程序员大本营 一、 数字证书的有效性验证主要从三个方面&#xff1a; &#xff08;1&#xff09;数字证书有效期验证 &#xff08;2&#xff09;根证书验证 &#xff08;3&#xff09;CRL验证 1、数字证书有效期验证…

BAT全球扩张AI路线图:百度早于谷歌,腾讯投资最多

来源&#xff1a;网络大数据CB Insights的最新报告挖掘BAT的AI相关专利记录、投资和收益等&#xff0c;全方位描绘了BAT的AI策略。报告显示&#xff0c;百度在AI领域处于领先地位。BAT分别着重自动驾驶、智慧城市和医疗AI&#xff0c;在政府的大力支持下&#xff0c;BAT正在向全…

汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

参考&#xff1a;http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽)&#xff1a;https://wenku.baidu.com/view/a1cd7c6c1fb91a37f111f18583d049649b660ede.html 一。将下面的程序编译连接&#xff0c;用Debug加载、跟踪&#xff0c;然后回答问…

RestTemplate 最详解

目录 RestTemplate 简单使用 创建 RestTemplate接口调用一些其他设置简单总结公众号推荐在项目中&#xff0c;当我们需要远程调用一个 HTTP 接口时&#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下&#xf…

Gartner预计2018年全球人工智能商业价值将达到1.2万亿美元

来源&#xff1a;亿欧根据全球领先的信息技术研究与顾问公司Gartner的预测&#xff0c;人工智能&#xff08;AI&#xff09;产生的全球商业价值预计将在2018年达到1.2万亿美元&#xff0c;比2017年增长70%。此外&#xff0c;Gartner预计到2022年&#xff0c;人工智能衍生的商业…

王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)

问题 7.9&#xff1a; 将 datasg 段中前 4 个字母变成大写 汇编代码&#xff1a; assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0,0,0,0,0 stacksg endsdatasg segmentdb 1. display db 2. brows db 3. replace db 4. modify datas…