ResNet网络ResNet的亮点超深的网络结构(超过1000层)提出residual(残差结构)模块。使用Batch Normalization 加速训练(丢弃dropout)。为什么采用residual?在ResNet提出之前,所有的神经网络都是通过卷积层和池化层的叠加组成的。人们认为卷积层和池化层的层数越多,获取到的图片特征信息越全,学习效果也就越好。但是在实际的试验中发现,随着卷积层和池化层的叠加,不但没有出现学习效果越来越好的情况,反而两种问题:梯度消失和梯度爆炸梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大退化问题随着层数的增加,预测效果反而越来越差。如下图所示为了解决梯度消失或梯度爆炸问题,ResNet论文提出通过数据的预处理以及在网络中使用 BN(Batch Normalization)层来解决。为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。ResNet论文提出
卷积核卷积核本质上是一个非常小的矩阵,最常用的是 3×3 矩阵。主要是利用核与图像之间进行卷积运算来实现图像处理,能做出模糊、锐化、凹凸、边缘检测等效果。神经网络中卷积核的维度和对(3*3,2)的理解(我的理解)图中输入数据为蓝色部分是一张5*5*3的三维图片,padding=1,变为7*7*3。图中权重数据体为红色部分是两个3*3*3的卷积核,因为输入的数据为3维所以每个卷积核都是3维的,又因为要将输入数据变为3*3*2所以需要两个,在神经网络中可以写成(3*3,2)。正式一点:对于RGB图像,图像为3维,若要提取2个特征,可以设置2个3维卷积核进行特征提取,提取结果为2通道的feature map,2个通道互相独立,代表着不同卷积核提取的不同特征。卷积层演示:下面是一个卷积层的运行演示。因为3D数据难以可视化,所以所有的数据(输入数据体是蓝色,权重数据体是红色,输出数据体是绿色)都采取将深度切片按照列的方式排列展现。输入数据体的尺寸是W1=5,H1=5,D1=3,卷积层参数K=2,F=3,S=2,P=1。K:卷积核个数F:卷积核大小S:步长P:填充数就是说,有2个滤波器,滤波器的尺
优化器前言优化器是引导神经网络更新参数的工具,深度学习在计算出损失函数之后,需要利用优化器来进行反向传播,完成网络参数的更新。在这个过程中,便会使用到优化器,优化器可以利用计算机数值计算的方法来获取损失函数最小的网络参数。在深度学习中,不同的优化器只是定义了不同的一阶动量和二阶动量,一阶动量是与梯度相关的函数,二阶动量是与梯度平方相关的函数。常用的优化器主要有随机梯度下降法、Momentum、AdaGrad、RMSProp和Adam优化器。神经网络利用优化器来更新网络参数步骤如下:计算当前时刻t损失函数关于网络参数w的梯度$$ g_t=\nabla loss= \frac{\partial loss}{\partial(w_t)} $$计算当前时刻t一阶动量$m_t$和二阶动量$V_t$计算当前时刻t下降梯度$$ \eta_t=lr\bullet m_t / \sqrt{V_t} $$计算下一时刻t+1参数$$ w_{t+1}=w_t-\eta_t=w_t-lr \bullet m_t / \sqrt{V_t} $$SGD 随机梯度下降法目前,神经网络最常用的为随机梯度下降(Stoch
深度学习中Dropout原理解析1. Dropout简介1.1 Dropout出现的原因在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。综上所述,训练深度神经网络的时候,总是会遇到两大缺点:容易过拟合费时Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。1.2 什么是DropoutDropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥
图解卷积层stride,padding,kernel_size 和卷积前后特征图尺寸之间的关系kernel_size:卷积核大小padding:特征图填充宽度stride:卷积步长这些值的设置让卷积核可以从图片的第一个像素刚好扫描到最后一个像素,如下图所示:不难发现,经过卷积后的特征图尺寸等于卷积核滑动的次数 $+1$,在这里等于$5$。现在假设卷积前的特征图宽度为 N ,卷积后输出的特征图宽度为 $M$ ,那么它们和上述设置的参数之间的关系是怎样的呢?首先可以确定的是padding之后的矩阵宽度等于$N+2×padding$ 。另一方面,卷积核的滑动次数等于 $M−1$根据上图的关系,可以建立下面的等式$$ N+2×padding=(M−1)×stride+kernel\_size $$于是输出矩阵的宽度就等于$$ M=\frac{N+2\times padding-kernel\_size}{stride}+1 $$特别地,如果需要卷积操作不改变矩阵宽度,即$M=N$ ,则填充宽度为$$ padding=\frac{(N-1)\times stride - N + kernel\_
MAX Pooling 最大值池化max pooling 的操作如下图所示:整个图片被不重叠的分割成若干个同样大小的小块(pooling size)。每个小块内只取最大的数字,再舍弃其他节点后,保持原有的平面结构得出 output。注意区分max pooling(最大值池化)和卷积核的操作区别:池化作用于图像中不重合的区域(这与卷积操作不同)这个图中,原来是4*4的图片。由于不会重合,所以filter的大小和步长stride是相等的,为2.粉色区域最大值为6,得到的该区域结果是6,绿色是8,黄色是3,紫色是4.有一个动图:PS:发现其实是有重叠池化的(overlapping pooling)相邻池化窗口之间会有重叠区域,此时filter的大小sizeX>stride步长。Max Pooling的作用作用1:invariance(不变性)invariance(不变性)translation(平移)不变性rotation(旋转)不变性scale(尺度)不变性translation平移图中左边两个大图,表示数字1,但是两个的位置不同,上者经过向右平移得到下者。经过池化后,得到了相同的结
一只胖橘