当前位置:文档之家› 大数据机器学习 重点及作业整理

大数据机器学习 重点及作业整理

1.Bootstraping:名字来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。

其核心思想和基本步骤如下:(1)采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。

(2)根据抽出的样本计算给定的统计量T。

(3)重复上述N次(一般大于1000),得到N个统计量T。

(4)计算上述N个统计量T的样本方差,得到统计量的方差。

应该说Bootstrap是现代统计学较为流行的一种统计方法,在小样本时效果很好。

通过方差的估计可以构造置信区间等,其运用范围得到进一步延伸。

bagging:bootstrap aggregating的缩写。

让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯⋯h_n,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。

[训练R个分类器f_i,分类器之间其他相同就是参数不同。

其中f_i是通过从训练集合中(N 篇文档)随机取(取后放回)N次文档构成的训练集合训练得到的。

对于新文档d,用这R个分类器去分类,得到的最多的那个类别作为d的最终类别。

]boosting:其中主要的是AdaBoost(Adaptive Boosting)。

初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练例进行学习,从而得到一个预测函数序列h_1,⋯,h_m,其中h_i也有一定的权重,预测效果好的预测函数权重较大,反之较小。

最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。

(类似Bagging方法,但是训练是串行进行的,第k个分类器训练时关注对前k-1分类器中错分的文档,即不是随机取,而是加大取这些文档的概率。

)(pku,sewm,shinningmonster.)Bagging与Boosting的区别:二者的主要区别是取样方式不同。

Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。

Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。

对于象神经网络这样极为耗时的学习方法。

Bagging 可通过并行训练节省大量时间开销。

bagging和boosting都可以有效地提高分类的准确性。

在大多数数据集中,boosting的准确性比bagging高。

在有些数据集中,boosting会引起退化---Overfit。

Boosting思想的一种改进型AdaBoost方法在邮件过滤、文本分类方面都有很好的性能。

2.激活函数关于激活函数,首先要搞清楚的问题是,激活函数是什么,有什么用?不用激活函数可不可以?答案是不可以。

激活函数的主要作用是提供网络的非线性建模能力。

如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。

因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。

那么激活函数应该具有什么样的性质呢?可微性:当优化方法是基于梯度的时候,这个性质是必须的。

单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。

输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate从目前来看,常见的激活函数多是分段线性和具有指数形状的非线性函数2.1sigmoidsigmoid是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。

此外,(0,1)的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。

然而,sigmoid也有其自身的缺陷,最明显的就是饱和性。

从上图可以看到,其两侧导数逐渐趋近于0具有这种性质的称为软饱和激活函数。

具体的,饱和又可分为左饱和与右饱和。

与软饱和对应的是硬饱和,即sigmoid的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。

具体来说,由于在后向传递过程中,sigmoid向下传导的梯度包含了一个f′(x)因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f′(x)就会变得接近于0,导致了向底层传递的梯度也变得非常小。

此时,网络参数很难得到有效训练。

这种现象被称为梯度消失。

一般来说,sigmoid网络在5层之内就会产生梯度消失现象此外,sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

2.2tanhtanh也是一种非常常见的激活函数。

与sigmoid相比,它的输出均值是0,使得其收敛速度要比sigmoid快,减少迭代次数。

然而,从途中可以看出,tanh一样具有软饱和性,从而造成梯度消失。

2.3ReLU,P-ReLU,Leaky-ReLUReLU的全称是Rectified Linear Units,是一种后来才出现的激活函数。

可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。

所以,ReLU能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。

这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。

然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。

这种现象被称为“神经元死亡”。

与sigmoid类似,ReLU的输出均值也大于0,偏移现象和神经元死亡会共同影响网络的收敛性。

ReLU还经常被“诟病”的一个问题是输出具有偏移现象[7],即输出均值恒大于零。

偏移现象和神经元死亡会共同影响网络的收敛性。

本文作者公开在arxiv的文章[8]中的实验表明,如果不采用Batch Normalization,即使用MSRA初始化30层以上的ReLU网络,最终也难以收敛。

