在反向传播过程中需要对激活函数进行求导,如果导数大于 1 1 1,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸。同样如果导数小于 1 1 1,那么随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少这就是梯度消失。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。
数据挖掘:数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程,包含了机器学习、统计学、数学等多个学科的知识。
数据挖掘三大常见的任务:
♣ \clubsuit ♣ 回归任务:回归任务是一种对连续型随机变量进行预测和建模的监督学习算法,使用案例包括房价预测、股票走势等。
♣ \clubsuit ♣ 分类任务:分类是一种对离散型变量建模或预测的监督学习算法,使用案例包括邮件过滤、金融欺诈等。
♣ \clubsuit ♣ 聚类任务:聚类是一种无监督学习,它是基于数据的内部结构寻找观察样本的自然族群(集群),使用案例包括新闻聚类、文章推荐等。
♢ \diamondsuit ♢ 监督学习:数据集中每个样本都有相应的标签。
♢ \diamondsuit ♢ 无监督学习:数据集中的样本没有相应的标签。
无监督学习算法(Unsupervised Learning)使用无标记数据(输入变量没有对应输出结果),试图识别数据本身的内部结构。无监督学习算法主要有两类:降维算法(降低数据维度)如主成分分析等,聚类算法如K均值聚类、层次聚类等。
PCA (Principal Component Analysis)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
从大量的函数结果和自变量反推回函数表达式的过程就是回归。
回归算法是一种有监督学习算法,用来建立自变量 X X X 和观测变量 Y Y Y 之间的映射关系,如果观测变量是离散的,则称其为分类Classification;如果观测变量是连续的,则称其为回归Regression。
回归算法的目的是寻找假设函数hypothesis来最好的拟合给定的数据集。常用的回归算法有:线性回归(Linear Regression)、逻辑回归(Logistic Regression)、多项式回归(Polynomial Regression)、岭回归(Ridge Regression)、LASSO回归(Least Absolute Shrinkage and Selection Operator)、弹性网络(Elastic Net estimators)、逐步回归(Stepwise Regression)等。
线性回归模型试图学得一个线性模型以尽可能准确地预测实值 X X X 的输出标记 Y Y Y。在这个模型中,因变量 Y Y Y 是连续的,自变量 X X X 可以是连续或离散的。
(线性回归的定义是:目标值预期是输入变量的线性组合。)
在回归分析中,如果只包括一个自变量和一个因变量,且二者关系可用一条直线近似表示,称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且因变量和自变量是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线,对于三维空间线性是一个平面,对于多维空间线性是一个超平面。
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和做出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。随机森林是集成学习的一个子类,它依靠于决策树的投票选择来决定最后的分类结果。
严格来说,随机森林其实算是一种集成算法。它首先随机选取不同的特征(feature)和训练样本(training sample),生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。
随机森林算法是最常用也是最强大的监督学习算法之一,它兼顾了解决回归问题和分类问题的能力。随机森林是通过集成学习的思想,将多棵决策树进行集成的算法。对于分类问题,其输出的类别是由个别树输出的众数所决定的。在回归问题中,把每一棵决策树的输出进行平均得到最终的回归结果。
tips:决策树的数量越大,随机森林算法的鲁棒性越强,精确度越高。
随机森林在现实分析中被大量使用,它相对于决策树,在准确性上有了很大的提升,同时一定程度上改善了决策树容易被攻击的特点。
或:
随机森林是基于bagging框架下的决策树模型,随机森林包含了很多树,每棵树给出分类结果,每棵树的生成规则如下:
(随机森林既可以用于分类,也可以用于回归。一般适用于数据维度较低,同时对准确性要求较高的场景中。)
聚类算法,事先确定常数 k k k, k k k 代表着聚类类别数。首先随机选取 k k k 个初始点为质心,并通过计算每一个样本与质心之间的相似度(可以采用欧式距离),将样本点归到最相似的类中,接着重新计算每个类的质心(该类中所有点的平均值),重复这样的过程直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。
优点:原理简单、容易实现。
缺点:收敛太慢、算法复杂度高、需先确定K的个数、结果不一定是全局最优,只能保证局部最优。
由于每次都要计算所有样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
改进收敛速度:第一次迭代正常进行,选取 K K K 个初始点为质心,然后计算所有节点到这些质心的距离,后续的迭代中,不再计算每个点到所有 K K K 个质心的距离,仅仅计算上一次迭代中离这个节点最近的某几个质心的距离,对于其他的质心,因为距离太远,归属到那些组的可能性非常小,所以不用再重复计算距离了。
思路:对于待判断的点,找到离它最近的几个数据点,根据它们的类型决定待判断点的类型。
k k k 近邻学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的 k k k 个训练样本,然后基于这 k k k 个“邻居”的信息来进行预测。通常,在分类任务中可使用“投票法”,即选择这 k k k 个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这 k k k 个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。
( k k k 最邻近分类算法,每个样本都可以用它最接近的 k k k 个邻居中大多数样本所属的类别来代表,其中近邻距离的度量方法有余弦值,在实际中 k k k 值一般取一个比较小的数值,通常采用交叉验证法(就是利用一部分样本做训练集,一部分样本做测试集),通过观察 k k k 值不同时模型的分类效果来选取最优的 k k k 值。)
决策树是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域。其本质是一颗由多个判断节点组成的树。在使用模型进行预测时,根据输入参数依次在各个判断节点进行判断游走,最后到叶子节点即为预测结果。
决策树学习通常包括 3 3 3 个步骤:特征选择、决策树的生成和决策树的修剪。
决策树算法的核心是通过对数据的学习,选定判断节点,构造一颗合适的决策树。
决策树既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。
剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。
决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该结点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶结点。
熵是信息论中的概念,熵度量了事物的不确定性,越不确定的事物,它的熵就越大。当每件事物发生的概率相同时,它们发生的随机性最大,所以它们的熵也就越大。ID3算法就是用信息增益来判别当前节点应该用什么特征来构建决策树。某个特征的信息增益越大表示该特征对数据集的分类的不确定性减少的程度越高,越适合用来分类。
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。 具体方法是:从根节点开始,对节点计算所有可能的特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;再对子节点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。ID3相当于用极大似然估计法进行概率模型的选择。
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。C4.5算法与ID3算法相似,C4.5算法对ID3算法进行了改进,C4.5在生成的过程中,用信息增益比来选择特征。
逻辑回归通过拟合曲线(或者学习超平面)实现分类,决策树通过寻找最佳划分特征进而学习样本路径实现分类,支持向量机通过寻找分类超平面进而最大化类别间隔实现分类。相比之下,朴素贝叶斯独辟蹊径,通过特征概率来预测分类。
朴素贝叶斯(naive Bayes)法是一种基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布;然后基于此模型,对给定的输入 x x x,利用贝叶斯定理求出后验概率最大的输出 y y y。
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,学习与预测的效率都很高,多用于文本分类,比如垃圾邮件过滤。
—— 两个假设:
或:假设各特征之间相互独立。
优点:
1、计算量较小
2、支持懒惰学习、增量学习
3、对缺失数据不太敏感
4、推断即查表,速度极快
缺点:
1、没有考虑属性间依赖
2、通过类先验概率产生模型
logistic回归虽然带着回归两字却和线性回归有很大的区别,线性回归主要用于预测问题,其输出值为连续变量,而logistic回归主要用于分类问题,其输出值为离散值。logistic回归可以用于多元分类问题,也可以用于二元分类问题,但二元分类更为常用。
逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。
逻辑回归是一个使用逻辑函数将线性回归的结果归一化的分类模型,这里的归一化指将值约束在 0 0 0 和 1 1 1 之间。
缺点:容易欠拟合,分类精度可能不高。
SVM的全称是Support Vector Machine,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。
通俗来讲,SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
SVM分类,就是找到一个超平面,让两个分类集合的支持向量或者所有的数据(LSSVM)离分类平面最远;SVR回归,就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。SVR是支持向量回归(support vector regression)的英文缩写,是支持向量机(SVM)的重要的应用分支。
SVM是一个二类分类器,它的目标是找到一个超平面,使用两类数据离超平面越远越好,从而对新的数据分类更准确,即使分类器更加健壮。
【硬间隔】支持向量机的基本原理是在(不同的)类间找到合适的最宽的‘街道’(street)。换句话说,目标是在划分两类训练样本的决策边界之间找到最大的间隔。
【软间隔】当用软间隔(soft-margin)进行分类时,SVM在‘完美划分两类’和‘找到最宽街道’之间做一个折中(亦即少数样本会落到‘街道’上)。
【核】另外一个关键思想是当在非线性数据集上用核(kernel)。核函数(kernel function)将特征从低维到高维进行转换,但是它是先在低维上进行计算,实际的分类效果表现在高维上。这样就避免了在高维上复杂的计算,仍得到相同的结果。
♡ \heartsuit ♡一些常用的核函数:多项式核、高斯核、线性核。
对偶问题将原始问题中的约束转为了对偶问题中的等式约束。
方便核函数的引入。
改变了问题的复杂度。由求特征向量 w w w 转化为求比例系数 a a a,在原始问题下,求解的复杂度与样本的维度有关,即 w w w 的维度。在对偶问题下,只与样本数量有关。
优点:
1、可解决小样本的机器学习任务
2、可解决高维问题
3、可通过核方法解决非线性问题
缺点:
1、对缺失数据敏感
2、对于非线性问题,核函数方法选择一直是个未决问题
基于进化理论,并采用遗传结合、遗传变异、以及自然选择等设计方法的优化技术。主要思想是:根据适者生存的原则,形成由当前群体中最适合的规则组成新的群体,以及这些规则的后代。典型情况下,规则的适合度(Fitness)用它对训练样本集的分类准确率评估。
在结构上,可以把一个神经网络划分为输入层、输出层和隐含层。输入层的每个节点对应—个个的预测变量。输出层的节点对应目标变量,可有多个。在输入层和输出层之间是隐含层(对神经网络使用者来说不可见),隐含层的层数和每层节点的个数决定了神经网络的复杂度。
除了输入层的节点,神经网络的每个节点都与很多它前面的节点(称为此节点的输入节点)连接在一起,每个连接对应一个权重 W x y W_{xy} Wxy,此节点的值就是通过它所有输入节点的值与对应连接权重乘积的和作为—个函数的输入而得到,我们把这个函数称为活动函数或挤压函数。
优点:
1、分类的准确度极高
2、可解决复杂的非线性问题
3、对噪声神经有较强的鲁棒性和容错能力
4、并行分布处理能力强,分布存储及学习能力强
5、常用于图像识别
6、数据量越大,表现越好
缺点:
1、黑箱模型,难以解释
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
3、误差逆传播的损失
4、容易陷入局部最小
使用足够多的参数就可以以任意精度逼近任何函数,而深度学习很容易就把参数加多(层数加深+加宽),这是传统的机器学习方法无法轻易做到的。
机器学习技术(浅层学习)仅将输入数据变换到一两个连续的表示空间,通常使用简单的变换,这通常无法得到复杂问题所需要的精确表示。因此,人们必须竭尽全力让输入数据更适合这些方法来处理,也必须手动为数据设计好表示层,这个过程叫做特征工程。
深度学习的优点在于它在很多问题上都变现出更好的性能,并且简化了问题的解决步骤,因为它将特征工程完全自动化。利用深度学习,你可以一次性学习所有特征,而无须自己手动设计。这极大地简化了机器学习工作流程,通常将复杂的多阶段流程替换为一个简单的、端到端的深度学习模型。
深度学习的变革性在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称为贪婪学习)。通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特征都会相应地自动调节适应,无须人为干预。
深度学习从数据中进行学习时有两个基本特征:第一,通过渐进的、逐层的方式形成越来越复杂的表示;第二,对中间这些渐进的表示共同进行学习,每一层的变化都需要同时考虑上下两层的需要。
奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,是特征分解(矩阵必须为方阵)在任意矩阵上的推广。奇异值分解是一个适用于任意矩阵的一种分解的方法。
奇异值分解在统计中的主要应用为主成分分析(PCA),一种数据分析方法,用来找出大量数据中所隐含的“模式”,它可以用在模式识别,数据压缩等方面。PCA算法的作用是把数据集映射到低维空间中去。数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量组成的空间即为降维后的空间。
特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
最小二乘法,就是最小化平方和的优化方法;这里的平方和指的是误差(真实目标对象与拟合目标对象的差)的平方;其目的/核心思想就是通过最小化误差的平方和,使得拟合对象最大限度逼近目标对象。
基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。 ——《机器学习》
最小二乘法(又称最小平方法)是一种优化方法。它通过最小化误差的平方和寻找数据的最佳函数进行匹配。最小二乘法可以用于求得目标函数的最优值,也可以用于曲线拟合,来解决回归问题。(利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。)
最小二乘法的几何意义是高维空间中的一个向量在低维子空间的投影。
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线的欧氏距离之和最小。
最小二乘法分为两种:线性或普通的最小二乘法(Ordinary Least Squares, OLS)和非线性的最小二乘法,取决于在所有未知数中的残差是否为线性。线性的最小二乘问题发生在统计回归分析中;它有一个封闭形式的解决方案。非线性的问题通常经由迭代细致化来解决;在每次迭代中,系统由线性近似,因此在这两种情况下核心演算是相同的。梯度下降法是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法。
所谓梯度下降法,是迭代法计算最值的一种形式,是通过不断求导改变待求参数的值,来达到不断求得最值的过程。
在微积分里面,对多元函数的参数求 ∂ ∂ ∂ 偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数 f ( x , y ) f(x,y) f(x,y), 分别对 x , y x,y x,y 求偏导数,求得的梯度向量就是 ( ∂ f ∂ x , ∂ f ∂ y ) T (\frac{∂f}{∂x}, \frac{∂f}{∂y})^T (∂x∂f,∂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) (x0,y0) 的具体梯度向量就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T (\frac{∂f}{∂x_0}, \frac{∂f}{∂{y_0}})^T (∂x0∂f,∂y0∂f)T, 或者 ▽ f ( x 0 , y 0 ) ▽f(x0,y0) ▽f(x0,y0),如果是 3 3 3 个参数的向量梯度,就是 ( ∂ 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) (x0,y0),沿着梯度向量的方向就是 ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T (\frac{∂f}{∂x_0}, \frac{∂f}{∂{y_0}})^T (∂x0∂f,∂y0∂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 −(∂x0∂f,∂y0∂f)T 的方向,梯度减少最快,也就是更加容易找到函数的最小值。
梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。
梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的。梯度下降算法背后的原理:目标函数 J ( θ ) J(θ) J(θ) 关于参数 θ \theta θ 的梯度将是损失函数(loss function)上升最快的方向。而我们要最小化 l o s s loss loss,只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数(loss function)的下降。
梯度下降法是最常用的最优算法之一。当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。我们还需要假设函数是可微的,否则无法获得封闭解(即给出任意的自变量就可以求出其因变量)。
梯度下降法是一阶优化算法(因为只利用到了函数的一阶导数信息),其思想是用当前位置负梯度方向作为搜索方向,移动与当前位置负梯度成比例的一段步长。因为该方向为当前位置的最快下降方向,所以也被称为是最速下降法。
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数 f ( θ ) f(θ) f(θ) 的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 − f ( θ ) -f(θ) −f(θ) 的最大值,这时梯度上升法就派上用场了。
梯度下降法有两个缺点,一是靠近最优解的区域收敛速度明显变慢,二是固定学习率的情况下,可能在某点附近出现震荡:如果学习率(步长)太小,随着迭代的增加,每次移动的距离越来越小,甚至难以逼近最优值;学习率太大,移动的轨迹在某值附近开始震荡,类似“之”形移动。
对于这些缺点,可以通过使用可变学习率的方法优化,例如线性搜索等方法,每次迭代前寻找最优的学习率,再进行迭代。
批量梯度下降法是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新。
优点:全局最优解;易于并行实现; 缺点:当样本数目很多时,训练过程会很慢。
随机梯度下降的思路是在每次迭代时,只使用一个样本,当样本个数很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经迭代到最优解了。
优点:训练速度快; 缺点:准确度下降,并不是全局最优。
对批量梯度下降法和随机梯度下降法的总结:
- 批量梯度下降—最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
- 随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。
它的具体思路是在更新每一参数时都使用一部分样本( b a t c h batch batch)来进行更新,可以选择对每个 b a t c h batch batch 的梯度进行累加,或者取平均值。取平均值可以减少梯度的方差。可以看出该方法克服了上面两种方法的缺点,又同时兼顾两种方法的优点,是如今深度学习领域最常见的实现方式。
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
首先它们都是机器学习中,计算问题最优解的优化方法,但它们采用的方式不同,前者采用暴力的解方程组方式,直接,简单,粗暴,在条件允许下,求得最优解;而后者采用步进迭代的方式,一步一步的逼近最优解。实际应用中,大多问题是不能直接解方程求得最优解的,所以梯度下降法应用广泛。
梯度下降法只用到了目标函数的一阶导数,牛顿法是一种二阶优化算法,其核心思想是对函数进行泰勒展开。
求解方程 f ( x ) = 0 f(x) = 0 f(x)=0 的解:
由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是”切线法”。
或者这张图,更好理解:
已经证明,如果 f ′ f' f′ 是连续的,并且待求的零点 x x x 是孤立的,那么在零点 x x x 周围存在一个区域,只要初始值 x 0 x_0 x0 位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果 f ′ ( x ) f'(x) f′(x) 不为 0 0 0, 那么牛顿法将具有平方收敛的性能,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。
对于求模板书极大极小值的问题,可以转化为求函数 f f f 的导数为 0 0 0 的问题,这样问题就可以看成和方程求解一样的问题( f ′ = 0 f'=0 f′=0),与用牛顿法求解很相似了。
从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。更通俗地说,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大(二阶导数信息)。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)
从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
因此,如果在目标函数的梯度和Hessian矩阵比较好求的时候应使用Newton法。当模型的参数很多时Hessian矩阵的计算成本将会很大,导致收敛速度变慢,所以在深度学习中也很少使用牛顿法。
拟牛顿法是求解非线性优化问题最有效的方法之一。
拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。
牛顿法在基础机器学习中有用到,但在深度学习中很少用。