Ⅰ 有卷积神经网络/循环神经网络的matlab编程书籍吗,求推荐,能分享最好
推荐书籍:抄《MATLAB深度学习袭 机器学习、神经网络与人工智能》
作 者 :(美)Phil Kim著;敖富江,杜静,周浩译
出版发行 : 北京:清华大学出版社 , 2018.03
本书共6章,内容包括:机器学习、神经网络、多层神经网络的训练、
神经网络与分类问题、深度学习、卷积神经网络。
Ⅱ 深度卷积网络
LeNet网络的结构如下图所示,可以看出,LeNet网络并没有使用padding,每进行一次卷积,图像的高度和宽度都会缩小,而通道数会一直增加。在全连接层中有400个节点,每个极点都有120个神经元,有时还会从这400个节点抽取一部分节点构建一个全连接层,即有两个全连接层。在该网络中,最后一步就是利用84个特征得到最后的输出,该网络刚开始使用的是 sigmoid 函数 tanh 函数,而现在常常倾向于使用 softmax 函数。需要注意的是,LeNet-5网络进行图像分类时,输入的图像是单通道的灰度图像。
AlexNet是以论文第一作者的名字命名的,该网络的结构,如下图所示,该网络的输出层使用了 softmax 函数。AlexNet网络比LeNet网络规模更大,大约有6000万个参数,用于训练图像和数据集时,能够处理非常相似的基本构造模块,这些模块中包含着大量的隐藏单元,并且与LeNet网络不同的是,该网络使用了ReLu的激活函数。
VGG-16网络没有太多渗衡携的超参数,这是一种专注于构建卷积层的简单网络。如下图所示,该网络首先利用64个过滤器进行了两次卷积,接着在池化层将输入图像压缩,接着又是128个过滤器进行两次卷积,接着载池化。继续用256个过滤器进行3次卷积,再池化,接着再利用512个过滤器卷积3次,再池化,将稍后得到的特征图进行全连接操作,再进 softmax 激活。
由于存在梯度消失和梯度爆炸的原因,深层次的神经网络是很难训练的,如果采用一种跳跃连接的方式,即从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。这种利用跳跃连接构建的深度神经网络ResNets,深度能够超过100层
一个简单的两层神经网络示例,如下图所示:
常规的输出和输出之间的关系可以用如下的公式表示:
如上公式所述,这是一条神经网络的主路径。如果将 的输入直接到深层的激活函数之前,此时,神经网络有了一条副路径,其对应输出将有公式(5)变成如下所示的公式(6)
此时的输入除了原先的输入 外,多了一个 项,即由于 产生了一个残差块。
构建一个ResNet网络就是将很多这样的残差块丛伏堆积在一起,形成一个深度神经网络,如下所示:
使用传统的标准优化算法训练一个网络,随着网络深度的增加,训练误差会先减小再增加,随着网络层数的增加,优化算法会越难以训练,训练误差也会越来越多。但是,使用ResNet网络,能够有效地避免这种情况。
如上所述,加入残差网络之后,其输出计算公式如公式(6)所示,展开这个公式,则有:
如果使用L2正则化或者权重衰减,则会压缩权重参数 的值,如果参数 和参数 等于0,其输出将由公式(7)变成 ,假定使用ReLU激活函数,则有:
由于残差网络存在的这种跳跃连接,很容易得出以上等式,这意味着,即使给神经网络增加两层,但是其效率并不逊色与更简单的神经网络。并且由于存在以上恒等式,使得网络学习隐藏层的单元的信息更加容易。而普通网络,随着网络层数的增加,学习参数会变得很困难。
此外,关于残差网络,如公式(6)所示,假设 与 具有相同的维度,拦猛由于ResNets使用了许多same卷积, 的维度等于输出层的维度。如果输入和输出具有不同的维度,可以再增加一个矩阵 ,使得 和 具有相同的维度。而 的维度可以通过0值填充调节。
在卷积网络的架构设计中,一种有趣的想法是会使用到1×1的过滤矩阵,实际上,对于单通道的图像而言,1×1的过滤矩阵,意义不大,但是,对于多通道的图像而言,1×1的过滤矩阵能够有效减少图像卷积之后的通道数量。
根据卷积和池化的基本知识,随着神经网络层数的增加,图像的通道数量会逐渐增加,采用1×1的过滤矩阵卷积之后,可以有效减少图像的通道数量,一个简单的示例,如下所示:
假设有一个6×6×32的图片,使用1×1×32的过滤矩阵进行卷积运算,整个运算过程将会遍历36个单元格,并计算过滤矩阵所覆盖区域的元素积之和,将其应用到ReLu非线性函数,会得到一个输出值。此计算过程中,可能会用到多个1×1×32的过滤器,那么,通过以上计算会得到一个 6×6×过滤器数量 的矩阵。
构建卷积神经网络时,有时会很难决定过滤器的大小,而Inception网络的引入,却能很好的解决这个问题。
Inception网络的作用就是代替人工确定选择卷积层的过滤器类型。如下图所示,对于一个多通道图像,可以使用不同的过滤矩阵或者池化层,得到不同的输出,将这些输出堆积起来。
有了如上图所示的Inception块,最终输出为32+32+64+128=256,而Inception模块的输入为28×28×192,其整个计算成本,以5×5的过滤矩阵为例,其乘法的计算次数为:28×28×32×5×5×192,整个计算次数超过了1.2亿次。而如果使用如下所示的优化计算方法,则可以有效减少计算量。
如果利用1×1的过滤器,将输入矩阵的通道减少至16,则可以有效减少计算量,如下所示:
如上图所示的价格中,整个网络的运算次数为:28×28×192×16+28×28×32×5×5×16=1240万,整个计算成本降低至原来的十分之一。而,通过1×1×192过滤器卷积得到的这个网络层被称之为瓶颈层。
如上,所示,可以给每一个非1×1的卷积层之前,加入一个1×1的瓶颈层,就可以构建一个基本的inception模块了,如下图所示:
而一个inception网络就是多个Inception模块连接起来,如下图所示:
事实上,以上网络中,还存在一些分支,如编号1所示,这些分支就是全连接层,而全连接层之后就是一个softmax层用于预测。又如分支2所示,包含一些隐藏层(编号3),通过全连接层和softmax进行预测。这些分支结构能够确保,即使是隐藏层和中间层也参与了特征计算,并且也能够预测图片的分类。这种做法能够有效避免网络过拟合。
对于计算机视觉领域而言,神经网络的训练可能需要大量的数据,但是当数据量有限时,可以通过数据增强来实现数据量的扩充,以提高系统的鲁棒性,具体的数据增强方法如下所示:
除了以上三种数据增强的方法外,更多的数据增强方法和实现可以参考 图像数据增强
数据增强可以利用计算机多线程实现,一个线程用来实现加载数据,实现数据增强,其他线程可以训练这些数据以加快整体的运算速度。
Ⅲ 卷积神经网络LeNet-5结构卷积采样中加偏置Bx的作用是什么
简单的讲吧
h(x)=f(wx+b)
上式子就是神经元所表示的函数,x表示输入,w表示权重,b表示偏置,内f表示激活函数,h(x)表示输出。
训练卷容积神经网络的过程就是不断调整权重w与偏置b的过程,以使其输出h(x)达到预期值。
权重w与偏置b就相当于神经元的记忆。
至于你说的为什么要偏置b可以看看这个博客http://blog.csdn.net/xwd18280820053/article/details/70681750
从其根本上讲,就是不加偏置b的话,上面的函数就必定经过原点,进行分类的适用范围就少了不是吗