机器学习专项练习
生成式模型(Generative Model):会对数据的分布做一定的假设
(1)判别式分析
(2)朴素贝叶斯(Naive Bayesian Model,NBM):基于一个简单的假定:给定目标值时属性之间相互条件独立。
(3)决策树(Decision Tree Model)
(4)K近邻(KNN)
(5)混合高斯模型
(6)隐马尔科夫模型(HMM) :用来描述隐含未知参数的统计模型。
例如:一个人每天根据天气{下雨,天晴}决定当天的活动{公园散步,购物,清理房间}中的一种,则根据“啊,我前天公园散步、昨天购物、今天清理房间了!”,可以推断这三天的天气。在这个例子里,显状态是活动,隐状态是天气
(7)贝叶斯网络
(8)Sigmoid Belief Networks
(9)马尔科夫随机场(Markov Random Fields)
(10)深度信念网络(DBN)
(11)区分度训练
判别式模型(Discrimitive Model):
(1)线性回归(Linear Regression)
(2)逻辑回归(Logistic Regression)
(3)神经网络(NN)
(4)支持向量机(SVM)
(5)高斯过程(Gaussian Process)
(6)条件随机场(CRF)
(7)CART(Classification and Regression Tree)
对于输入x,类别标签y:
生成模型: 学习时先得到 P(x,y),继而得到 P(y|x)。预测时应用最大后验概率法(MAP)得到预测类别 y。
判别模型: 直接学习得到P(y|x),利用MAP得到 y。或者直接学得一个映射函数 y=f(x)。
举例:
假如任务是识别一个语音属于哪种语言。有两种方法达到这个目的:
(1)生成模型: 关注数据是如何生成的
学习每一种语言,花了大量精力把汉语、英语和法语等都学会了,知道什么样的语音对应什么样的语言。
(2)判别模型: 关注类别之间的差别
不去学习每一种语言,只学习这些语言之间的差别,然后再判断(分类)。
-
PMF(概率质量函数):描述的是离散型随机变量在特定取值点的概率
PDF(概率密度函数):连续情况下,概率密度函数是在某点的一个“密度”值,在某些点是可以大于1的,其取值并不是概率值
CDF(累积分布函数):即p(x<=k),是PDF在特定区间上的积分 -
正负样本不平衡,在分类时候,需要平衡正负样本:
(1)过采样:通过多次复制小样本,改变数据分布消除不平衡,可能导致过拟合
(2)欠采样:通过随机抽样减少多样本规模,提高少数类的分类性能,可能丢失多数类的重要信息
(3)权值方法
- 在统计模式识分类问题中,当先验概率未知时,可以使用
N-P判决和最小最大损失准则
在贝叶斯决策中,一般有两种做法,一种是对风险函数关于先验分布p(y)求平均,最小化贝叶斯风险;另一种就是最小化风险函数的最大值,即最小最大准则。
在贝叶斯决策中,对于先验概率p(y),分为已知和未知两种情况。
1.p(y)已知,直接使用贝叶斯公式求后验概率即可;
2.p(y)未知,可以使用聂曼-皮尔逊决策(N-P决策)来计算决策面。
而最大最小损失规则主要就是使用解决最小损失规则时先验概率未知或难以计算的问题的。
- 表征学习:
在机器学习领域,表征学习(或特征学习)是一种将原始数据转换成为能够被机器学习有效开发的一种技术的集合。在特征学习算法出现之前,机器学习研究人员需要利用手动特征工程(manual feature learning)等技术从原始数据的领域知识(domain knowledge)建立特征,然后再部署相关的机器学习算法。虽然手动特征工程对于应用机器学习很有效,但它同时也是很困难、很昂贵、很耗时、并依赖于强大专业知识。特征学习弥补了这一点,它使得机器不仅能学习到数据的特征,并能利用这些特征来完成一个具体的任务。
和预测性学习(Predictive Learning)不同,表征学习的目标不是通过学习原始数据预测某个观察结果,而是学习数据的底层结构(underlying structure),从而可以分析出原始数据的其它特性。表征学习允许计算机学习使用特征的同时,也学习如何提取特征:学习如何学习。在机器学习任务中,输入数据例如图片、视频、语言文字、声音等都是高维且冗余复杂,传统的手动提取特征已变得不切合实际,所以需要借助于优秀的特征学习技术。
特征学习可以被分为两类:监督式特征学习(Supervised Representation Learning)和无监督式特征学习(Unsupervised Representation Learning)。
- 在监督特征学习中,被标记过的数据被当做特征用来学习。例如神经网络(Neural Networks),多层感知器(Multi-Layer Perception),监督字典学习(Supervised Dictionary Learning)。
- 在无监督特征学习中,未被标记过的数据被当做特征用来学习。例如无监督字典学习(Unsupervised Dictionary Learning),主成分分析(Principal Component Analysis),独立成分分析(Independent Component Analysis),自动编码(Auto-encoders),矩阵分解(Matrix Factorization) ,各种聚类分析(Clustering)及其变形。
- 降低深度学习模型的过拟合问题
1 增加更多的数据
2 使用数据扩增技术(data augmentation)
3 正规化数据
4 使用归纳性更好的模型
5 降低模型的复杂度:引入正则化、Dropout
6 提前终止训练
- caffe六种优化方法
Stochastic Gradient Descent (type: “SGD”),
AdaDelta (type: “AdaDelta”)
Adaptive Gradient (type: “AdaGrad”)
Adam (type: “Adam”)
Nesterov’s Accelerated Gradient (type: “Nesterov”)
RMSprop (type: “RMSProp”)
-
caffe中基本的计算单元为layer,基本数据存储单元为blob。
-
批规范化(Batch Normalization)的好处:
让每一层的输入的范围都大致固定
-
不同数据集下使用微调:
(1)数据集1-数据量少,但数据相似度非常高-只要修改最后几层或最终的softmax图层的输出类别。
(2)数据集2-数据量少,数据相似度低-可以冻结预训练模型的初始层(比如k层),并再次训练剩余的(n-k)层。由于新数据集的相似度较低,因此根据新数据集对较高层进行重新训练具有重要意义。
(3)数据集3-数据量大,数据相似度低-最好根据数据从头开始训练神经网络(Training from scatch)。
(4)数据集4-数据量大,数据相似度高-这是理想情况。在这种情况下,预训练模型应该是最有效的。使用模型的最好方法是保留模型的体系结构和模型的初始权重。然后,使用在预先训练的模型中的权重来重新训练该模型。
-
PCA降维的特点在于使用矩阵分解求特征值的方式,提取的是数据分布方差比较大的方向,提取的是主要成分;
hidden layer主要是点乘+非线性变换,目的是特征的提取,转换 -
在CNN网络中,图A经过核为3x3,步长为2的卷积层,ReLU激活函数层,BN层,以及一个步长为2,核为22的池化层后,再经过一个33的的卷积层,步长为1,此时的感受野是()
感受野的意思是现在的一个像素对应原来的多少个像素
倒着推导:
RFn = 1
RFn-1 = (1-1) * 1+3 = 3
RFn-2 = (3-1) * 2+2= 6
RFn-3 = (6-1) * 2+3=13 -
Attention-based Model其实就是一个相似性的度量,当前的输入与目标状态越相似,那么在当前的输入的权重就会越大,说明当前的输出越依赖于当前的输入。
-
权值共享就是说,给一张输入图片,用一个卷积核去扫这张图,卷积核里面的数就叫权重,这张图每个位置是被同样的卷积核扫的,所以权重是一样的,也就是共享。可以极大地减少参数数量,这是全连接神经网络不具备的优势。RNN与CNN会发生权重共享
-
信息增益通俗讲就是指区分度。如果对于一个属性,其结果都是等概率出现的,即信息熵为1,信息增益为0,那么这个属性就没有任何区分度,无实际意义。
本题中,年龄高的的人是否使用了调查产品的人都是1/2,年龄低的人是否使用了调查产品的人也分别占1/2,那么年龄属性没有任何实际意义,有没有都一样了。
而所有本科学历都不使用调查产品,所有非本科学历都使用了调查产品。这种可以确定的划分导致信息熵为0,信息增益最大 -
任何一个线性规划都存在对偶问题,对偶问题的对偶问题就是原问题。
互为对偶的线性规划,一个无最优解,另一个也无最优解,但是一个无可行解,另一个可能有可行解。
若最优解存在,其应该是对偶的,即
,并非相同。
一个问题无可行解,另一个问题可能也无可行解,可能具有无界解,
-
影响聚类算法效果的主要原因有:
特征选取、模式相似性测度、分类准则
-
梯度下降算法的正确步骤是:
1.用随机值初始化权重和偏差
2.把输入传入网络,得到输出值
3.计算预测值和真实值之间的误差
4.对每一个产生误差的神经元,调整相应的(权重)值以减小误差
5.重复迭代,直至得到网络权重的最佳值
-
每个神经元可以有一个或多个输入,和一个或多个输出。
-
调整超参数来最小化代价函数(cost function)的技术:
穷举搜索:如网格法grid search
随机搜索:快于穷举
bayesian优化:在上一次结果较好的参数取值附近查找
- 在训练神经网络时,损失函数(loss)在最初的几个epochs时没有下降,可能的原因是:
1.学习率(learning rate)太低
2.正则参数太高
3.陷入局部最小值
- 在感知机中(Perceptron)的任务顺序:
1、随机初始化感知机的权重
2、对一个输入样本,计算输出值
3、如果预测值和输出不一致,则调整权重
4、去到数据集的下一批(batch)
-
有关深度神经网络的训练(Training)和推断(Inference):
将数据分组部署在不同GPU上进行训练能提高深度神经网络的训练速度。
将模型中的浮点数精度降低,例如使用float16代替float32,可以压缩训练好的模型的大小。
GPU所配置的显存的大小,对于在该GPU上训练的深度神经网络的复杂度、训练数据的批次规模等,都是一个无法忽视的影响因素。
-
Bagging
操作能实现跟神经网络中Dropout的类似效果
Dropout可以认为是一种极端的Bagging,每一个模型都在单独的数据上训练,同时,通过和其他模型对应参数的共享,从而实现模型参数的高度正则化。
- Bagging(并行):独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果;首先随机地抽取训练集(training set),以之为基础训练多个弱分类器。然后通过取平均,或者投票(voting)的方式决定最终的分类结果。因为它随机选取训练集的特点,Bagging可以一定程度上避免过拟合(overfit)。
- Boosting(串行):集成多个模型,每个模型都在尝试增强(Boosting)整体的效果;是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。
- Stacking(堆叠):集成 k 个模型,得到 k 个预测结果,将 k 个预测结果再传给一个新的算法,得到的结果为集成系统最终的预测结果;做的是在多个分类器的结果上,再套一个新的分类器。这个新的分类器就基于弱分类器的分析结果,加上训练标签(training label)进行训练。一般这最后一层用的是LR。
Bagging和Boosting的区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
5)bagging是减少variance,而boosting是减少bias
典型的神经网络其训练流程是将输入通过网络进行正向传导,然后将误差进行反向传播,Dropout就是针对这一过程之中,随机地删除隐藏层的部分单元,进行上述过程。
步骤为:
1)随机删除网络中的一些隐藏神经元,保持输入输出神经元不变;
2)将输入通过修改后的网络进行前向传播,然后将误差通过修改后的网络进行反向传播;
3)对于另外一批的训练样本,重复上述操作。
他的作为从Hinton的原文以及后续的大量实验论证发现,dropout可以比较有效地减轻过拟合的发生,一定程度上达到了正则化的效果。
-
优化函数
牛顿法、拟牛顿法、adam,rmsgrad用到了二阶导
momentum、adgrad用的是一阶导,adgrad的特点是历史梯度正则。 -
深度学习中的激活函数需要具有的属性:
1.非线性:
即导数不是常数。这个条件是多层神经网络的基础,保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。
2.几乎处处可微:
可微性保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU,只满足几乎处处可微(即仅在有限个点处不可微)。对于SGD算法来说,由于几乎不可能收敛到梯度接近零的位置,有限的不可微点对于优化结果不会有很大影响。
3.计算简单:
非线性函数有很多。极端的说,一个多层神经网络也可以作为一个非线性函数,类似于Network In Network中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。
4.非饱和性(saturation):
饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是Sigmoid,它的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU和PReLU的提出正是为了解决这一问题。
5.单调性(monotonic):
即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
6.输出范围有限:
有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主,如Sigmoid、TanH。但这导致了前面提到的梯度消失问题,而且强行让每一层的输出限制到固定范围会限制其表达能力。因此现在这类函数仅用于某些需要特定输出范围的场合,比如概率输出(此时loss函数中的log操作能够抵消其梯度消失的影响)、LSTM里的gate函数。
7.接近恒等变换(identity):
即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。这个与非线性是有点矛盾的,因此激活函数基本只是部分满足这个条件,比如TanH只在原点附近有线性区(在原点为0且在原点的导数为1),而ReLU只在x>0时为线性。这个性质也让初始化参数范围的推导更为简单。这种恒等变换的性质也被其他一些网络结构设计所借鉴,比如CNN中的ResNet和RNN中的LSTM。
8.参数少:
大部分激活函数都是没有参数的。像PReLU带单个参数会略微增加网络的大小。还有一个例外是Maxout,尽管本身没有参数,但在同样输出通道数下k路Maxout需要的输入通道数是其它函数的k倍,这意味着神经元数目也需要变为k倍;但如果不考虑维持输出通道数的情况下,该激活函数又能将参数个数减少为原来的k倍。
9.归一化(normalization):
这个是最近才出来的概念,对应的激活函数是SELU,主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练。在这之前,这种归一化的思想也被用于网络结构的设计,比如Batch Normalization。
-
循环神经网络
有反馈连接,即把当前输出回传到输入项,和下一时刻的输入共同决定下一时刻的输出。
-
不变性,对于一个函数,如果对其输入施加的某种操作丝毫不会影响到输出,那么这个函数就对该变换具有不变性。卷积和池化都具有平移不变性
-
多个小卷积核和一个大卷积核效果一样好,但是大卷积核参数量和计算量更大,所以才选择了更小的卷积核。
-
SVM常用核函数包括线性核、多项式核、高斯核、拉普拉斯核、Sigmoid核。
支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。
构造出一个具有良好性能的SVM,核函数的选择是关键.核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择.因此如何根据具体的数据选择恰当的核函数是SVM应用领域遇到的一个重大难题,也成为科研工作者所关注的焦点,即便如此,却依然没有得到具体的理论或方法来指导核函数的选取.
1、经常使用的核函数
核函数的定义并不困难,根据泛函的有关理论,只要一种函数 K ( x i , x j ) 满足Mercer条件,它就对应某一变换空间的内积.对于判断哪些函数是核函数到目前为止也取得了重要的突破,得到Mercer定理和以下常用的核函数类型:
(1)线性核函数
K ( x , x i ) = x ⋅ x i
(2)多项式核
K ( x , x i ) = ( ( x ⋅ x i ) + 1 ) d
(3)径向基核(RBF)
K ( x , x i ) = exp ( − ∥ x − x i ∥ 2 σ 2 )
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数 σ 的增大而减弱。多项式形式的核函数具有良好的全局性质。局部性较差。
(4)傅里叶核
K ( x , x i ) = 1 − q 2 2 ( 1 − 2 q cos ( x − x i ) + q 2 )
(5)样条核
K ( x , x i ) = B 2 n + 1 ( x − x i )
(6)Sigmoid核函数
K ( x , x i ) = tanh ( κ ( x , x i ) − δ )
采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
2、核函数的选择
在选取核函数解决实际问题时,通常采用的方法有:一是利用专家的先验知识预先选定核函数;二是采用Cross-Validation方法,即在进行核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核
的SVM误差小很多.三是采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想.
- 在选择分治法解决问题时,应考虑待解决问题应具有的特征包括:
I. 该问题的规模缩小到一定的程度就可以容易地解决;
II. 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质
III. 利用该问题分解出的子问题的解可以合并为该问题的解;
IV. 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
-
机器学习中L1正则化和L2正则化的区别是
使用L1可以得到稀疏的权值,使用L2可以得到平滑的权值
-
可以用于特征降维的方法包括:
主成分分析PCA
线性判别分析LDA
深度学习SparseAutoEncoder
矩阵奇异值分解SVD
-
特征提取算法分为特征选择和特征抽取(即特征降维)两大类
常采用特征选择方法。常见的六种特征选择方法:
(1)DF(Document Frequency) 文档频率:统计特征词出现的文档数量,用来衡量某个特征词的重要性
(2)MI(Mutual Information) 互信息法:用于衡量特征词与文档类别直接的信息量。
如果某个特征词的频率很低,那么互信息得分就会很大,因此互信息法倾向”低频”的特征词。
相对的词频很高的词,得分就会变低,如果这词携带了很高的信息量,互信息法就会变得低效。
(3)(Information Gain) 信息增益法:通过某个特征词的缺失与存在的两种情况下,语料中前后信息的增加,衡量某个特征词的重要性。
(4)CHI(Chi-square) 卡方检验法
利用了统计学中的”假设检验”的基本思想:首先假设特征词与类别直接是不相关的
如果利用CHI分布计算出的检验值偏离阈值越大,那么更有信心否定原假设,接受原假设的备则假设:特征词与类别有着很高的关联度。
(5)WLLR(Weighted Log Likelihood Ration)加权对数似然
(6)WFO(Weighted Frequency and Odds)加权频率和可能性
- EM(Expectation-Maximization) 算法通过逐步提高极大似然的下限,以此求出极大似然函数对参数的估计,为无监督算法
EM是一种迭代式的方法,基本思想就是:若样本服从的分布参数θ已知,则可以根据已观测到的训练样本推断出隐变量Z的期望值(E步),若Z的值已知则运用最大似然法估计出新的θ值(M步)。重复这个过程直到Z和θ值不再发生变化。
简单来讲:假设我们想估计A和B这两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值 。EM算法是MM算法(Minorize-Maximization algorithm)的特例之一,有多个改进版本,包括使用了贝叶斯推断的EM算法、EM梯度算法、广义EM算法等 。
-
贝叶斯分类器:
以贝叶斯定理为基础
是基于先验概率,推导出后验概率
可以解决有监督学习的问题
可以用极大似然估计法解贝叶斯分类器
-
隐马尔可夫模型三个基本问题以及相应的算法:
(1)前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。
(2)Baum-Welch算法解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现;
(3)维特比算法解决的是给定 一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列),是预测问题,通信中的解码问题。
- 关于线性回归的描述,以下正确的有:
基本假设包括随机干扰项是均值为0的同方差正态分布
在违背基本假设时,普通最小二乘法估计量不再是最佳线性无偏估计量
可以用DW检验残差是否存在序列相关性