深度神经网络定义(DNN)有哪些的弱点或明显的问题?

一、卷积神经网络要解决的问题

传统的BP神经网络与DNN(深度神经网络)不同层神经元的连接方式是“全连接”,也就是这一次层的一个神经元的输入,会接受上一次每一个神经元的输出,这种方式即为“全连接神经网络”。

这样的连接方式有一个的缺点:因为权值与偏置等参数量大,导致训练收敛十分缓慢。特别是对于图像这样的训练数据,动不动就是数以百万的像素,理论上虽然可以收敛,但你可能得等上N年才有结果,而且它的泛化性也会变差。

二、卷积神经网络的特点

卷积神经网络CNN就是为了解决这个问题而生,它的核心特点有三个

一张图像,我们实际上并不需要让每个神经元都接受整个图片的信息,而是让不同区域的神经元对应一整张图片的不同局部,最后只要再把局部信息整合到一起就可以了。这样就相当于在神经元最初的输入层实现了一次降维

这有点像我们的眼镜,左右眼各负责看到一部分视野,最后只要通过神经把视野整合到一起,我们看到的依旧是一个相对完整的视野

2.2卷积层的权值共享

这可以说是卷积神经网络的最最最重要也是它牛逼之处,刚刚我们说到全连接神经网络最大的问题就是权值参数太多,而卷积神经网络的卷积层,不同神经元的权值是共享的,这使得整个神经网络的参数大大减小,提高了整个网络的训练性能,具体的实现方式我们一会再说

简单理解可以看作是对图像的一次“有损压缩”,因为在实际的训练中,我们并不需要对图像中的每一个细节都进行特征提取和训练,所以池化的作用就是更进一步的信息抽象和特征提取,当然也会减小数据的处理量

三、卷积神经网络核心概念

我们先来来看看所谓的卷积到底是什么

简单认识一下卷积到底是怎么实现特征提取的。假设现在输入一个图片作为x(3x3像素),一个简单的卷积核w=【1,1,1,1,1,1,1,1,1】,b为0,那么这个图像经过一次卷积后,实现的效果如图

这样一个3x3的图像,通过卷积后就被压缩得到一个点“6”,我们就把这个点存储在卷积层的空间里(即 Feature map)。

当然在实际的训练中,卷积核的w与b也是被随机赋值并通过迭代法学出来的。而且在卷积后往往还会跟上一个激励函数如ReLU或Sigmoid。

刚刚我们所说的是最为简化的图像(3x3),而卷积的工作方式,我们理解为“扫描”,加入一个图像是9x9像素,而卷积核理解为一个3x3的方框,那么一次卷积得到一个数字,而步长即为卷积下次移动扫描挪动的步数。

假设stride=1,那么每次就只滑动一个单位,它主要影响卷积对数据扫描的细密程度,步长越大,当然扫描的越粗糙,通常情况下Stride都会取“1”

3.3卷积滤波器与卷积层

卷积滤波器通常由一个卷积核和激励函数构成,一个局部图像经过卷积滤波器提取特征后会形成一个Feature map,该平面上所有的神经元权值共享

池化层是在图像经过卷积处理后的又一次有效特征提取和模糊处理。它和“下采样”实际上是一个意思。为什么要在卷积特征提取过后,还要加入池化层呢?

我们来看下两种不同的卷积过程:

第一种卷积的“stride=2”,一步可以同时完成特征提取和信息压缩,但这样会导致部分有效信息的丢失

那么我们可以采取两步走的战略,先用卷积确保特征提取完整,再用池化层对无效信息进行压缩。这就可以在保证信息处理量减少的同时保留有效特征信息

常见的池化方式有两种,一种叫Max pooling(最大化),一种为Mean pooling(平均),它们都是对前面输入的数据做一次处理,假设我们用的是2X2的Pooling Filter(池化滤波器)

对输入的数据进行一次取最大值处理

对输入的数据进行一次取平均值处理