相对的,PReLU和ELU网络都能顺利收敛,这两种改进的激活函数将在后面介绍。

实验所用代码见https:///Coldmooon/Code-for-MPELU/。

ReLU另外一个性质是提供神经网络的稀疏表达能力,在Bengio教授的Deep Sparse Rectifier Neural Network[6]一文中被认为是ReLU带来网络性能提升的原因之一。

但后来的研究发现稀疏性并非性能提升的必要条件,文献RReLU[9]也指明了这一点。

针对在x<0的硬饱和问题,我们对ReLU做出相应的改进,使得这就是Leaky-ReLU,而P-ReLU认为,α也可以作为一个参数来学习,原文献建议初始化a 为0.25,不采用正则。

PReLU[10]是ReLU和LReLU的改进版本,具有非饱和性.与LReLU相比,PReLU中的负半轴斜率a可学习而非固定。

原文献建议初始化a为0.25,不采用正则。

个人认为,是否采用正则应当视具体的数据库和网络,通常情况下使用正则能够带来性能提升。

虽然PReLU引入了额外的参数,但基本不需要担心过拟合。

例如,在上述cifar10+NIN实验中,PReLU比ReLU和ELU多引入了参数,但也展现了更优秀的性能。

所以实验中若发现网络性能不好,建议从其他角度寻找原因。

与ReLU相比,PReLU收敛速度更快。

因为PReLU的输出更接近0均值,使得SGD更接近natural gradient。

证明过程参见原文[10]。

此外,作者在ResNet中采用ReLU,而没有采用新的PReLU。

这里给出个人浅见,不一定正确,仅供参考。

首先,在上述LReLU实验中,负半轴斜率对性能的影响表现出一致性。

对PReLU采用正则将激活值推向0也能够带来性能提升。

这或许表明,小尺度或稀疏激活值对深度网络的影响更大。

其次,ResNet中包含单位变换和残差两个分支。

残差分支用于学习对单位变换的扰动。

如果单位变换是最优解,那么残差分支的扰动应该越小越好。

这种假设下,小尺度或稀疏激活值对深度网络的影响更大。

此时,ReLU或许是比PReLU更好的选择。

数学形式与PReLU类似,但RReLU[9]是一种非确定性激活函数,其参数是随机的。

这种随机性类似于一种噪声,能够在一定程度上起到正则效果。

作者在cifar10/100上观察到了性能提升。

2.4ELU融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。

右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。

ELU的输出均值接近于零,所以收敛速度更快。

在ImageNet上,不加Batch Normalization30层以上的ReLU网络会无法收敛,PReLU网络在MSRA的Fan-in(caffe)初始化下会发散,而ELU网络在Fan-in/Fan-out下都能收敛2.5Maxout在我看来,这个激活函数有点大一统的感觉,因为maxout网络能够近似任意连续函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。

Maxout能够缓解梯度消失,同时又规避了ReLU 神经元死亡的缺点,但增加了参数和计算量。

2.6Noisy Activation Functions当激活函数发生饱和时,网络参数还能够在两种动力下继续更新:正则项梯度和噪声梯度。

引入适当的噪声能够扩大SGD的参数搜索范围,从而有机会跳出饱和区。

在激活函数中引入噪声的更早工作可追溯到[5],但文献[5]的工作并不考虑噪声引入的时间和大小。

本篇的特点在于,只在饱和区才引入噪声,且噪声量与饱和程度相关——原式与泰勒展开式一次项之差δ。

算法1中g表示sigmoid,用于归一化δ。

注意,ReLU的δ恒为0,无法直接加噪声,所以作者把噪声加在了输入上。

2.7CReLU作者在观察第一层滤波器(filter)时发现,滤波器相位具有成对现象(pair-grouping phenomenon)。

这一发现揭示了网络的底层学到了一些冗余滤波器来提取输入的正负相位信息的可能性。

相关主题