• [基础知识] 【MindSpore易点通】深度学习系列-卷积神经网络
    小Mi前天一不留意瞄了眼公众号,发现竟然已经有了YOLOv7,顿时感觉自己落后的不是一星半点,印象中还是YOLOv5来着,怎么大伙的科研速度跟火箭有的一拼?吓得小Mi赶紧补功课。废话不多说(是不是还是熟悉的配方),今天开始先跟大家从CNN开始复习吧~鼻祖来了好了,首先详细解释下,为什么要先从CNN 开始复习呢?因为我们常见的很多网络,比如LeNet、Alexnet、VGG、RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD等等这些网络模型的鼻祖就是CNN,只不过后面的各个儿子孙子如神仙打架一般,在各自的领域发挥着自身的优势,比如Lenet、Alexnet、Googlenet、VGG主要面向图像分类任务,RCNN、fastRCNN、fasterRCNN等作为目标检测任务的算法,而YOLO、SSD、YOLOv2又是不同于RCNN系列的另一类目标检测算法。所以是不是鼻祖很重要呢!(鼻祖的创始人Yann LeCun是第一个通过卷积神经网络在MNIST数据集上解决手写数字问题的人。)网络结构在这之前,小Mi已经在之前的深度学习系列中对深度神经网络有过简单的介绍(https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=171590),卷积神经网络结构包括:输入层Input layer、卷积层Convolution Layer、池化层Pooling layer、全连接层Full connection Layer和输出层Output Layer。输入层该层要做的处理主要是对原始图像数据进行预处理,比如去均值、归一化、PCA降维等等。卷积层好啦,为什么我们这个网络要叫卷积神经网络呢?那么重点就来了。首先让我们以最常见的二维卷积层为例,看下卷积层是如何工作的吧~在二维卷积层中,一个二维输入数组和一个二维核(kernel)数组通过互相关运算输出一个二维数组。如图所示,输⼊是一个3×3的二维数组,卷积核是一个2×2的二维数组。二维互相关运算输出结果中数字19的计算公式为:0×0+1×1+3×2+4×3=19在二维互相关运算中,卷积窗口从输⼊数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并求和,得到输出数组中相应位置的元素。那么剩下的三个元素计算公式为:1×0+2×1+4×2+5×3=25,3×0+4×1+6×2+7×3=37,4×0+5×1+7×2+8×3=43。二维卷积层输出的二维数组可以看作是输入在空间维度(宽和高)上某⼀级的表征,也叫特征图(feature map)。影响元素x的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做x的感受野(receptive field)。以上图为例,输入中阴影部分的四个元素是输出中阴影部分元素的感受野。将输出记为Y,如果Y与另一个形状为2×2的核数组做互相关运算,输出单个元素 z。那么,z在Y上的感受野包括Y的全部四个元素,在输入上的感受野包括其中全部9个元素。可见,可以通过更深的卷积神经网络使特征图中单个元素的感受野变得更加⼴阔,从而捕捉输入上更大尺寸的特征。因此卷积层的输出形状由输入形状和卷积核窗口形状决定,其中最重要的两个超参数便是填充和步幅了。填充(padding)是指在输入高和宽的两侧填充元素(通常是为0)。下图中在原输入高和宽的两侧分别添加了0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。在输入的高和宽两侧分别填充了0元素的二维互相关计算而卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动,每次滑动的行数和列数就叫做步幅(stride)。在高和宽两个方向上步幅均为1,当然也可以使用更大步幅。比如下图就展示了在高上步幅为3、在宽上步幅为2的二维互相关运算。可以看到,输出第一列第二个元素时,卷积窗口向下滑动了三行。而在输出第一行第二个元素时卷积窗口向右滑动了两列。当卷积窗口在输入上再向右滑动两列时,由于输入元素无法填满窗口,无结果输出。高和宽上步幅分别为3和2的二维互相关运算其实通过各种实验最终我们可以发现,填充可以增加输出的高和宽,可以使得输出与输入具有相同的高和宽,而步幅可以减小输出的高和宽,例如输出的高和宽仅为输入的高和宽的1/n(n为大于1的整数)。当然啦,为什么我们一直强调是二维卷积层呢?输出的结果肯定也会与输入的数组维度有关啦,大家可以自行研究下~池化层池化(pooling)层的提出是为了缓解卷积层对位置的过度敏感性。不同于卷积层里计算输入和核的互相关性,池化层直接计算池化窗口内元素的最大值或者平均值。在最大池化中,池化窗口从输⼊数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当池化窗口滑动到某⼀位置时,窗口中的输入子数组的最大值即输出数组中相应位置的元素。池化窗口形状为2×2的最大池化阴影部分为第⼀个输出元素及其计算所使用的输入元素:max(0, 1, 3, 4) = 4剩下三个元素分别为:max(1, 2, 4, 5) = 5,max(3, 4, 6, 7) = 7,max(4, 5, 7, 8) = 8.那么平均池化的共作原理也就很好理解咯。因此池化操作就是图像的resize,就好比一张狗的图像被缩小了一倍我们还能认出狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征;同时还进行了特征降维,去除了很多无用或重复信息,并在一定程度上防止过拟合,更方便优化。全连接层这里的全连接与我们之前讲到的全连接并没有任何差异,经过池化层处理得到的结果中的所有元素都有权重连接:其中,x1、x2、x3为全连接层的输入,a1、a2、a3为输出,总结当然啦,今天跟大家分享的卷积神经网络都是从最简单的方面逐步介绍的,既然是深度学习网络系列,我们平常遇到的网络可不是只有几个二维数组,一两个卷积层那么简单,CNN在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。希望大家在我的基础上,继续学习开始跟大家提到的各种“子孙”网络吧(LeNet、Alexnet、VGG、RCNN、YOLO等等等等)!
  • [其他] CNN原理
    CNN原理CNN,又称卷积神经网络,是深度学习中重要的一个分支。CNN在很多领域都表现优异,精度和速度比传统计算学习算法高很多。特别是在计算机视觉领域,CNN是解决图像分类、图像检索、物体检测和语义分割的主流模型。1. 卷积如图1所示,图中的X和O无论怎么旋转或者缩放,人眼其实还是很容易识别出X和O。图1但是计算机不同,它看到的其实是一个个的像素阵列,如图2。如何对像素的阵列进行特征的提取其实就是卷积神经网络要干的事情。图2再看图3,我们发现X即使进行了旋转,但是绿、橙、紫框标记的区域在两张图中还是一致的,某种程度上,这其实就是X的特征。图3因此可以将这三个特征的区间提取出来,就形成了三个卷积核,如图4所示。图4既然有了卷积核,那么卷积核是如何进行卷积操作的呢?其实很简单,可以看一下图5,卷积核其实就是拿着这个矩阵在图片的矩阵上一点点的平移,就像扫地一样。每扫到一处地方就可以进行卷积的运算,计算方法很简单,如图5所示,左上角的卷积核扫到绿色框的位置,则卷积核矩阵的数字就和扫到的位置的矩阵的数字一一对应相乘然后相加,最后取一个均值,该值就是卷积核提取的特征。图5卷积核提取的所有的特征组成了一个长和宽变小的矩阵,这个矩阵又称为feature map,如图6。使用不同的卷积核也就能提取出不同的feature map。所以可以想象的是,如果不断的进行卷积操作,那么图片的矩阵会逐步地长宽减少,厚度增加。图6可以看到卷积操作通过卷积核是可以分别提取到图片的特征的,但是如何提前知道卷积核呢?像上文的例子,很容易可以找到3个卷积核,但是假如是人脸识别这样成千上万个特征的图片,就没办法提前知道什么是合适的卷积核。其实也没必要知道,因为选择什么样的卷积核,完全可以通过训练不断优化。初始时只需要随机设置一些卷积核,通过训练,模型其实自己可以学习到合适的卷积核,这也是卷积神经网络模型强大的地方。
  • [其他] 卷积神经网络简介与Python实现卷积神经网络
    卷积神经网络Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN。CNN是一种特殊的多层神经网络,用于处理具有明显网格状拓扑的数据。其网络的基础基于称为卷积的数学运算。卷积神经网络(CNN)的类型以下是一些不同类型的CNN:    1D CNN:1D CNN 的输入和输出数据是二维的。一维CNN大多用于时间序列。    2D CNNN:2D CNN的输入和输出数据是三维的。我们通常将其用于图像数据问题。    3D CNNN:3D CNN的输入和输出数据是四维的。一般在3D图像上使用3D CNN,例如MRI(磁共振成像),CT扫描(甲CT扫描或计算机断层扫描(以前称为计算机轴向断层或CAT扫描)是一种医学成像 技术中使用的放射学获得用于非侵入性详述的身体的图像诊断的目的)和其他复杂应用程序的DICOM图像(医学数字成像)网络架构以下是CNN中不同层的网络架构:    卷积层    池化层    全连接层Python实现卷积神经网络环境Google Colab导入所有必需的库import numpy as npimport pandas as pdfrom keras.optimizers import SGDfrom keras.datasets import cifar10from keras.models import Sequentialfrom keras.utils import np_utils as utilsfrom keras.layers import Dropout, Dense, Flattenfrom keras.layers.convolutional import Conv2D, MaxPooling2D加载cifar10数据:(X, y), (X_test, y_test) = cifar10.load_data()# 规范化数据X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0转换为分类:y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)初始化模型:model = Sequential()使用以下参数添加卷积层:    Features map  = 32    内核大小= 3x3    输入形状= 32x32    Channels = 3    Padding = 3→表示与输入相同的尺寸输出model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))# Dropoutmodel.add(Dropout(0.2))# 添加另一个卷积层 padding ='valid'表示输出尺寸可以采用任何形式model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid'))# 添加一个最大池化层model.add(MaxPooling2D(pool_size =(2,2)))# 展平model.add(Flatten())# Dense层 隐藏单元数为521model.add(Dense(512, activation='relu'))# Dropoutmodel.add(Dropout(0.3))#output model.add(Dense(10, activation='softmax'))# 编译模型 激活器选择SGDmodel.compile(loss='categorical_crossentropy',             optimizer=SGD(momentum=0.5, decay=0.0004), metrics=['accuracy'])25个epochsmodel.fit(X, y, validation_data=(X_test, y_test), epochs=25,          batch_size=512)卷积神经网络是一种特殊的多层神经网络,主要用于提取特征。CNN使用称为卷积和池化的两个操作将图像缩小为其基本特征,并使用这些特征适当地理解和分类图像
  • [技术干货] 卷积神经网络
    卷积神经网络的输入层可以处理多维数据,常见地,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组 。由于卷积神经网络在计算机视觉领域应用较广,因此许多研究在介绍其结构时预先假设了三维输入数据,即平面上的二维像素点和RGB通道。相对于全连接神经网络,它的卷积池化层,在保证提取有效特征的基础上,大大减少了网络的参数
  • [其他] 三元卷积神经网络内存内运算加速芯片
    内存是各种计算机系统中存储数据不可或缺的硬件单元,但现在新一代的智慧内存有更多的应用,可以存储数据,并进行庞大的数据运算,能如人脑一般结合存储与运算于一体,这样的内存内运算(in-memory computing)架构模仿人脑神经网络的架构,是未来实现高性能、低耗电人工智能的希望所在。 今年的IEEE亚洲固态电路会议(IEEE A-SSCC)中,阳明交大与工研院电光系统所团队共同合作,以商用化的28纳米制程技术,发布目前全世界最高能效的三元卷积神经网络(ternary CNN)内存内运算加速芯片。 全世界最高能效的三元卷积神经网络内存内运算加速芯片。 三元卷积神经网络内存内运算加速芯片,每瓦功耗每秒可进行超过两万万亿次的运算(20943 TOPS/W),较过去的技术大幅提升3.7倍,面积使用效率也提升4.5倍,树立全新的内存内运算性能里程碑。 通过跨层级共同设计技术,三元卷积神经网络内存内运算加速芯片,克服内存内运算中存在的计算误差,展示极低耗电且高准确的语音关键字识别能力,目前与工研院的团队正积极将该技术导入商业用“即呼即醒”的智慧蓝牙耳机中。
  • [行业动态] 三元卷积神经网络内存内运算加速芯片
    内存是各种计算机系统中存储数据不可或缺的硬件单元,但现在新一代的智慧内存有更多的应用,可以存储数据,并进行庞大的数据运算,能如人脑一般结合存储与运算于一体,这样的内存内运算(in-memory computing)架构模仿人脑神经网络的架构,是未来实现高性能、低耗电人工智能的希望所在。 今年的IEEE亚洲固态电路会议(IEEE A-SSCC)中,阳明交大与工研院电光系统所团队共同合作,以商用化的28纳米制程技术,发布目前全世界最高能效的三元卷积神经网络(ternary CNN)内存内运算加速芯片。 全世界最高能效的三元卷积神经网络内存内运算加速芯片。 三元卷积神经网络内存内运算加速芯片,每瓦功耗每秒可进行超过两万万亿次的运算(20943 TOPS/W),较过去的技术大幅提升3.7倍,面积使用效率也提升4.5倍,树立全新的内存内运算性能里程碑。 通过跨层级共同设计技术,三元卷积神经网络内存内运算加速芯片,克服内存内运算中存在的计算误差,展示极低耗电且高准确的语音关键字识别能力,目前与工研院的团队正积极将该技术导入商业用“即呼即醒”的智慧蓝牙耳机中。
  • [其他] 卷积神经网络压缩中的知识蒸馏技术综述
    近年来,卷积神经网络(CNN)凭借强大的特征提取和表达能力,在图像分析领域的诸多应用中取得了令人瞩目的成就。但是,CNN性能的不断提升几乎完全得益于网络模型的越来越深和越来越大,在这个情况下,部署完整的CNN往往需要巨大的内存开销和高性能的计算单元(如GPU)支撑,而在计算资源受限的嵌入式设备以及高实时要求的移动终端上,CNN的广泛应用存在局限性。因此,CNN迫切需要网络轻量化。目前解决以上难题的网络压缩和加速途径主要有知识蒸馏、网络剪枝、参数量化、低秩分解、轻量化网络设计等。首先介绍了卷积神经网络的基本结构和发展历程,简述和对比了五种典型的网络压缩基本方法;然后重点针对知识蒸馏方法进行了详细的梳理与总结,并在CIFAR数据集上对不同方法进行了实验对比;其后介绍了知识蒸馏方法目前的评价体系,给出多类型方法的对比分析和评价;最后对该技术未来的拓展研究给出了初步的思考。http://fcst.ceaj.org/CN/abstract/abstract2907.shtml
  • [其他] 理论-非监督学习(unsupervised learning)
    非监督学习(unsupervised learning)卷积神经网络最初是面向监督学习问题设计的,但其也发展出了非监督学习范式  ,包括卷积自编码器(Convolutional AutoEncoders, CAE) [47]  、卷积受限玻尔兹曼机(Convolutional Restricted Boltzmann Machines, CRBM)/卷积深度置信网络(Convolutional Deep Belief Networks, CDBN)  和深度卷积生成对抗网络(Deep Convolutional Generative Adversarial Networks, DCGAN) 。这些算法也可以视为在非监督学习算法的原始版本中引入卷积神经网络构筑的混合算法。CAE的构建逻辑与传统AE类似,首先使用卷积层和池化层建立常规的卷积神经网络作为编码器,随后使用反卷积和向上池化(up-pooling)作为解码器,以样本编码前后的误差进行学习,并输出编码器的编码结果实现对样本的维度消减(dimentionality reduction)和聚类(clustering)。在图像识别问题,例如MNIST中,CAE与其编码器同样结构的卷积神经网络在大样本时表现相当,但在小样本问题中具有更好的识别效果。CRBM是以卷积层作为隐含层的受限玻尔兹曼机(Boltzmann Machines, RBM),在传统RBMs的基础上将隐含层分为多个“组(group)”,每个组包含一个卷积核,卷积核参数由该组对应的所有二元节点共享。CDBN是以CRBM作为构筑进行堆叠得到的阶层式生成模型,为了在结构中提取高阶特征,CDBN加入了概率极大池化层( probabilistic max-pooling layer),和其对应的能量函数。CRBMs和CDBMs使用逐层贪婪算法(greedy layer-wise training)进行学习 [50]  ,并可以使用稀疏正则化(sparsity regularization)技术。在Caltech-101数据的物体识别问题中,一个24-100的两层CDBN识别准确率持平或超过了很多包含高度特化特征的分类和聚类算法。生成对抗网络( Generative Adversarial Networks, GAN)可被用于卷积神经网络的非监督学习,DCGAN从一组概率分布,即潜空间(latent space)中随机采样,并将信号输入一组完全由转置卷积核组成的生成器;生成器生成图像后输入以卷积神经网络构成的判别模型,判别模型判断生成图像是否是真实的学习样本。当生成模型能够使判别模型无法判断其生成图像与学习样本的区别时学习结束。研究表明DCGANs能够在图像处理问题中提取输入图像的高阶层表征,在CIFAR-10数据的试验中,对DCGAN判别模型的特征进行处理后做为其它算法的输入,能以很高的准确率对图像进行分类 。优化正则化(regularization)参见:正则化在神经网络算法的各类正则化方法都可以用于卷积神经网络以防止过度拟合,常见的正则化方法包括Lp正则化(Lp-norm regularization)、随机失活(spatial dropout)和随机连接失活(drop connect)。Lp正则化在定义损失函数时加入隐含层参数以约束神经网络的复杂度:式中为损失函数,包含弗罗贝尼乌斯范数(Frobenius norm)的求和项被称为正则化项,其中是正则化参数,用以确定正则化项的约束力。可证明,当时,正则化项是凸函数(convex function) [51]  ;特别地,当时,L2正则化又被成为Tikhonov正则化(Tikhonov regularization)。时的Lp正则化有利于卷积核权重的稀疏化,但此时的正则化向不是凸函数 。卷积神经网络中的空间随机失活(spatial dropout)是前馈神经网络中随机失活理论的推广。在全连接网络的学习中,随机失活会随机将神经元的输出归零,而空间随机失活在迭代中会随机选取特征图的通道使其归零。进一步地,随机连接失活直接作用于卷积核,在迭代中使卷积核的部分权重归零。研究表明空间随机失活和随机连接失活提升了卷积神经网络的泛化能力,在学习样本不足时有利于提升学习表现。分批归一化(Batch Normalization, BN)数据的标准化是神经网络输入管道中预处理的常见步骤,但在深度网络中,随着输入数据在隐含层内的逐级传递,其均值和标准差会发生改变,产生协变漂移(covariate shift)现象。协变漂移被认为是深度网络发生梯度消失(vanishing gradient)的原因之一。BN以引入额外学习参数为代价部分解决了此类问题,其策略是在隐含层中首先将特征标准化,然后使用两个线性参数将标准化的特征放大作为新的输入,神经网络会在学习过程中更新其BN参数。卷积神经网络中的BN参数与卷积核参数具有相同的性质,即特征图中同一个通道的像素共享一组BN参数。此外使用BN时卷积层不需要偏差项,其功能由BN参数代替。包含跳跃连接的残差块包含跳跃连接的残差块跳跃连接(skip connection)跳跃连接或短路连接(shortcut connection)来源于循环神经网络(Recurrent Neural Network, RNN)中的跳跃连接和各类门控算法,是被用于缓解深度结构中梯度消失问题的技术。卷积神经网络中的跳跃连接可以跨越任意数量的隐含层 ,这里以相邻隐含层间的跳跃进行说明:式中是特征图的转换系数,当和的尺寸不同时,转换系数将尺寸更小的特征图,通常是转换为的尺寸,确保矩阵元素运算成立。当的输出值小而的输出值大时,卷积层的输出近似于等值函数,对该层的特征传递没有负面影响,因此设定了层的学习基线,使该层在迭代中至少不会退化。在BP框架内,部分误差在反向传播时可以跳过层直接作用于层,补偿了其在深度结构中逐级传播造成的梯度损失,因此有利于深度结构的误差传播。包含跳跃连接的多个卷积层的组合被称为残差块(residual block),是一些卷积神经网络算法,例如ResNet的构筑单元。加速通用加速技术卷积神经网络可以使用和其它深度学习算法类似的加速技术以提升运行效率,包括量化(quantization)、迁移学习(transfer learning)等 [2]  。量化即在计算中使用低数值精度以提升计算速度,该技术在一些深度算法中有得到尝试。对于卷积神经网络,一个极端的例子是XNOR-Net,即仅由异或门(XNOR)搭建的卷积神经网络 。迁移学习一般性的策略是将非标签数据迁移至标签数据以提升神经网络的表现,卷积神经网络中迁移学习通常为使用在标签数据下完成学习的卷积核权重初始化新的卷积神经网络,对非标签数据进行迁移,或应用于其它标签数据以缩短学习过程 。FFT卷积卷积神经网络的卷积和池化计算都可以通过FFT转换至频率域内进行,此时卷积核权重与BP算法中梯度的FFT能够被重复利用,逆FFT也只需在输出结果时使用,降低了计算复杂度 。此外,作为应用较广的科学和工程数值计算方法,一些数值计算工具包含了GPU设备的FFT,能提供进一步加速 。FFT卷积在处理小尺寸的卷积核时可使用Winograd算法降低内存开销。权重稀疏化在卷积神经网络中对权重进行稀疏化,能够减少卷积核的冗余,降低计算复杂度,使用该技术的构筑被称为稀疏卷积神经网络(Sparse Convolutional Neural Networks) 。在对ImageNet数据的学习中,一个以90%比率稀疏化的卷积神经网络的运行速度是同结构传统卷积神经网络的2至10倍,而输出的分类精度仅损失了2% 。
  • [其他] CNN卷积神经网络的历史
    对卷积神经网络的研究可追溯至日本学者福岛邦彦(Kunihiko Fukushima)提出的neocognitron模型。在其1979   和1980年  发表的论文中,福岛仿造生物的视觉皮层(visual cortex)设计了以“neocognitron”命名的神经网络。neocognitron是一个具有深度结构的神经网络,并且是最早被提出的深度学习算法之一   ,其隐含层由S层(Simple-layer)和C层(Complex-layer)交替构成。其中S层单元在感受野(receptive field)内对图像特征进行提取,C层单元接收和响应不同感受野返回的相同特征  。neocognitron的S层-C层组合能够进行特征提取和筛选,部分实现了卷积神经网络中卷积层(convolution layer)和池化层(pooling layer)的功能,被认为是启发了卷积神经网络的开创性研究   。第一个卷积神经网络是1987年由Alexander Waibel等提出的时间延迟网络(Time Delay Neural Network, TDNN)   。TDNN是一个应用于语音识别问题的卷积神经网络,使用FFT预处理的语音信号作为输入,其隐含层由2个一维卷积核组成,以提取频率域上的平移不变特征  。由于在TDNN出现之前,人工智能领域在反向传播算法(Back-Propagation, BP)的研究中取得了突破性进展 ,因此TDNN得以使用BP框架内进行学习。在原作者的比较试验中,TDNN的表现超过了同等条件下的隐马尔可夫模型(Hidden Markov Model, HMM),而后者是二十世纪80年代语音识别的主流算法   。1988年,Wei Zhang提出了第一个二维卷积神经网络:平移不变人工神经网络(SIANN),并将其应用于检测医学影像   。独立于Zhang (1988),Yann LeCun在1989年同样构建了应用于计算机视觉问题的卷积神经网络,即LeNet的最初版本。LeNet包含两个卷积层,2个全连接层,共计6万个学习参数,规模远超TDNN和SIANN,且在结构上与现代的卷积神经网络十分接近 [11]  。LeCun (1989)   对权重进行随机初始化后使用了随机梯度下降(Stochastic Gradient Descent, SGD)进行学习,这一策略被其后的深度学习研究所保留。此外,LeCun (1989)在论述其网络结构时首次使用了“卷积”一词   ,“卷积神经网络”也因此得名。LeCun (1989)的工作在1993年由贝尔实验室(AT&T Bell Laboratories)完成代码开发并被部署于NCR(National Cash Register Coporation)的支票读取系统 。但总体而言,由于数值计算能力有限、学习样本不足,加上同一时期以支持向量机(Support Vector Machine, SVM)为代表的核学习(kernel learning)方法的兴起,这一时期为各类图像处理问题设计的卷积神经网络停留在了研究阶段,应用端的推广较少  。在LeNet的基础上,1998年Yann LeCun及其合作者构建了更加完备的卷积神经网络LeNet-5并在手写数字的识别问题中取得成功   。LeNet-5沿用了LeCun (1989) 的学习策略并在原有设计中加入了池化层对输入特征进行筛选。LeNet-5及其后产生的变体定义了现代卷积神经网络的基本结构,其构筑中交替出现的卷积层-池化层被认为能够提取输入图像的平移不变特征。LeNet-5的成功使卷积神经网络的应用得到关注,微软在2003年使用卷积神经网络开发了光学字符读取(Optical Character Recognition, OCR)系统。其它基于卷积神经网络的应用研究也得到展开,包括人像识别、手势识别等。在2006年深度学习理论被提出后,卷积神经网络的表征学习能力得到了关注,并随着数值计算设备的更新得到发展。自2012年的AlexNet开始,得到GPU计算集群支持的复杂卷积神经网络多次成为ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)的优胜算法,包括2013年的ZFNet、2014年的VGGNet、GoogLeNet [24]  和2015年的ResNet。
  • [其他] 卷积神经网络在CR中的频谱感知方面的相关应用
    频谱感知是CR理论的重要组成部分,首先要解决的是CR中的基本问题(Fundamental Problem in CR)。主用户在认知系统中具有绝对的优先级,从用户的频谱感知上需要高度的可靠性。但是,由于多径效应和阴影衰落等信道因素,传感器接收到的信号强度会降低。此外,来自用户的噪声和其他干扰的不确定性也会限制感知的鲁棒性。 [] 因此,可靠、准确的频谱感知技术一直是CR研究领域的热点。CNN广泛应用于图像识别和语音识别,具有良好的分类性能。使用CNN解决频谱感知可以看作是一个双重假设检验问题。张等人。在进行波形识别时,使用二维时频图表征各种信号,然后进行信号识别。但是,成像的原始信号不可避免地会丢失一些信息,从而影响分类结果。基于能量和循环平稳特征,Tang 等人。前面讨论了多层神经网络的频谱感知算法。韩等人。在此基础上引入了CNN模型,在-20dB范围内具有比循环平稳特征检测(CFD)更好的性能。 ) 更高的检测概率。刘等人。提出了一种基于已知足够的 PU 信号帧结构信息的对抗训练数据库的 CNN,旨在实现具有严重噪声污染和信道衰落的频谱感知。缺点是循环平稳值和帧结构信息是基于 PU 的先验知识,这在实践中并不总是可用的。因此,这些方法容易受到建模不确定性的影响。此外,样本数量与检测性能呈正相关。然而,随着接收信号长度的增加,这可能导致感测时间和复杂度的进一步增加。必须找到传感时间和性能检测之间的平衡,以降低这种叠加的复杂性,这对于计算能力严格受限的设备尤其重要。由于每个从用户所处的网络环境不同,信道条件不同,在协同感知系统(CSS)中,用户之间共享感知信息,融合中心对各个节点的感知信息进行联合判断,对可用频道进行联合决策。均匀分布提高了感知精度,降低了对单个节点感知能力的要求。比较常见的数据融合方法是集中式硬融合方法中的“或”准则、“与”准则和“K秩”准则。 Do等人提出的基于CNN的联合频谱感知技术f X91,融合中心利用记录的历史决策数据训练CNN模型做出决策。其性能优于上述几种硬判决方法,控制信道开销小于软判决。判断;但没有对不同空间位置的阴影衰落、路径损耗和多径衰落指数进行专门研究和判断,没有充分发挥协同感知的优势。李等人。开发了 Do 等人的工作。弥补这一问题,拓宽输入矩阵的维度,丰富数据集的有效特征;验证节点能量感知加CNN数据融合的深度感知模型在节点位置时变场景中的可行性。
  • [其他] 卷积神经网络在CR中的​资源分配方面的相关应用
    由于CNN对大量完备标记的训练数据的依赖,使得其在资源分配中的应用形式还不够灵活。近年来,更多的实验倾向于将强化学习引人到CR的资源分配中,强化学习理论中的一个称为回报函数的基本概念也与资源分配的效用最大化理念相契合”。经典的强化学习的缺陷是用表格来存储每一个状态和在这个每个行为的Q值。而当状态空间和动作空间较大时(如多用户和大带宽的资源分配)。如果全用表格来存储它们,将有较大的内存和网格搜索压力.DRN是强化学习和深度学习技术的结合,而其中(Deep Q Network, DQN)是CNN和Q-Learning的结合,CNN的输人是原始多维矩阵数据,输出是每个决策所对应的价值评估(Q值)。通过神经网络分析后得到动作的Q值,省去了在表格中记录Q值。已经有研究将DQN应用于动态资源分配;缺陷是它需要通过反复迭代与环境进行大量的交互,从而又导致较大的功耗和传输延迟。针对DQN的随机经验回放,Wang等引人有优先级的经验回放,即让不同的数据拥有不同的优先级,以此加速收敛速度。
  • [其他] 卷积神经网络在CR中的​资源分配方面的相关应用
       CR的主要特征就是能够通过对操作环境的感知而改变发射机参数,侦听频谱中是否有空间容纳非授权用户进行通信,而不干扰该频段执牌用户的正常通信。从广义上讲,“认知无线电”这个术语可以是指实现这一技术口标的各种解决方案.这些解决方案试图以尽可能不影响频谱主用户的方式,将次要用户的信号与主要用户的信号交织(Interweave) ,覆盖(underlay)、重叠(Overlay)在一起,CR设备可以是在以上3种工况下运行。在交织模式下,次用户通过频谱感知寻找空穴进行信号传输。而在谱覆盖模式中,允许非授权用户与执牌用户传输同时同频进行,就像超宽带(Ultra Wide Band,UWB)系统一样。次级无线电通过足够大的带宽传播信号,以确保对主要用户造成的干扰量在可容忍的范围内。因此,引人了干扰温度的概念来确定主接收机的可容忍干扰水平同。如果采用有效的频谱管理和资源分配技术,这种模式可以显著提高频谱利用率。
  • [其他] 卷积神经网络简介
      我们在 2 维上说话。有两个的函数 f(x, y) 和 g(x, y) 。所谓 f 和 g 的卷积就是一个新的函数 c(x, y) 。通过下式得到:  式子的含义是:遍览从负无穷到正无穷的全部 s 和 t 值,把 g 在 (x-s, y-t) 上的值乘以 f 在 (s, t) 上的值之后再“加和”到一起(积分意义上),得到 c 在 (x, y) 上的值。说白了卷积就是一种“加权求和”:以 f 为权,以 (x, y) 为中心,把 g 距离中心 (-s, -t) 位置上的值乘上 f 在 (s, t) 的值,最后加到一起。把卷积公式写成离散形式就更清楚了:  第二个等号成立是因为在这里我们每隔单位长度 1 一采样,和都是 1 。可以令 G 表示一幅 100 x 100 大小的灰度图像。G(x, y) 取值 [0,255] 区间内的整数,是图像在 (x, y) 的灰度值。x 和 y 坐标取 [0, 99] ,其它位置上 G 值全取 0 。令 F 在 s 和 t 取 {-1, 0, 1} 的位置为特定值,其他位置全取 0 。F 可以看作是一个 3 x 3 的网格。如图
  • [其他] 深度学习之卷积神经网络
    目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)中。自然图像有许多统计属性是对转换不变的。例如,猫的照片即使向右边移了一个像素,仍保持猫的照片。CNN通过在图像多个位置共享参数来考虑这个特性。相同的特征(具有相同权重的隐藏单元)在输入的不同位置上计算获得。这意味着无论猫出现在图像中的第 i 列或 i + 1 列,我们都可以使用相同的猫探测器找到猫。参数共享显著降低了CNN模型的参数数量,并显著提高了网络的大小而不需要相应地增加训练数据。它仍然是将领域知识有效地整合到网络架构的最佳范例之一。
  • [问题求助] 关于参数量和计算量
    总结了一下: 参数量是每输出通道对应参数量的累加; 计算量是输出的每点所需计算量的累加,其中计算包括乘加计算(参数为系数的线性代数计算)。 上述参数,在卷积层中即为卷积核中每个cell里的值以及核的阈值。 欢迎指正、给出其他总结等。
总条数:75 到第
上滑加载中