卷积层:提取特征
池化层:减少图片特征,避免全连接参数过多
=>得到feature map
全连接:按权值分类
sigmoid函数:单一分类
Softmax(交叉熵损失)多分类,求出概率
1、SVM得到的解是全局最优解,神经网络是得到局部最优解。
2、SVM与神经网络可以认为都源自于感知机,但是SVM是通过升维将非线性问题在核空间里映射成为一个线性问题,而神经网络则是通过多个感知机的组合叠加来解决分类问题。
3、SVM基于最大边缘的思想,因而依赖的参数较少,但是神经网络非常依赖参数(如学习率、隐含层的结构、节点的个数等),参数的好坏对神经网络的影响很大。
识别物体及其位置。bounding box(x,y:中心坐标,w,h:框的宽高)(xmin,ymin:左上角坐标,xmax,ymax:右下角坐标)
overfeat:暴力穷举,计算量过大
R-CNN:训练模型多,耗时长
找出2000个候选区域,调整为一样的大小。
2000张图片卷积提取特征向量
对不同类别用SVM进行(二)分类。
2000个进行非极大抑制(NMS),只保留一个最优的框,删去重叠特征。对2000个区域的得分以0.5为界进行筛选。剩余候选框找到自己真实框位置,每个候选框互相IOU(交集/并集),淘汰大的,最终最好一个物体剩余一个候选框。
修正候选框,bbox回归微调
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nq9El5LR-1668769102311)(C:\Users\ThinkPad\AppData\Roaming\Typora\typora-user-images\image-20220915105734882.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VmKvY0e-1668769102312)(C:\Users\ThinkPad\AppData\Roaming\Typora\typora-user-images\image-20220915112549919.png)]
SPP-net:整个图像卷积->SPP池化提取特征向量->SVM分类->bbox调整
Fast R-CNN:提出rol pooling+softmax
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kPgmYzK-1668769102313)(C:\Users\ThinkPad\AppData\Roaming\Typora\typora-user-images\image-20220915114415145.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Sq6xbx2-1668769102313)(C:\Users\ThinkPad\AppData\Roaming\Typora\typora-user-images\image-20220915114059004.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hF8uQ9IQ-1668769102313)(C:\Users\ThinkPad\Desktop\专业课\image-20220915114733731.png)]
faster R-CNN:端到端模型,用区域生成网络(RPN)代替SS(选择搜索算法)
YOLO:GooleNet+4个卷积+2个全连接层
图片分成grid cell,一个网格预测两个bbox,预测物体类别与概率,直接由网络输出。由中心点是否在网格中判断网格里面是否有物体。没有物体,confidence=0,有confidence score=预测的box 和GT的IOU乘积。
最大抑制,过滤掉概率低的bbox
训练:反向输出,位置与目标位置损失计算,概率与目标概率损失计算
缺点:两个物体中心点落到一个网格内,小物体检测准确率低
SSD:保留不同尺度形成的中间特征值,不同尺度的特征图上采用卷积核来预测一系列Default Bounding Boxes的类型、坐标偏移
在反向传播过程中需要对激活函数进行求导,如果导数大于 1 11,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸。同样如果导数小于 1 11,那么随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少这就是梯度消失。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。
解决方法:
[1] 对于RNN,可以通过梯度截断,避免梯度爆炸。
[2] 可以通过添加正则项,避免梯度爆炸。
[3] 使用LSTM等自循环和门控制机制,避免梯度消失。
[4] 优化激活函数,譬如将 sigmoid 改为 relu,避免梯度消失。
数据挖掘:数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程,包含了机器学习、统计学、数学等多个学科的知识。
数据挖掘三大常见的任务:
♣ 回归任务:回归任务是一种对连续型随机变量进行预测和建模的监督学习算法,使用案例包括房价预测、股票走势等。
♣ 分类任务:分类是一种对离散型变量建模或预测的监督学习算法,使用案例包括邮件过滤、金融欺诈等。
♣ 聚类任务:聚类是一种无监督学习,它是基于数据的内部结构寻找观察样本的自然族群(集群),使用案例包括新闻聚类、文章推荐等。
♢ 监督学习:数据集中每个样本都有相应的标签。
♢ 无监督学习:数据集中的样本没有相应的标签。
无监督学习算法(Unsupervised Learning)使用无标记数据(输入变量没有对应输出结果),试图识别数据本身的内部结构。无监督学习算法主要有两类:降维算法(降低数据维度)如主成分分析等,聚类算法如K均值聚类、层次聚类等。
PCA (Principal Component Analysis)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
(1)关于回归
从大量的函数结果和自变量反推回函数表达式的过程就是回归。
回归算法是一种有监督学习算法,用来建立自变量 X和观测变量 Y之间的映射关系,如果观测变量是离散的,则称其为分类Classification;如果观测变量是连续的,则称其为回归Regression。
回归算法的目的是寻找假设函数hypothesis来最好的拟合给定的数据集。常用的回归算法有:线性回归(Linear Regression)、逻辑回归(Logistic Regression)、多项式回归(Polynomial Regression)、岭回归(Ridge Regression)、LASSO回归(Least Absolute Shrinkage and Selection Operator)、弹性网络(Elastic Net estimators)、逐步回归(Stepwise Regression)等。
(2)线性回归模型
(3)随机森林(Random Forest,简称RF)算法
a) 集成学习
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立 地学习和做出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。随机森林是集成 学习的一个子类,它依靠于决策树的投票选择来决定最后的分类结果。
集成学习分两种:
[1] 模型之间彼此存在依赖关系,按一定的次序搭建多个分类模型,一般后一个模型的加入都需要对现有的 集成模型有一定贡献,进而不断提高更新过后的集成模型性能,并借助多个弱分类器搭建出强分类器。代 表有Boosting(AdaBoost)算法。该算法与第一种的随机森林主要区别在于每一颗决策树在生成的过程 中都会尽可能降低模型在训练集上的拟合或训练误差
[2] 模型之间彼此不存在依赖关系,彼此独立。利用相同的训练数据同时搭建多个独立的分类模型,然后通 过投票的方式,以少数服从多数的原则做出最终的分类决策。例如:Bagging和随机森林(Random Forest).
b) 概述
严格来说,随机森林其实算是一种集成算法。它首先随机选取不同的特征(feature)和训练样本(training sample),生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。
随机森林算法是最常用也是最强大的监督学习算法之一,它兼顾了解决回归问题和分类问题的能力。随机森林是通过集成学习的思想,将多棵决策树进行集成的算法。对于分类问题,其输出的类别是由个别树输出的众数所决定的。在回归问题中,把每一棵决策树的输出进行平均得到最终的回归结果。
tips:决策树的数量越大,随机森林算法的鲁棒性越强,精确度越高。
随机森林在现实分析中被大量使用,它相对于决策树,在准确性上有了很大的提升,同时一定程度上改善了决策树容易被攻击的特点。
c) 随机森林算法的步骤
首先,对样本数据进行有放回的抽样,得到多个样本集。 具体来讲就是每次从原来的N个训练样本中有放回地随机抽取 N个样本(包括可能重复样本)。
然后,从候选的特征中随机抽取 m mm 个特征,作为当前节点下决策的备选特征,从这些特征中选择最好的划分训练样本的特征。用每个样本集作为训练样本构造决策树。 单个决策树在产生样本集和确定特征后,使用CART算法计算,不剪枝。
最后,得到所需数目的决策树后,随机森林方法对这些树的输出进行投票,以得票最多的类作为随机森林的决策。
或:
随机森林是基于bagging框架下的决策树模型,随机森林包含了很多树,每棵树给出分类结果,每棵树的生成规则如下:
如果训练集大小为 N,对于每棵树而言,随机且有放回地从训练中抽取 N个训练样本,作为该树的训练集,重复 K次,生成 K组训练样本集。
如果每个特征的样本维度为 M ,指定一个常数 m ≪ M ,随机地从 M 个特征中选取 m 个特征。
利用 m mm 个特征对每棵树尽最大程度的生长,并且没有剪枝过程。
随机森林中有两个可控制参数:
♠ 森林中树的数量(一般选取值较大)。
♠ 抽取的属性值 m的大小。
d) 随机森林的特点
在当前所有算法中,具有极好的准确率
能够有效地运行在大数据集上
能够处理具有高维特征的输入样本,而且不需要降维
能够评估各个特征在分类问题上的重要性
在生成过程中,能够获取到内部生成误差的一种无偏估计
对于缺省值问题也能够获得很好的结果
e) 随机森林算法的缺点
随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。(处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处)。
f) 适用情景
(随机森林既可以用于分类,也可以用于回归。一般适用于数据维度较低,同时对准确性要求较高的场景中。)数据维度相对低(几十维),同时对准确性有较高要求时。
因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法时都可以先试一下随机森林。
优点:原理简单、容易实现。
缺点:收敛太慢、算法复杂度高、需先确定K的个数、结果不一定是全局最优,只能保证局部最优。
由于每次都要计算所有样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
改进收敛速度:第一次迭代正常进行,选取 K KK 个初始点为质心,然后计算所有节点到这些质心的距离,后续的迭代中,不再计算每个点到所有 K KK 个质心的距离,仅仅计算上一次迭代中离这个节点最近的某几个质心的距离,对于其他的质心,因为距离太远,归属到那些组的可能性非常小,所以不用再重复计算距离了。
(k最邻近分类算法,每个样本都可以用它最接近的 k 个邻居中大多数样本所属的类别来代表,其中近邻距离的度量方法有余弦值,在实际中 k 值一般取一个比较小的数值,通常采用交叉验证法(就是利用一部分样本做训练集,一部分样本做测试集),通过观察 k 值不同时模型的分类效果来选取最优的 k值。)
d) 优缺点
优点:
e) ID3算法
熵是信息论中的概念,熵度量了事物的不确定性,越不确定的事物,它的熵就越大。当每件事物发生的概率相同时,它们发生的随机性最大,所以它们的熵也就越大。ID3算法就是用信息增益来判别当前节点应该用什么特征来构建决策树。某个特征的信息增益越大表示该特征对数据集的分类的不确定性减少的程度越高,越适合用来分类。
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。 具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。ID3相当于用极大似然估计法进行概率模型的选择。
ID3算法的不足:
f) C4.5算法
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进,C4.5在生成的过程中,用信息增益比来选择特征。
C4.5算法的不足:
朴素贝叶斯(naive Bayes)法是一种基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入 x xx,利用贝叶斯定理求出后验概率最大的输出 y yy。
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,学习与预测的效率都很高,多用于文本分类,比如垃圾邮件过滤。
b) QA:朴素贝叶斯朴素在哪里呢?
—— 两个假设:
一个特征出现的概率与其他特征(条件)独立。
每个特征同等重要。
或:假设各特征之间相互独立。
c) 优缺点
优点:
1、计算量较小
2、支持懒惰学习、增量学习
3、对缺失数据不太敏感
4、推断即查表,速度极快
缺点:
1、没有考虑属性间依赖
2、通过类先验概率产生模型
逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。
逻辑回归是一个使用逻辑函数将线性回归的结果归一化的分类模型,这里的归一化指将值约束在 0 00 和 1 11 之间。
缺点:容易欠拟合,分类精度可能不高。
通俗来讲,SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
SVM分类,就是找到一个超平面,让两个分类集合的支持向量或者所有的数据(LSSVM)离分类平面最远;SVR回归,就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。SVR是支持向量回归(support vector regression)的英文缩写,是支持向量机(SVM)的重要的应用分支。
a) 目标
SVM是一个二类分类器,它的目标是找到一个超平面,使用两类数据离超平面越远越好,从而对新的数据分类更准确,即使分类器更加健壮。
支持向量(Support Vetor):就是离分隔超平面最近的那些点。
寻找最大间隔:就是寻找最大化支持向量到分隔超平面的距离,在此条件下求出分隔超平面。
b) 支持向量机的基本原理
【硬间隔】支持向量机的基本原理是在(不同的)类间找到合适的最宽的‘街道’(street)。换句话说,目标是在划分两类训练样本的决策边界之间找到最大的间隔。
【软间隔】当用软间隔(soft-margin)进行分类时,SVM在‘完美划分两类’和‘找到最宽街道’之间做一个折中(亦即少数样本会落到‘街道’上)。
【核】另外一个关键思想是当在非线性数据集上用核(kernel)。核函数(kernel function)将特征从低维到高维进行转换,但是它是先在低维上进行计算,实际的分类效果表现在高维上。这样就避免了在高维上复杂的计算,仍得到相同的结果。
♡ \heartsuit♡一些常用的核函数:多项式核、高斯核、线性核。
c) SVM特点
非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;
对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;
支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。因此,模型需要存储空间小,算法鲁棒性强;
无任何前提假设,不涉及概率测度;
SVM算法对大规模训练样本难以实施
由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及N阶矩阵的计算(N NN 为样本的个数),当 N NN 数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。
用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
d) 解释SVM为什么要化对偶形?百万样本量可以用SVM吗?
对偶问题将原始问题中的约束转为了对偶问题中的等式约束。
方便核函数的引入。
改变了问题的复杂度。由求特征向量 w ww 转化为求比例系数 a aa,在原始问题下,求解的复杂度与样本的维度有关,即 w ww 的维度。在对偶问题下,只与样本数量有关。
在一个有百万量级的样本和数以百计的特征的训练集上,该用原始形式还是对偶形式的SVM****来训练模型?
这个问题只能是对线性SVM来说有意义,因为核-SVM只能用对偶形式。SVM的原始形式的计算复杂度与样本数 m mm 成比例 ( O ( m ) ) (O(m))(O(m)),对偶形式的计算复杂度在 m 2 m^2m
2
和 m 3 m^3m
3
之间 ( O ( m 2 ) ∼ O ( m 3 ) ) (O(m^2)\sim O(m^3))(O(m
2
)∼O(m
3
))。因此如果有百万量级的样本,肯定需要用原始形式,因为对偶形式慢得多。
e) 优缺点
优点:
1、可解决小样本的机器学习任务
2、可解决高维问题
3、可通过核方法解决非线性问题
缺点:
1、对缺失数据敏感
2、对于非线性问题,核函数方法选择一直是个未决问题
遗传算法GA(GeneTIc Algorithms)
基于进化理论,并采用遗传结合、遗传变异、以及自然选择等设计方法的优化技术。主要思想是:根据适者生存的原则,形成由当前群体中最适合的规则组成新的群体,以及这些规则的后代。典型情况下,规则的适合度(Fitness)用它对训练样本集的分类准确率评估。
神经网络算法
在结构上,可以把一个神经网络划分为输入层、输出层和隐含层。输入层的每个节点对应—个个的预测变量。输出层的节点对应目标变量,可有多个。在输入层和输出层之间是隐含层(对神经网络使用者来说不可见),隐含层的层数和每层节点的个数决定了神经网络的复杂度。
除了输入层的节点,神经网络的每个节点都与很多它前面的节点(称为此节点的输入节点)连接在一起,每个连接对应一个权重 W x y W_{xy}W
xy
,此节点的值就是通过它所有输入节点的值与对应连接权重乘积的和作为—个函数的输入而得到,我们把这个函数称为活动函数或挤压函数。
使用神经网络有 4 44 个步骤:
[1] 提取问题中实体的特征向量作为神经网络的输入,不同实体可以提取不同的特征向量。
[2] 定义神经网络的结构,并定义如何从神经网络中的输入得到输出,这个过程就是神经网络的前向传播算法。
[3] 通过训练数据来调整神经网络参数的取值,这就是训练神经网络的过程。
[4] 使用训练的神经网络来预测未知的数据。
a) 优缺点
优点:
1、分类的准确度极高
2、可解决复杂的非线性问题
3、对噪声神经有较强的鲁棒性和容错能力
4、并行分布处理能力强,分布存储及学习能力强
5、常用于图像识别
6、数据量越大,表现越好
缺点:
1、黑箱模型,难以解释
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
3、误差逆传播的损失
4、容易陷入局部最小
b) 深度学习原理
使用足够多的参数就可以以任意精度逼近任何函数,而深度学习很容易就把参数加多(层数加深+加宽),这是传统的机器学习方法无法轻易做到的。
对神经网络的权重随机赋值,由于是对输入数据进行随机的变换,因此跟预期值可能差距很大,相应地,损失值也很高;
根据损失值,利用反向传播算法来微调神经网络每层的参数,从而较低损失值;
根据调整的参数继续计算预测值,并计算预测值和预期值的差距,即损失值;
重复步骤 2,3,直到整个网络的损失值达到最小,即算法收敛。
c) 深度学习的优点
机器学习技术(浅层学习)仅将输入数据变换到一两个连续的表示空间,通常使用简单的变换,这通常无法得到复杂问题所需要的精确表示。因此,人们必须竭尽全力让输入数据更适合这些方法来处理,也必须手动为数据设计好表示层,这个过程叫做特征工程。
深度学习的优点在于它在很多问题上都变现出更好的性能,并且简化了问题的解决步骤,因为它将特征工程完全自动化。利用深度学习,你可以一次性学习所有特征,而无须自己手动设计。这极大地简化了机器学习工作流程,通常将复杂的多阶段流程替换为一个简单的、端到端的深度学习模型。
深度学习的变革性在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称为贪婪学习)。通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特征都会相应地自动调节适应,无须人为干预。
深度学习从数据中进行学习时有两个基本特征:第一,通过渐进的、逐层的方式形成越来越复杂的表示;第二,对中间这些渐进的表示共同进行学习,每一层的变化都需要同时考虑上下两层的需要。
奇异值分解在统计中的主要应用为主成分分析(PCA),一种数据分析方法,用来找出大量数据中所隐含的“模式”,它可以用在模式识别,数据压缩等方面。PCA算法的作用是把数据集映射到低维空间中去。数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量组成的空间即为降维后的空间。
■ \blacksquare■ 矩阵分解的物理意义
特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。 ——《机器学习》
定义
最小二乘法(又称最小平方法)是一种优化方法。它通过最小化误差的平方和寻找数据的最佳函数进行匹配。最小二乘法可以用于求得目标函数的最优值,也可以用于曲线拟合,来解决回归问题。(利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。)
几何意义
最小二乘法的几何意义是高维空间中的一个向量在低维子空间的投影。
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线的欧氏距离之和最小。
,
∂y
∂f
)
T
,简称 g r a d f ( x , y ) grad f(x,y)gradf(x,y) 或者 ▽ f ( x , y ) ▽f(x,y)▽f(x,y)。对于在点 ( x 0 , y 0 ) (x_0,y_0)(x
0
,y
0
) 的具体梯度向量就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T (\frac{∂f}{∂x_0}, \frac{∂f}{∂{y_0}})^T(
∂x
0
∂f
,
∂y
0
∂f
)
T
, 或者 ▽ f ( x 0 , y 0 ) ▽f(x0,y0)▽f(x0,y0),如果是 3 33 个参数的向量梯度,就是 ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ) T (\frac{∂f}{∂x}, \frac{∂f}{∂y}, \frac{∂f}{∂z})^T(
∂x
∂f
,
∂y
∂f
,
∂z
∂f
)
T
,以此类推。
那么这个梯度向量求出来有什么意义呢?它的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数 f ( x , y ) f(x,y)f(x,y),在点 ( x 0 , y 0 ) (x_0,y_0)(x
0
,y
0
),沿着梯度向量的方向就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T (\frac{∂f}{∂x_0}, \frac{∂f}{∂{y_0}})^T(
∂x
0
∂f
,
∂y
0
∂f
)
T
的方向是 f ( x , y ) f(x,y)f(x,y) 增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 − ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T -(\frac{∂f}{∂x_0}, \frac{∂f}{∂{y_0}})^T−(
∂x
0
∂f
,
∂y
0
∂f
)
T
的方向,梯度减少最快,也就是更加容易找到函数的最小值。
梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的。梯度下降算法背后的原理:目标函数 J ( θ ) J(θ)J(θ) 关于参数 θ \thetaθ 的梯度将是损失函数(loss function)上升最快的方向。而我们要最小化 l o s s lossloss,只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数(loss function)的下降。
梯度下降法是最常用的最优算法之一。当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。我们还需要假设函数是可微的,否则无法获得封闭解(即给出任意的自变量就可以求出其因变量)。
梯度下降法是一阶优化算法(因为只利用到了函数的一阶导数信息),其思想是用当前位置负梯度方向作为搜索方向,移动与当前位置负梯度成比例的一段步长。因为该方向为当前位置的最快下降方向,所以也被称为是最速下降法。
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数 f ( θ ) f(θ)f(θ) 的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 − f ( θ ) -f(θ)−f(θ) 的最大值,这时梯度上升法就派上用场了。
对于这些缺点,可以通过使用可变学习率的方法优化,例如线性搜索等方法,每次迭代前寻找最优的学习率,再进行迭代。
优点:全局最优解;易于并行实现; 缺点:当样本数目很多时,训练过程会很慢。
[2] 随机梯度下降(Stochastic Gradient Descent,SGD)
随机梯度下降的思路是在每次迭代时,只使用一个样本,当样本个数很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经迭代到最优解了。
优点:训练速度快; 缺点:准确度下降,并不是全局最优。
对批量梯度下降法和随机梯度下降法的总结:
批量梯度下降—最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。
[3] 小批量梯度下降法(Mini-batch Gradient Descent,MBGD)
它的具体思路是在更新每一参数时都使用一部分样本(b a t c h batchbatch)来进行更新,可以选择对每个 b a t c h batchbatch 的梯度进行累加,或者取平均值。取平均值可以减少梯度的方差。可以看出该方法克服了上面两种方法的缺点,又同时兼顾两种方法的优点,是如今深度学习领域最常见的实现方式。
首先它们都是机器学习中,计算问题最优解的优化方法,但它们采用的方式不同,前者采用暴力的解方程组方式,直接,简单,粗暴,在条件允许下,求得最优解;而后者采用步进迭代的方式,一步一步的逼近最优解。实际应用中,大多问题是不能直接解方程求得最优解的,所以梯度下降法应用广泛。
KNN
Kmeans