池化层还有另一个作用就是防止过拟合,想想过拟合的原因就是模型过多开始学习数据中的细节导致其泛化性下降,而这样的处理刚好可以去除掉不怎么重要的细节,帮助模型更好地学习更为抽象的特征

四、参数减少和共享权值

下面我们来看看,CNN到底是以何种方式来完成权值共享的,要知道这可是它最大的卖点啊!

没有对比就没有伤害,不妨先来看看全连接的神经网络处理图像时候的一番景象!

这密密麻麻交错纵横的连接线,还仅仅是连接到隐含层的一个神经元,连接次数已经红字标出,不要太多。

2.“局部野”神经网络效果图

先声明本身是没有这个什么“局部野”神经网络的,只不过为了能更好地一步一步去理解我们先前说的概念

发现了没,通过不同神经元去接受局部图像的信息,这样它们明显不会有那么多的权值参数了!但这还不够

如果我们在这个基础上,加上卷积滤波和激励函数的处理,最后会得到一层Feature map,在这个层中神经元之间的权值参数将会共享,完全一致哦

到这里你应该已经体会到卷积神经网络思想的核心所在:通过局部感受野、卷积层权值共享的方法,大大降低了网络参数的数量,减小网络的空间复杂程度。这就解决了我们最开始引出的问题,面对图像这样数以百万像素维度的数据,全连接神经网络无法有效对其进行处理,而卷积神经网络则刚好是对症下药!

当然在整个神经网络的宏观结构上,不同局部对应不同的卷积滤波器,以提取不同的特征。

 五、CNN网络架构及训练过程

可以看出来,这是一个识别字母的神经网络(大写的“A”有木有)

首先经过一次卷积滤波处理,得到了C1(卷积层 Feature map),然后又经过了一次下采样(池化)处理得到了S2(下采样层),之后又是一次卷积滤波得到C3卷积层,依次处理至途中的C5位全连接层,至此卷积的过程结束,被抽象的特征输入至传统的全连接神经网络,之后就又是熟悉的节奏了。

2.训练过程(有监督学习)

选取训练样本(x,y),将x输入网络中

随机初始化权值(一般情况下选取小数),信息从输入层经过一层一层的特征提取和转换,最后到达输出层,得到输出结果

输出结果与理想结果对比,计算全局性误差(即我们之前说的Loss)

得到的误差反向传递给不同层的神经元,按照我们之前所说的“迭代法”调整权值和偏重,寻找全局性最优的结果

 六、卷积神经网络的应用特点

卷积神经网络目前最广泛的应用场景为图像识别领域,其中一个原因就是我们最初提到的,权值共享使得网络在处理图像的时候大大减少了参数数量,使得网络的训练速度更快。

当然最重要的还不止于此,我们都知道图像识别一个很大的问题就是如果图像中有一些损坏、缺失或变形的话,那么很可能干扰图像的识别结果。

卷积神经网络的卷积层和池化层在图像的本质都是提取更为抽象的特征,简单理解就是“模糊化”压缩处理,把一个图像中不那么重要的细节去掉,找到最为重要的特征进行学习。

那么图像中小细节的变化,反应在神经网络中也就是一些特征向量的变化,但这这个变化在卷积和池化处理后,对产生的结果影响几乎是微乎其微的,换句话说在CNN看来,这两张图片几乎就完全是“一张图片”了






  • prefetch ---预先取出数据,加快计算的数据、
    *什么是激活函数?激活函数有哪些?

(1)代码--自己写多层隐藏层

