前言:本人是华工19级智科专业的一个小菜鸟,机器学习这门课从我们这一届开始才有考试,因为没有往年的试题可以参考,复习的时候有 点摸不着头脑(主要还是因为上课摸鱼,考试前夕才得知老师划的重点;以及老师的PPT实在是太过凌乱,让人理不清逻辑)。
目录主要按照老师ppt的目录来,标有三角符号的为老师划的重点。考察内容侧重理解和把理论如何应用到课设中,so两个课设不能摸鱼……每一个要求都要落实。
19级机器学习试卷内容:
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并将这些规律应用到未观测样本上的方法。
深度学习是机器学习的一个子问题,其主要目的是从数据中自动学习到有效的特征表示。
深度学习可以使用神经网络,也可以使用其他模型。神经网络的误差反向传播算法可以很好地解决贡献度分配问题(CAP)。
机器学习任务本质上是根据特征判断性质,根据经验解决问题。基本流程是基于数据产生模型,利用模型预测输出。主要研究内容是模型(学习算法)。目标是让模型有较好泛化能力。
机器学习的目标是找到一个模型来近似真实映射函数g(x)或真实条件概率分布 p (y|x)。
由于我们不知道真实的映射函数 g(x) 或条件概率分布 p (y|x) 的具体形式, 只能根据经验来确定一个假设函数集合F,称为假设空间(Hypothesis Space)。
然后通过观测其在训练集 D 上的特性,从中选择一个理想的假设(Hypothesis) f∗ ∈F。
假设空间 F 通常为一个参数化的函数族F = {f(x;θ)|θ ∈ Rm}, 其中 f (x; θ) 为假设空间中的模型,θ 为一组可学习参数,m 为参数的数量。
① 假设函数直观理解:对于数据开始是不知道特征的,假设其服从某个函数 规律或者某种分布;
② 参数:假设函数中所含有的参数,本质就是学习器模型。学习的过程就是 确定参数的过程。
③ 损失函数:为了求参数(确定学习器模型),找到的一个可以 衡量模型好坏的度量函数。损失函数是一个 非负实数函数,用来量化模型预测和真实标签之间的差异。
④ 最优化过程:让度量函数最大化或者最小化,设计算法,最终确定出参数 的过程。最优化与机器学习的交汇点
数据获取、特征工程、模型选择、模型训练、模型评估、超参数条件、预测
机器学习过程中,通过确定两方面的参数来找到泛化性能最好的函数:
函数参数:也就是我们通常所说的w和b,这类参数可以通过各种最优化算法自动求得;
模型参数:比如多项式回归中的多项式次数,规则化参数入等(即超参数),一般在模型训练之前通过手工指定(当然也可以采用网格法等算法进行寻优)。确定模型超参数的过程称为模型选择(从Algorithm选择Models)。
错误率
错误率即错分样本的占比:E = a/m
误差
① 误差: 实际预测输出和样本真实输出之间的差异。
② 经验误差 / 训练误差:学习器在训练集上的误差。训练后已知。
③ 测试误差:测试集上的误差。
④ 泛化误差:在新样本上的误差(即未知样本上的,测试误差只是其中一部分)。
机器学习的目的是通过现有样本,学习到泛化误差小的预测模型;
由于事先并不知道新样本的特征,我们只能努力使经验误差最小化;
泛化误差越小越好,而经验误差不一定越小越好,有可能出现过拟合。
过拟合与欠拟合
过拟合(训练集误差小,测试集误差大)“低偏差,高方差”
学习器把训练样本学习的“太好”,将训练样本本身的特点当做所有样本的一般性质(不考虑数据噪声),导致泛化性能下降。
解决:
欠拟合(训练集测试集误差均大)“高偏差,低方差”
对训练样本的一般性质尚未学好。
解决:
决策树:拓展分支
神经网络:增加训练轮数
多候选模型泛化误差进行评估,选择泛化误差最小的模 型
前提:假设测试样本是从样本真实分布中独立同分布采用得到。
原则:测试集与训练集互斥(互不含有共同样本)
留出法
k折交叉验证法
将数据集分层采样划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的一个子集作为测试集,最终返回k个测试结果的均值,k最常用的取值是10.
特例 - 留一法(每次只留下一个样本)
自助法
总结
性能度量是衡量模型泛化能力的评价标准,反映了任务需求;使用不同的性能度量往往会导致不同的评判结果
回归模型
分类模型
两条曲线有交叉时难以判断面积大小,通过以下方法度量分类器性能:
BEP法
(0,0)到(1,1)直线与PR曲线的交点,即 “ 查全率 = 查准率 ” 时的取值。
F度量
ROC曲线 / AUC
横轴:假阳性率 F P R = F P F P + T N FPR=\dfrac{FP}{FP+TN} FPR=FP+TNFP 纵轴:真阳性率( 查全率) T P R = T P T P + F N TPR=\dfrac{TP}{TP+FN} TPR=TP+FNTP
理想点为(0,1)
若某个学习器的ROC曲线被另一个学习器的曲线“包住”,则后者性能优于前者;
否则如果曲线交叉,可以根据ROC曲线下面积大小进行比较,也即AUC值.
AUC衡量了样本预测的排序质量。
作用:(1) 选择最佳的学习器模型、舍弃次佳的模型。 (2) 在同一模型中设 定最佳阈值。
在做决策时,ROC 分析能不受成本/效益的影响,给出客观中立的建议
查准率 P:预测出来的正例中正确的比例。 P = T P T P + F P P=\dfrac{TP}{TP+FP} P=TP+FPTP
查全率 R:正例被预测出来的比例。 R = T P T P + F N R=\dfrac{TP}{TP+FN} R=TP+FNTP
真阳性率 TPR:正例被预测出来的比例。 T P R = T P T P + F N = R TPR=\dfrac{TP}{TP+FN}=R TPR=TP+FNTP=R
假阳性率 FPR:负例被检测错误的比例(误诊)。 F P R = F P F P + T N FPR=\dfrac{FP}{FP+TN} FPR=FP+TNFP
真阴性率 TNR:负例被预测出来的比例。 T N R = T N T N + F P TNR=\dfrac{TN}{TN+FP} TNR=TN+FPTN
假阴性率 FNR:正例被检测错误的比例(漏诊)。 F N R = F N F N + T P FNR=\dfrac{FN}{FN+TP} FNR=FN+TPFN
敏感性:正例被检测出来的比例 S n = T P T P + F N = T P R = 1 − F N R Sn=\dfrac{TP}{TP+FN}=TPR=1-FNR Sn=TP+FNTP=TPR=1−FNR
特异性:负例被检测出来的比例 S p = T N T N + F P = T N R = 1 − F P R Sp=\dfrac{TN}{TN+FP}=TNR=1-FPR Sp=TN+FPTN=TNR=1−FPR
偏差体现了学习器预测的准确度,而方差体现 了学习器预测的稳定性。通过对泛化误差的进行分解,可以得到:
期望泛化误差 = 方差 + 偏差
偏差(bias)可以看成模型预测与真实样本的差距,想要得到 low bias,就得复杂化模型,但是容易造成过拟合。方差(variance)可以看成模型在测试集上的表现,想要得到 low variance,就得简化模型,但是容易造成欠拟合。实际应用中,偏差和方差是需要权衡的。若模型在训练样本和测试集上都表现的不错,偏差和方差都会比较小,这也是模型比较理想的情况。
基本形式: f ( x ) = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b f(x)=w_{1}x_{1}+w_{2}x_{2}+\dots+w_{d}x_{d}+b f(x)=w1x1+w2x2+⋯+wdxd+b
x x x:属性描述的示例, x i x_{i} xi:是 x
在第 i
个属性上的取值.
向量形式: f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b
w = ( w 1 , w 2 , … , w d ) w=(w_{1},w_{2},\dots,w_{d}) w=(w1,w2,…,wd)
优点
目的
试图学得一个线性模型以尽可能准确地预测实值输出标记
模型求解
均方误差最小化:最小二乘法
广义线性模型
逼近单调可微函数 g(·)
,则有:
y = g − 1 ( w T x + b ) y=g^{-1}(w^Tx+b) y=g−1(wTx+b)
二分类任务: z = w T x + b z=w^{T}x+b z=wTx+b
如何将分类标记与线性回归模型连接起来?
y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 y=\left\{ \begin{aligned} 0, z<0 \\ 0.5, z=0\\ 1, z>0 \end{aligned} \right. y=⎩⎪⎨⎪⎧0,z<00.5,z=01,z>0
单位阶跃函数是一个不错的选择!
但是 – 阶跃函数不连续 -_- II 因此需要寻找一个单调可微的近似函数
Logistics
函数
是一种sigmoid
函数
y = 1 1 + e − z y=\dfrac{1}{1+e^{-z}} y=1+e−z1
l n y 1 − y = w T + b ln\dfrac{y}{1-y}=w^T+b ln1−yy=wT+b
详见模式识别课本
一对多
C个判别函数
一对一
C ( C − 1 ) 2 \dfrac{C(C-1)}{2} 2C(C−1) 个判别函数
请简述在线性不可分样本中SVM引入核函数的目的,常见的核函数以及它们的使用场景和效果。
答: ① 我们遇到线性不可分的样例时,常用做法是把样本特征映射到高维空间中去。 但是遇到线性不可分的样本,一律映射到高维空间,那么这个维度大小是会高到令人恐怖的。 此时,核函数就体现出它的价值了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换, 但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表现在了高维上, 这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。
② 事实上,核函数的研究非常的早,要比SVM出现早得多,当然, 将它引入SVM中是最近二十多年的事情。对于从低维到高维的映射,核函数不止一个。
1) **线性核函数(Linear Kernel)**适用于线性可分的样本集上,分类效果良好:
网格搜索
交叉验证
启发式算法
……
[【机器学习】支持向量机——软间隔(SVM中篇)_慕课手记 (imooc.com)](https://www.imooc.com/article/266377#:~:text=软间隔是相对于硬间隔定义的。 上节中介绍的线性可分的SVM算法,属于硬间隔。 硬间隔,,就是存在所有样本必须划分正确的约束条件,即所有样本必须 严格满足 : 所以从这个角度分析,上篇介绍的算法,是在硬间隔定义的基础之上推导的。)
logistic
输出具有自然的概率意义,再给出预测标记的同时给出了概率意义
可以直接用于多分类任务
损失函数是光滑的单调函数,其解依赖于更多训练样本,预测开销更大。
Logistic回归目标函数是最大化后验概率
SVM
联系:
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。
区别:
1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、Logic 能做的 SVM能做,但可能在准确率上有问题,SVM能做的Logic有的做不了。答案来源:机器学习常见面试问题(一)
10.LR与线性回归的区别与联系?
@nishizhen
个人感觉逻辑回归和线性回归首先都是广义的线性回归,
其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,
另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。
@乖乖癞皮狗:逻辑回归的模型本质上是一个线性回归模型,逻辑回归都是以线性回归为理论支持的。但线性回归模型无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。
svm 的损失函数折叶损失(hinge loss)是针对样本的标记类别之外的其他类别进行损失计算的,也就是说标记类别不计入损失,其他类别计算损失并累加作为某个样本的损失。而softmax的损失函数交叉熵损失(cross-entropy loss)只跟某个样本的标记类别相关,根据该标记类别的概率计算损失值,而不考虑标记类别之外的其他类别。从上面的公式就可以得出这个结论。
1.简述svm原理:
svm是一种二分类模型,基本思想是寻找能够正确划分训练集数据并且间隔最大的分离超平面。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)—学习的对偶问题—软间隔最大化(引入松弛变量)—非线性支持向量机(核技巧)。
2.SVM为什么采用间隔最大化?
一方面,分离超平面有无穷个,但是间隔最大的分离超平面只有一个,因此解是唯一的;另一方面,间隔最大的分离超平面对于未知实例的泛化能力最强。
3.为什么引入核函数?
当样本在原始空间线性不可分的时候,可以将样本从原始空间映射到更高维的特征空间,使得样本在这个特征空间内线性可分。引入映射后的对偶问题:
在学习预测中,只定义核函数K(x,y),而不是显式的定义映射函数ϕ。因为特征空间维数可能很高,甚至可能是无穷维,因此直接计算ϕ(x)·ϕ(y)是比较困难的。相反,直接计算K(x,y)比较容易(即直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果)。
核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数K计算的结果。
除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
4、样本失衡会对SVM的结果产生影响吗?
答:会,超平面会靠近样本少的类别。因为使用的是软间隔分类,而如果对所有类别都是使用同样的惩罚系数,则由于优化目标里面有最小化惩罚量,所以靠近少数样本时,其惩罚量会少一些。比如:假设理想的分隔超平面是大样本中有很多数据到该超平面的函数距离是小于1的,而小样本中是只有少数样本的函数距离小于1的。但是由于惩罚系数相同,实际算法得到的超平面会往小样本数据靠近。
样本失衡的解决办法:
1)、对多数类和和少数类采用不同的惩罚因子,对正例和负例赋予不同的C值,例如正例远少于负例,则正例的C值取得较大,这种方法的缺点是可能会偏离原始数据的概率分布;
2)、对训练集的数据进行预处理即对数量少的样本以某种策略进行采样,增加其数量或者减少数量多的样本,典型的方法如:随机插入法,缺点是可能出现 overfitting,较好的是:Synthetic Minority Over-sampling TEchnique(SMOTE),其缺点是只能应用在具体的特征空间中,不适合处理那些无法用特征向量表示的问题,当然增加样本也意味着训练时间可能增加;
3)、基于核函数的不平衡数据处理。
5.核函数如何选取?
在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最小的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:
如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况(选用LR或者线性核的SVM是为了避免造成庞大的计算量)。
6.SVM怎么防止过拟合 ?
引入松弛变量:
7.svm优缺点?
优点:适用于高维数据;能够处理非线性特征之间的相互作用;无需依赖整个数据,只依赖于支持向量;
占用内存小,泛化能力好。
缺点:当观测样本很多时,效率并不是很高;有时候很难找到一个合适的核函数
决定人工神经网络特性的三大要素:
• 激励函数:神经元不同数学模型主要区别在于不同的激励函数,反应输出与激活状态关系的函数
• 拓扑结构:分布式存储记忆、分布式信息处理、高度互连性、高度并行性和结构可塑性。
• 学习算法(学习规则,训练规则,训练算法):通过学习训练,不断改变网络连接权值以及拓扑结构,使 得网络输出接近期望输出。本质是:可变权值的动态调整
人工神经元(Artificial Neuron),简称神经元(Neuron),是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组输入信号并 产出输出。
结合M-P模型示意图来看,对于某一个神经元j,它可能接受同时接受了许多个输入信号,用χi表示。
由于生物神经元具有不同的突触性质和突触强度,所以对神经元的影响不同,我们用权值ωij来表示,其大小则代表了突出的不同连接强度。
θj表示为一个阈值(threshold),或称为偏置(bias),超过阈值为兴奋,低于是抑制。
由于累加性,我们对全部输入信号进行累加整合,相当于生物神经元中的膜电位(水的变化总量),其值就为:
激活函数
为了增强网络的表示能力和学习能 力,激活函数需要具备以下几点性质:
- 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以 直接利用数值优化的方法来学习网络参数。
- 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
- 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小, 否则会影响训练的效率和稳定性。
一类S型曲线函数,为两端饱和函数
Logistic
Tanh
Tanh函数可以看作是放大并平移的Logistic函数,其值域是(−1, 1)。
非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移,并进一步使得梯度下降的收敛速度变慢。
Hard-Logistic 和 Hard-Tanh
这两个激活函数计算开销大,可以使用分段函数近似
斜坡函数
优点:计算更加高效;具有很好的稀疏性;在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降 的收敛速度。
缺点:输出是非零中心化的,给后一层的神经网络引入偏置偏移, 会影响梯度下降的效率;
死亡ReLU问题。
带泄露的ReLU
带参数的ReLU
ELU
softplus
Swish函数
Maxout单元
前馈网络:神经元之间不存在同层连接也不存在跨层连接,即网络中无环或者回路。
每层神经元与下一层神经元之间完全互连
神经元之间不存在同层连接
神经元之间不存在跨层连接
推导过程见模式识别PPT
链式法则
非凸优化问题
梯度消失问题
由于Sigmoid型函数的饱和性,饱和区的导数更是接近于0。这样,误差经过每一层传递都会不断衰减。当网络层数很深时,梯度就会不停的衰减,甚至消 失,使得整个网络很难训练。这就是所谓的梯度消失问题(Vanishing Gradient Problem),也叫梯度弥散问题。
在深层神经网络中,减轻梯度消失问题的方法有很多种。一种简单有效的方式是使用导数比较大的激活函数,比如ReLU等。
其他
深度学习 ≠ 神经网络
深度学习是机器学习的一个子问题,其主要目的是从数据中自动学习到有效的特征表示。
深度学习可以使用神经网络,也可以使用其他模型。神经网络的误差反向传播算法可以很好地解决贡献度分配问题(CAP)。
全连接前馈神经网络
卷积神经网络
输入:D个特征映射 M×N×D
输出:P个特征映射 M′×N′×P
一个卷积块为连续M 个卷积层和b个汇聚层(M通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块,然后在接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K一般为0 ∼ 2)。
残差网络(ResNet)是通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。
假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)f(x,θ)去逼近一个目标函数为h(x)。
残差单元由多个级联的(等长)卷积层和一个跨层的直连边组成,再经过ReLU激活后得到输出。
残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。
残差网络与普通网络的区别
普通卷积网络:在网络层数加深的时候,会出现梯度消失问题,精度下降。
而残差网络:
假定某段神经网络的输入是x,期望输出是H(x)。
如果已经学习到较饱和的准确率(或者当发现下层的误差变大时),那么接下来的学习目标就转变为恒等映射的学习,也就是使输入x近似于输出H(x),以保持在后面的层次中不会造成精度下降。
在上图的残差网络结构图中,通过“shortcut connections(捷径连接)”的方式,直接把输入x传到输出作为初始结果,输出结果为H(x)=F(x)+x,当F(x)=0时,那么H(x)=x,也就是上面所提到的恒等映射。
于是,ResNet相当于将学习目标改变了,不再是学习一个完整的输出,而是目标值H(X)和x的差值,也就是所谓的残差F(x) := H(x)-x,因此,后面的训练目标就是要将残差结果逼近于0,使到随着网络加深,准确率不下降。
这种残差跳跃式的结构,打破了传统的神经网络n-1层的输出只能给n层作为输入的惯例,使某一层的输出可以直接跨过几层作为后面某一层的输入,其意义在于为叠加多层网络而使得整个学习模型的错误率不降反升的难题提供了新的方向。
至此,神经网络的层数可以超越之前的约束,达到几十层、上百层甚至千层,为高级语义特征提取和分类提供了可行性。
区别就在循环层上。
卷积神经网络没有时序性的概念,不考虑数据之间的关联性;每次的输入都是独立的,网络的输出只和当前时刻的输入有关;
循环神经网络具有时序性,当前决策跟前一次决策有关。
相同点:
传统神经网络的扩展;
前向计算产生结果,反向计算模型更新;
每层神经网络横向可以多个神经元共存,纵向可以有多层神经网络连接。
不同点:
CNN空间扩展,神经元与特征卷积;RNN时间扩展,神经元与多个时间输出计算;
RNN可以用于描述时间上连续状态的输出,有记忆功能,CNN用于静态输出;
CNN高级100+深度,RNN深度有限。
优化:风险最小化 正则化:降低模型复杂度