牛顿法

Deep learning:一(基础知识_1)

别说谁变了你拦得住时间么 提交于 2020-03-21 16:44:19
  不多说,直接上干货! 前言:   最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程 UFLDL Tutorial ,据说这个教程写得浅显易懂,也不太长。不过在这这之前还是复习下machine learning的基础知识,见网页: http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning 。内容其实很短,每小节就那么几分钟,且讲得非常棒。 教程中的一些术语:     Model representation: 其实就是指学习到的函数的表达形式,可以用矩阵表示。     Vectorized implementation: 指定是函数表达式的矢量实现。     Feature scaling: 指是将特征的每一维都进行一个尺度变化,比如说都让其均值为0等。    Normal equations: 这里指的是多元线性回归中参数解的矩阵形式,这个解方程称为normal equations.     Optimization objective: 指的是需要优化的目标函数,比如说logistic中loss function表达式的公式推导。或者多元线性回归中带有规则性的目标函数。    Gradient Descent、Newton

机器学习复习6-优化器等

扶醉桌前 提交于 2020-03-05 23:16:52
预备知识 一、正定和半正定矩阵 半正定矩阵包括了正定矩阵 。 不定矩阵:特征值有正有负 半正定 矩阵: 所有特征值为 非负 。 半负定矩阵:所有特征值为非正。 二、牛顿法和拟牛顿法(二阶优化方法) 由于我主要是做NLP,机器学习方面基本功扎实后,更加偏机器学习的方法浅尝辄止即可, 面试的时候知道有这些东西即可。这里只提一提。 牛顿法(Newton method)和拟牛顿法(quasi Newton method)是 求解无约束最优化问题的常用方法 ,有收敛速度快的优点。 牛顿法是迭代算法,每一步都需求解目标函数的海塞矩阵 (Hessian Matrix),计算比较复杂。 拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或海塞矩阵 ,简化了这一计算过程。 1 牛顿法 : 2 拟牛顿法 : 拟牛顿法主要常见有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。均是用不同的构造方法来近似海塞矩阵或其逆。 3 牛顿法和梯度下降法 : 4 牛顿法和深度学习 : 三、海塞矩阵 四、鞍点问题 高维非凸优化问题之所以困难,是因为 存在大量的鞍点而不是局部极值 。 神经网络优化问题中的 鞍点即一个维度向上倾斜且另一维度向下倾斜的点 。 鞍点和局部极值的区别: 鞍点和局部极小值, 相同 的是,在该点处的 梯度都等于零 , 不同在于

李航统计学习方法-附录B 牛顿法与拟牛顿法

岁酱吖の 提交于 2020-03-03 20:59:52
牛顿法(Newton method)和拟牛顿法(quasi-Newton method)也是求解无约束最优化的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的黑塞矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似黑塞矩阵的逆矩阵或黑塞矩阵,简化了这一计算过程。 牛顿法 考虑无约束最优化问题 min ⁡ x ∈ R n f ( x ) (B.1) \min_{x\in R^n}f(x)\tag{B.1} x ∈ R n min ​ f ( x ) ( B . 1 ) 其中 x ∗ x^* x ∗ 为目标函数的极小值。 ​ 假设f(x)具有二阶连续偏导数,若第k次迭代值为 x ( k ) x^{(k)} x ( k ) ,则可将f(x)在 x ( k ) x^{(k)} x ( k ) 附近进行二阶泰勒展开: f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) ) (B.2) f(x)=f(x^{(k)})+g^T_k(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)}) \tag{B.2} f ( x ) = f ( x ( k ) ) + g k T

优化算法-牛顿法