# reshape,二维的数据,矩阵运算了 # prefetch fetch取出来的意思,预先取出来,更快,加快计算速度 # 测试数据,验证模型好坏!每训练50次,取出一批测试数据,进行测试准确率 # 第一层隐含层,多少个神经元:256个神经元,相当于线性方程,矩阵运算批量的计算 # 第二层隐含层,给256个神经元 #第三层,使用第二层数据的输出为数据 # 第三层给,512个神经元 # 输出层,输出几个类别,10分类问题,确定了,输出的类别是10个 # 第一层的连接:矩阵运算 # 第二层的连接,矩阵运算 # 第三层的连接,矩阵预算 # 输出层连接,矩阵运算,softmax概率问题 # 优化算法,梯度下降 # 学习率,太小,学的太慢!
执行次数:10。准确率是:0.1348
执行次数:20。准确率是:0.1191
执行次数:30。准确率是:0.1133
执行次数:40。准确率是:0.1270
执行次数:50。准确率是:0.1152
执行次数:60。准确率是:0.1270
执行次数:70。准确率是:0.1016
执行次数:80。准确率是:0.1328
执行次数:90。准确率是:0.1211
执行次数:100。准确率是:0.1191
执行次数:110。准确率是:0.1406
执行次数:120。准确率是:0.1289
执行次数:130。准确率是:0.1309
执行次数:140。准确率是:0.1348
执行次数:150。准确率是:0.1367
执行次数:160。准确率是:0.1309
执行次数:170。准确率是:0.1191
执行次数:180。准确率是:0.1113
执行次数:190。准确率是:0.1250
执行次数:200。准确率是:0.1191
执行次数:210。准确率是:0.1309
执行次数:220。准确率是:0.1348
执行次数:230。准确率是:0.1191
执行次数:240。准确率是:0.1074
执行次数:250。准确率是:0.1035
执行次数:260。准确率是:0.1328
执行次数:270。准确率是:0.1250
执行次数:280。准确率是:0.1035
执行次数:290。准确率是:0.1348
执行次数:300。准确率是:0.1211
执行次数:310。准确率是:0.1367
执行次数:320。准确率是:0.1426
执行次数:330。准确率是:0.1309
执行次数:340。准确率是:0.1426
执行次数:350。准确率是:0.1973
执行次数:360。准确率是:0.2012
执行次数:370。准确率是:0.2129
执行次数:380。准确率是:0.2285
执行次数:390。准确率是:0.2461
执行次数:400。准确率是:0.3496
执行次数:410。准确率是:0.4570
执行次数:420。准确率是:0.3867
执行次数:430。准确率是:0.4336
执行次数:440。准确率是:0.5566
执行次数:450。准确率是:0.5293
执行次数:460。准确率是:0.5938
执行次数:470。准确率是:0.5664
执行次数:480。准确率是:0.6406
执行次数:490。准确率是:0.5977
执行次数:500。准确率是:0.5488
执行次数:510。准确率是:0.6602
执行次数:520。准确率是:0.5996
执行次数:530。准确率是:0.7031
执行次数:540。准确率是:0.7227
执行次数:550。准确率是:0.7520
执行次数:560。准确率是:0.7246
执行次数:570。准确率是:0.8223
执行次数:580。准确率是:0.8047
执行次数:590。准确率是:0.8301
执行次数:600。准确率是:0.8105
执行次数:610。准确率是:0.7988
执行次数:620。准确率是:0.8633
执行次数:630。准确率是:0.8047
执行次数:640。准确率是:0.8594
执行次数:650。准确率是:0.8516
执行次数:660。准确率是:0.8594
执行次数:670。准确率是:0.8887
执行次数:680。准确率是:0.8594
执行次数:690。准确率是:0.8555
执行次数:700。准确率是:0.8848
执行次数:710。准确率是:0.8789
执行次数:720。准确率是:0.8574
执行次数:730。准确率是:0.8848
执行次数:740。准确率是:0.9023
执行次数:750。准确率是:0.8711
执行次数:760。准确率是:0.8945
执行次数:770。准确率是:0.8242
执行次数:780。准确率是:0.8887
执行次数:790。准确率是:0.8906
执行次数:800。准确率是:0.8945
执行次数:810。准确率是:0.9023
执行次数:820。准确率是:0.8984
执行次数:830。准确率是:0.9102
执行次数:840。准确率是:0.9160
执行次数:850。准确率是:0.8906
执行次数:860。准确率是:0.9141
执行次数:870。准确率是:0.9277
执行次数:880。准确率是:0.9023
执行次数:890。准确率是:0.9141
执行次数:900。准确率是:0.9180
执行次数:910。准确率是:0.9258
执行次数:920。准确率是:0.9238
执行次数:930。准确率是:0.9277
执行次数:940。准确率是:0.9297
执行次数:950。准确率是:0.9336
执行次数:960。准确率是:0.9199
执行次数:970。准确率是:0.9277
执行次数:980。准确率是:0.9336
执行次数:990。准确率是:0.9336
执行次数:1000。准确率是:0.9199
# model 模型--就是算法数学的公式,深度神经网络,3层的隐含层 # reshape,二维的数据,矩阵运算了 # prefetch fetch取出来的意思,预先取出来,更快,加快计算速度 # 测试数据,验证模型好坏!每训练50次,取出一批测试数据,进行测试准确率 # layers 会自动的帮助我们写出变量 # 变量是对应神经元的数量 # dnn可以直接获取到系数--dnn为我们声明好的
执行次数:10。准确率是:0.5723
执行次数:20。准确率是:0.6660
执行次数:30。准确率是:0.7402
执行次数:40。准确率是:0.7422
执行次数:50。准确率是:0.7422
执行次数:60。准确率是:0.8496
执行次数:70。准确率是:0.7910
执行次数:80。准确率是:0.8496
执行次数:90。准确率是:0.8691
执行次数:100。准确率是:0.8535
执行次数:110。准确率是:0.8750
执行次数:120。准确率是:0.8652
执行次数:130。准确率是:0.8809
执行次数:140。准确率是:0.8359
执行次数:150。准确率是:0.8906
执行次数:160。准确率是:0.8730
执行次数:170。准确率是:0.8887
执行次数:180。准确率是:0.9043
执行次数:190。准确率是:0.8867
执行次数:200。准确率是:0.8906
执行次数:210。准确率是:0.8848
执行次数:220。准确率是:0.8984
执行次数:230。准确率是:0.9082
执行次数:240。准确率是:0.8945
执行次数:250。准确率是:0.9180
执行次数:260。准确率是:0.9395
执行次数:270。准确率是:0.9180
执行次数:280。准确率是:0.9082
执行次数:290。准确率是:0.9219
执行次数:300。准确率是:0.9141
执行次数:310。准确率是:0.9277
执行次数:320。准确率是:0.9160
执行次数:330。准确率是:0.9141
执行次数:340。准确率是:0.9004
执行次数:350。准确率是:0.9082
执行次数:360。准确率是:0.9121
执行次数:370。准确率是:0.9238
执行次数:380。准确率是:0.9102
执行次数:390。准确率是:0.9238
执行次数:400。准确率是:0.9219
执行次数:410。准确率是:0.9355
执行次数:420。准确率是:0.9141
执行次数:430。准确率是:0.9336
执行次数:440。准确率是:0.9180
执行次数:450。准确率是:0.9336
执行次数:460。准确率是:0.9316
执行次数:470。准确率是:0.9238
执行次数:480。准确率是:0.9395
执行次数:490。准确率是:0.9219
执行次数:500。准确率是:0.9297
执行次数:510。准确率是:0.9355
执行次数:520。准确率是:0.9258
执行次数:530。准确率是:0.9258
执行次数:540。准确率是:0.9297
执行次数:550。准确率是:0.9375
执行次数:560。准确率是:0.9336
执行次数:570。准确率是:0.9238
执行次数:580。准确率是:0.9180
执行次数:590。准确率是:0.9180
执行次数:600。准确率是:0.9297
执行次数:610。准确率是:0.9375
执行次数:620。准确率是:0.9414
执行次数:630。准确率是:0.9375
执行次数:640。准确率是:0.9238
执行次数:650。准确率是:0.9199
执行次数:660。准确率是:0.9355
执行次数:670。准确率是:0.9375
执行次数:680。准确率是:0.9316
执行次数:690。准确率是:0.9570
执行次数:700。准确率是:0.9531
执行次数:710。准确率是:0.9453
执行次数:720。准确率是:0.9395
执行次数:730。准确率是:0.9512
执行次数:740。准确率是:0.9336
执行次数:750。准确率是:0.9512
执行次数:760。准确率是:0.9375
执行次数:770。准确率是:0.9414
执行次数:780。准确率是:0.9453
执行次数:790。准确率是:0.9277
执行次数:800。准确率是:0.9336
执行次数:810。准确率是:0.9414
执行次数:820。准确率是:0.9570
执行次数:830。准确率是:0.9473
执行次数:840。准确率是:0.9609
执行次数:850。准确率是:0.9473
执行次数:860。准确率是:0.9570
执行次数:870。准确率是:0.9414
执行次数:880。准确率是:0.9434
执行次数:890。准确率是:0.9434
执行次数:900。准确率是:0.9629
执行次数:910。准确率是:0.9414
执行次数:920。准确率是:0.9492
执行次数:930。准确率是:0.9473
执行次数:940。准确率是:0.9590
执行次数:950。准确率是:0.9473
执行次数:960。准确率是:0.9492
执行次数:970。准确率是:0.9531
执行次数:980。准确率是:0.9375
执行次数:990。准确率是:0.9570
执行次数:1000。准确率是:0.9590

