赞
踩
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当
ReLU虽然在零点不可导,但是我们在做反向传播的计算时,对ReLU这个函数的导数分情况讨论。即ReLU在零点时人为地给它赋予一个导数,比如0或者1。例如在下面的ReLU反向传播函数实现中,将ReLU在零点位置的导数设置为0。
有的负值都变为0,而正值不变,这种操作被成为单侧抑制。正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。
使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多; 计算复杂度低,不需要进行指数运算;
训练的时候很”脆弱”,很容易就”die”了; ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张。
为什么要归一化:神经网络学习过程的本质就是为了学习数据分布,如果我们没有做归一化处理,那么每一批次训练数据的分布不一样,从大的方向上看,神经网络则需要在这多个分布中找到平衡点,从小的方向上看,由于每层网络输入数据分布在不断变化,这也会导致每层网络在找平衡点,显然,神经网络就很难收敛了。当然,如果我们只是对输入的数据进行归一化处理(比如将输入的图像除以255,将其归到0到1之间),只能保证输入层数据分布是一样的,并不能保证每层网络输入数据分布是一样的,所以也需要在神经网络的中间层加入归一化处理。神经网络学习过程本质上就是为了学习数据分布,如果训练数据与测试数据的分布不同,网络的泛化能力就会严重降低。(任何层都需要归一化)
四种归一化:BN,LN,IN,GN
深度学习归一化方法总结(BN、LN、IN、GN)_不瘦8斤的妥球球饼的博客-CSDN博客
理解Batch Normalization系列1——原理(清晰解释) - 知乎
总之,就是在加权和后,加了一个标准化层、一个还原层。标准化层,用来把一个batch_size上的该层该神经元的数值进行标准正态分布(均值为0,方差为1)。还原层,就是引入缩放系数、平移系数,让梯度决定还原程度。
对于某一层 X 来说,它的每个元素Xi的数值,在一个batch上的分布是一个任意的未知分布,BN首先把它标准化为了一个标准正态分布。
这样是否太暴力了?如果所有输入样本被层层改分布,相当于输入信息都损失掉了,网络是没法训练的。
所以需要第二步对标准正态分布再进行一定程度的还原操作,即缩放平移。
最终使得这个数值分布,兼顾保留有效信息、加速梯度训练。
高度依赖于batchsize的大小,实际使用中会对batchsize大小进行约束,不适合batchsize=1的情况。不适用于RNN,RNN的序列长度是不一致的。
- BN先进行标准化求出新的x;标准化即对一组数据中的每个数字,减均值再除以标准差(给方差开个根号),就可把一个该组数据转换为一个均值为0方差为1的标准正态分布。对于之前的归一化来说,我们强行把特征做的均值为0,标准差为1,可以通过将数据标准化,能够加速权重参数的收敛。
- 再进行缩放和平移求出 y,这y个取代了原始的x,然后进行激活。
如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
sigmoid,tanh( (exp(x)-exp(-x))/(exp(x)+exp(-x)) ),ReLU(max(0,x))(Rectified Linear Units),Softmax, Leaky-ReLU & P-ReLU
关键在于激活函数。在反向传播中,我们使用的是梯度下降策略来优化参数,在链式法则求导的时候,涉及到了对激活函数求导,关键在于反向传播时激活函数的导数!!!如果导数大于1,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸。同样如果导数小于1,那么随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少这就是梯度消失。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。
端到端学习是一种解决问题的思路,与之对应的是多步骤解决问题,也就是将一个问题拆分为多个步骤分步解决,而端到端是由输入端的数据直接得到输出端的结果。
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!
假设我们有一个数组V,Vi表示V中的第i个元素,那么这个元素的softmax值就是:
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!
softmax的使用其实包括两个好处,第一个好处就是答主说的好求导,第二个就是它使得好结果和坏结果之间的差异更加显著,更有利于学习了。SVM只选自己喜欢的男神,Softmax把所有备胎全部拉出来评分,最后还归一化一下。
logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w‘x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w‘x+b作为因变量,即y =w‘x+b,而logistic回归则通过函数L将w‘x+b对应一个隐状态p,p =L(w‘x+b),然后根据p与1-p的大小决定因变量的值。如果L是logistic函数,就是logistic回归,如果L是多项式函数就是多项式回归。
logistic函数:
其中
一文读懂LeNet、AlexNet、VGG、GoogleNet、ResNet到底是什么? - 知乎
AlexNet: AlexNet相比传统的CNN,主要改动包括Data Augmentation(数据增强)、Dropout方法,激活函数用ReLU代替了传统的Tanh或者Sigmoid、采用了Local Response Normalization(LRN,实际就是利用临近的像素数据做归一化,(现在基本不用了))、Overlapping Pooling(有重叠,即Pooling的步长比Pooling Kernel的对应边要小)、多GPU并行。
VGGNet: VGG很好地继承了AlexNet的特点,同时采用了更小的卷积核(3*3)堆叠来代替大的卷积核,并且网络更深(VGG-16,VGG-19)。
GoogLeNet: 网络更深,但主要创新点在于它的Inception模块,这是一个网中网(Network In Nework)的结构,即原来的节点也是一个网络。相比于前述几个网络,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2~3倍的性能提升。Inception结构的主要贡献有两个:一是使用1x1的卷积来进行升降维;二是在多个尺寸上同时进行卷积再聚合。
ResNet: ResNet在网络深度上有了进一步探索。但主要的创新在于残差模块(residual block),网络提出本质上还是要解决增大网络深度导致难以收敛的问题。这种借鉴了Highway Network思想的网络相当于旁边专门开个通道使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x) - x,其中H(x)是某一层原始的期望映射输出,x是输入。
可以大大降低数据的维度。
最大值池化,均值池化,随机池化,中值池化,组合池化
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。可以很好的防止过拟合(1. 随机丢神经元,每次训练得到不同网络,最后预测结果类似多模型集成结果。2. 神经元减少,更新参数减少。3. 丢神经元就等于丢了特征,就类似于RF的列采样了)。
原理:https://blog.csdn.net/bobo_jiang/article/details/99231710
https://blog.csdn.net/qq_40176087/article/details/105904379
就是一张图不一定要全部训练所有信息,有时候如果只是为了认识人脸,可能我们看一个眼睛+鼻子就认出来了。所以我们可以选择丢掉一些信息。
dropout rate = 0.5,意味着随机丢弃掉一半神经元(不是删除神经元,仅仅是这些不参与计算!)的神经网络。rate过大很容易造成overfiting!
一个模型的作用效果,也转变成4个模型的效果和,更像一个多模型投票。
所以,虽然第四个模型overfitting了,但是前三个也模型参与投票判断,第四个模型overfitting就被弱化了所以,dropout的出现,使得模型稳定性和鲁棒性被大大提高了
训练的时候停止了一些神经元,但是测试的时候模型是完整的,不会dropout任何神经元。这个时候会出现问题(好比平时训练200米的跑步,结果比赛比的是400米)
训练的时候后,没有dropout的神经元权值做一个rescale
rescale rate = 1 / (1 - dropout rate)
流程:
1. 假设p为每个神经元为保留的概率,那么在训练的时候它有p的概率参与训练,(1-p)的概率丢弃
数学解释:没用dropout的神经网络前向传播:
用dropout的神经网络前向传播:
Bernoulli函数是为了生成概率r向量,也就是随机生成一个0、1的向量。代码层面实现让某个神经元以概率p停止工作,其实就是让它的激活函数值以概率p变为0。比如我们某一层网络神经元的个数为1000个,其激活函数输出值为y1、y2、y3、…、y1000,我们dropout比率选择0.4,那么这一层神经元经过dropout后,1000个神经元中会有大约400个的值被置为0。
2. 预测不使用dropout
两种办法:动训练神经元不动测试神经元 或 不动训练神经元动测试神经元
动测试:训练时得到的输出期望为:p*x+(1-p)*0=px,在预测的时候,不会随机丢弃一些神经元,每个神经元都会参与预测,如果把神经元的权重乘以p,那么数学期望就是px,这样一来,训练和预测时,数学期望都是px,总体保持一致;
动训练:如果给每个神经元权重都乘以1/(1-p),那么它训练时输出的期望是[(1-p)x+p0]/(1-p)=x,预测时不需要对神经元权重进行放缩,这样一来,训练和预测时,数学期望都是x,总体保持一致;
BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2的效果,相反可能会得到比单独使用更差的效果。
不可以使用!dropout只能用于训练集。dropout是训练过程中应用的一种正则化技术。
定义:梯度下降法是定义目标函数,通过误差反向传播的方法对模型参数进行调整,使得目标函数值最小,不再增长,则认为找到了一组参数,构造了模型。梯度下降法沿着误差下降速度最快的方向调整参数,一般是目标函数对某个参数的偏导数乘以步长来调整参数,最后使得误差收敛于最小值。这种方法适合在特征个数非常多,训练实例非常多,内存无法满足要求的时候使用。在梯度下降中一个重要的参数是步长,超参数学习率的值决定了步长的大小。如果学习率太小,必须经过多次迭代,算法才能收敛,这是非常耗时的。如果学习率太大,你将跳过收敛点。Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent
降维是指把原始高维空间的特征投影到低维度的空间,进行特征的重组,以减少数据的维度。降维与特征最大的不同在于,特征选择是进行特征的剔除、删减,而降维是做特征的重组构成新的特征,原始特征全部“消失”了,性质发生了根本的变化。
PCA主成分分析法:PCA是不考虑样本类别输出的无监督降维技术。PCA追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上的数据方差的大小来衡量该方向的重要性。 !!! PCA是不考虑样本类别输出的无监督降维技术。!!
设有 m 条 n 维数据(X1, X2, .....Xn)
1 将原始数据按列组成n 行 m 列矩阵 X;
2 将 X 的每一行进行零均值化,即减去这一行的均值;
3 求出协方差矩阵
4 求出协方差矩阵的特征值, 特征值为空间变换(投影后) 数据的方差。及对应的特征向量,特征向量就是我们寻找的投影轴;
5 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P;
6 Y = PX 即为降维到 k 维后的数据。Y是降维后的数据。
LDA线性判别分析法:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。
核心思想:往线性判别超平面的法向量上投影,使的区分度最大(高内聚,低耦合 = "投影后类内方差最小,类间方差最大")。!!LDA它的数据集的每个样本是有类别输出的。!!!学习分类算法,线性分类器最简单的就是LDA(Linear Discriminant Analysis),它可以看做是简化版的SVM。
相关链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。