此生再无相见时 提交于 2020-02-15 03:49:37
牛顿法(英语:Newton's method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。 一般情况对于f(x)是一元二次的情况直接应用求根公式就可以了,但是对于更高次(在5次方以上),没有求根公式,于是牛顿想了个近似求解的办法——牛顿法 首先以一元函数为例来说明牛顿法的具体过程 假设我们要求解函数f(x)=0的根,我们首先把函数在 处展开成泰勒级数的形式并取其线性部分: 令g(x)=0,则 g(x)=0的根与f(x)=0的根近似相等,所以我们可以将此次计算看做一次迭代的过程,即: 看下面的定理: 设f(x)在[a,b]满足 (1) f(a)·f(b)<0 (2) f(x)∈[a,b],f′(x),f″(x)均存在,且f′(x)与f″( x)的符号均保持不变。 (3) f(x)·f″(x)>0, x∈[a,b] 则方程f(x)=0在[a,b]上有且只有一个实根,由牛顿法迭代公式计算得到的近似解序列收敛于方程 f(x)=0 的根 x*。 通俗的说,如果f(x)及其一阶、二阶导是连续的,并且待求的零点是孤立的,那么在零点周围存在一个区域,只要初始值位于这个邻近区域内,那么牛顿法必定收敛。 下面动图形象演示了牛顿法收敛过程

《视觉SLAM 十四讲》(高翔) --- 第六讲 非线性优化 笔记

五迷三道 提交于 2020-02-06 02:18:41
增量Δx 如何确定? 一阶和二阶梯度法 Gauss-Newton(高斯牛顿法) Levenberg-Marquadt(L-M法) Gauss-Newton(高斯牛顿法) Gauss-Newton 的算法步骤: 公式推导: 对向量和矩阵求导公式: Levenberg-Marquadt(L-M法) 由于高斯牛顿二阶近似,只在展开点附近有较好的的效果,所以给Δx\Delta xΔx增加一个信赖区域,在区域里近似有效。 如果ρ 接近于1,则近似是好的。如果ρ太小,说明实际减小的值远少于似减小的值,则认为近似比较差,需要缩小近似范围。反之,如果ρ比较大,则说明实际下降的比预计的更大,我们可以放大近似范围。 构建一个改良版的非线性优化框架,该框架会比Gauss Newton 有更好的 效果: 来源: CSDN 作者: _YAO阿瑶 链接: https://blog.csdn.net/weixin_44694952/article/details/104188258

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p

为什么牛顿法比梯度下降法收敛更快

♀尐吖头ヾ 提交于 2020-01-24 09:55:36
问题: 为什么通常牛顿法比梯度下降法能更快的收敛? 解答: 牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。 根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。 wiki上给的图很形象,我就直接转过来了: 来源: CSDN 作者: greatcoti 链接: https://blog.csdn.net/qq_30331643/article/details/103946221

05构建之法阅读笔记之五

和自甴很熟 提交于 2020-01-17 04:11:36
上次课上老师为我们讲了IT行业的创新,创新至于我们大部分人来说都是做不到的,之前我一直认为创新其实是天才在某个巧妙的时刻茅塞顿开后想出来的。但是通过这节课老师的讲解,例如阿基米德和牛顿的例子,其实我们都只是看到了创新的那一刻,而没有看到他们在之前所做的积累与努力,所有的创新都是基于长期积累的只是层面之上的。 可下我阅读了邹欣老师《构建之法》的有关于IT行业的创新部分,看了邹欣老师讲了关于创新总结的七大迷思之后,我们创新又有了新的认识。彼得德鲁克说过:“在现代软件工程课上,许多同法也提出了不少宏达的创新想法,但是到了课程结束时,最后什么也没做,剩下的就是一个空的构想。”我们喜欢创新,大家都想要创新,以为好的想法会让我们加容易赢,却往往忽略了创新之前的努力与积累,我觉得老师这点说的特别正确,而我们也要区分创新与空想的区别。在大家的认知中都认为行业的专家、好的团队才能创新,但是统计数据表明,70%的创新者说,他们最成功的创新,是在他们拿手领域之外的;创新需要技术,但技术不是创新的关键,除技术之外,我们也可以由商业模式的创新、用户体验的创新,而不要把创新局限于个人技术上。 好的创新业需要一个合适的时机,就像一匹好马也是需要伯乐一样,邹老师所举的黄金点游戏的例子,可能你想到的打击都想到了。那些成功的企业只是比大众的平均值先走了一小步,就是这一小步,让大部分人看到了产品的“相对优势”

最优化问题(牛顿法和梯度下降法)

泄露秘密 提交于 2020-01-11 00:19:18
---恢复内容开始--- http://www.zhihu.com/question/19723347 引自知乎 牛顿法是二阶收敛,梯度下降是一阶收敛 , 所以牛顿法就更快 。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。 根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。 wiki上给的图很形象: &amp;amp;lt;img src="https://pic4.zhimg.com/365e99bcf8d2e1ef1986e09c795caef7_b.jpg" data-rawwidth="220" data-rawheight="253" class="content_image" width="220"&amp;amp;gt;红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。 红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。 作者:金秉文 链接:http:/

牛顿法算平方根的理解

余生长醉 提交于 2019-12-23 21:50:53
原题目: x 的平方根 查看题解,使用到了牛顿法。 公式: 作者已经讲得很清楚了,只是看这里的公式中的 x x x 和 x 0 x_0 x 0 ​ 的时候卡了一下,后来理解了,其实 x 0 x_0 x 0 ​ 就是进行尝试的起始点,然后进行图中的迭代公示后得到的 x 0 x_0 x 0 ​ (其实就是所求的 x x x )是下一次的起始点,在图中就是那条斜线与 x x x 轴的焦点的位置。那么,如果一个值的平方考虑到可能会溢出的话,如何避免计算平方值呢?代码中写的很清楚的了,因为牛顿法考的是一次次的迭代靠近真实值,那么这样的每次迭代的进步空间聚会越来越小。最后只要要求两次的差值小于某个固定的很小的数就可以了。 在这里插入代码片 class Solution : def mySqrt ( self , x ) : if x < 0 : raise Exception ( '不能输入负数' ) if x == 0 : return 0 # 起始的时候在 1 ,这可以比较随意设置 cur = 1 while True : pre = cur cur = ( cur + x / cur ) / 2 if abs ( cur - pre ) < 1e - 6 : return int ( cur ) 来源: CSDN 作者: CTTACM 链接: https://blog.csdn.net