国际数据管理会议的论文集。

DNN 在许多领域得到广泛的应用和发展。日常使用神经网络的最常见例子是语言和图像识别, 以及从一种语言到另一种语言的自动翻译。DNN 也能用于交易。鉴于算法交易的快速发展, 对 DNN 的深入研究似乎是有用的。

最近, 开发人员已经提出了许多新的使用 DNN 的思路, 方法和途径, 并通过实验一一证明它们。本系列文章将研究 DNN 发展的状况和主要方向。有极大的空间可致力于使用实际实验和 DNN 的定性特征来测试各种思路和方法。在我们的工作中将仅使用多层完全连接的网络。

文章将有四个着重关注领域: 

  • 准备, 评估和经过各种变换放大的入场数据。
  • 图例.18. 含异常值的训练数据集合

    图例.19. 含插补异常值的训练数据集合

    图例.20. 含插补异常值的测试数据集合

    并非所有模型都对异常值敏感。举例, 诸如确定树 (DT) 和随机森林 (RF) 模型均对它们不敏感。 


    偏态以分布形式表示。计算变量的偏度系数是评估它的一般方式。通常, 负偏态表示平均值小于中值, 分布保持偏离。正偏态表示平均值大于中值, 分布具有正确的偏度。

    如果预测器偏度为 0, 则数据绝对对称。
    如果预测器偏度小于 -1 或大于 1, 则数据明显失真。
    如果预测器偏度在 -1 和 -1/2 之间或 1 和 1/2 之间, 则数据中度失真。
    如果预测器偏度等于 -1/2 和 1/2, 则数据接近对称。

    可以取对数来校正偏度, 并通过使用指数函数来保持偏离。

    我们已经确定了偏度, 异常值和其它变化的关系。我们来看看去除和插补异常值之后, 偏度指数如何变化。  

    r如您所见, 已删除的异常值 x.out 和含插补异常值的 x.cap 集合是绝对对称的, 不需要任何校正。

    我们也可以评估峰度。峰度 (Kurtosis) 或峰值系数是随机变量分布的峰值度量。正态分布的峰度为 0。如果分布峰值围绕数学期望呈尖锐状, 则峰度为正, 若峰值是平滑的, 则峰度为负。

    在初始数据集 x 中的分布峰值非常尖锐 (峰度远大于 0), 在含有去除的异常值 x.out 的集合中, 峰值非常接近正常的峰值。含有插补异常值的集合具有更平滑的峰值。两个数据集合都不需要任何校正。

我要回帖

更多关于 深度神经网络定义 的文章

 

随机推荐