牛顿法

【优化方法】牛顿法实例

我只是一个虾纸丫 提交于 2019-12-04 04:45:21
0. 前言 上一节 中已经介绍了牛顿法的一些原理,在本节中举个具体例子,利用牛顿法求解函数最小值。 1. 例子   求解下列函数最小值:    由于这个函数较为简单,所以利用f对x、y分别求偏导数,再令偏导数等于0,就可以求得极值点,又该函数是凸函数(如果分析不出,可视化函数,如下图),所以极值点就是最小值点,故最小值点(-1,1.5).在这里的话,利用牛顿迭代法求解函数最小值。 步骤: 2. 实施细节 %% 部分参考【1】 % objective function: f(a,b) = 2*a^2 + b^2 + 2*a*b + a - b clear;clc;close A=[4,2;2,2]; x=[2;-2]; tmp=[0;0]; b=[0;0]; delta = 1.0e-8; %前后两次迭代差值 error=1; k=1; max_iters = 10000; history = zeros(max_iters,2); while(k<=max_iters && error > delta) b=[4*x(1,1)+2*x(2,1)+1;2*x(2,1)+2*x(1,1)-1]; tmp=x - inv(A)*b; error=norm(x-tmp,2); x=tmp; history(k,1) = x(1); history(k,2) = x(2); k = k +

牛顿法优缺点

荒凉一梦 提交于 2019-12-03 20:43:32
⽜顿法是梯度下降法的进一步发展,梯度下降法利利用目标函数的一阶偏导数信息、以负梯度方向作为搜索方向,只考虑目标函数在迭代点的局部性质;而牛顿法不仅使用目标函数的一阶偏导数,还进一步利⽤了目标函数的二阶偏导数,这样就考虑了梯度变化的趋势,因⽽而能更全面地确定合适的搜索⽅方向加快收敛,它具二阶收敛速度。 但牛顿法主要存在以下两个缺点: 1. 对目标函数有较严格的要求。函数必须具有连续的一、二阶偏导数,海海森矩阵必须正定。 2. 计算相当复杂,除需要计算梯度以外,还需要计算二阶偏导数矩阵和它的逆矩阵。计算量、存储量均很⼤,且均以维数N的平⽅增加,当N很⼤时这个问题更加突出。 ⽜顿法虽然收敛速度快,但是计算过程中需要计算目标函数的二阶偏导数, 计算复杂度较⼤ 。而且有时目标函数的海森矩阵无法保持正定, 从而使⽜顿法失效。 为了克服这两个问题,⼈们提出了拟⽜牛顿法。这个方法的基本思想是: 不⽤⼆阶偏导数而构造出可以近似海森矩阵或者海森矩阵的逆的正定对称阵,在拟⽜顿的条件下优化⽬目标函数。不同的构造⽅法就产生了不同的拟牛顿法。 也有人把“拟牛顿法”翻译成“准牛顿法”,其实都是表示“类似于牛顿法”的意思,因此只是对算法 中用来计算搜索方向的海森矩阵(或海森矩阵的逆)作了近似计算罢了。 来源: https://www.cnblogs.com/zjuhaohaoxuexi/p/11808215

优化算法2-牛顿法

匿名 (未验证) 提交于 2019-12-03 00:03:02
牛顿法,全称Newton's method。 当N=1时, 牛顿法的基本思想是:在现有极小点估计值的附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。设 为当前的极小值点的估计值,那么通过二阶泰勒: 由于求的是最值, 应满足 即 求得 令 ,则 当N>1时,超过二维。二阶泰勒展开式可以做推广。 为f的梯度向量, 为f的海森矩阵,其定义如下所示。 令 同理, 则 若矩阵非奇异,存在逆矩阵时,可求解为: 牛顿法算法伪代码: 缺点: 原始牛顿法在迭代公式中没有步长因子,定 迭代,对于非二次型目标函数,有时会使函数值上升,表明牛顿法不能保证函数值稳定地下降,在严重的情况下,甚至可能造成迭代点列{ }发散而失败。 来源:博客园 作者: cymx66688 链接:https://www.cnblogs.com/cymx66688/p/11514568.html

机器学习入门(九)之----logistic回归(牛顿法)

不问归期 提交于 2019-11-30 13:04:51
多绚烂的花,多美妙的季节; 没有一朵花,能留住它的季节。 我也是一样,不停地追寻, 我终究要失去的 回到logistic回归最大似然函数这里,现在我们用牛顿法来最大化这个对数似然函数。 牛顿法求零点 牛顿法本是用来求函数 零点 的一个方法,一个函数的零点就是指使这个函数等于零那个自变量的取值点。 牛顿法的更新公式为, \[ \begin{equation} \theta :=\theta-\frac{f(\theta)}{f^{\prime}(\theta)} \end{equation} \] 这个更新公式有一个非常自然的解释,就是在当前近似零点处的切线的零点作为下一轮零点的更好的近似。然后不停重复这个过程来不断的逼近真实的零点。这个过程如下图, 牛顿法求极值点 牛顿法是求零点的一个方法,现在求一个函数机智的就是求函数导数的零点,因此就有如下的牛顿法求极值点更新公式, \[ \begin{equation} \theta :=\theta-\frac{\ell^{\prime}(\theta)}{\ell^{\prime \prime}(\theta)} \end{equation} \] 现在我们在logistic回归中要最大化的那个参数是一个向量。因此牛顿法推广到高维情形(又叫Newton-Raphson法),就有, \[ \begin{equation} \theta :=

Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解

强颜欢笑 提交于 2019-11-30 06:33:11
Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x) . Compute and return the square root of x , where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned. Example 1: Input: 4 Output: 2 Example 2: Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned. 分析: leetcode上的这个不带精度要求,且输出一个整数即可(其实可以当成精度要求小于等于1)。 方法一:(二分法) 对于本题,最直观的方法就是二分法。使用二分法时,需要注意有三个指针,分别指向前中后(pre、medium、last,在书写、习惯

优化算法2-牛顿法

北城余情 提交于 2019-11-29 10:17:06
牛顿法,全称Newton's method。 当N=1时, 牛顿法的基本思想是:在现有极小点估计值的附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。设 为当前的极小值点的估计值,那么通过二阶泰勒: 由于求的是最值, 应满足 即 求得 令 ,则 当N>1时,超过二维。二阶泰勒展开式可以做推广。 为f的梯度向量, 为f的海森矩阵,其定义如下所示。 令 同理, 则 若矩阵非奇异,存在逆矩阵时,可求解为: 牛顿法算法伪代码: 1) 给定初始值x0和精度阈值ε,并令k:=0 2) 计算 和 3) 若 ,则停止迭代,否则确定搜索方向 4) 计算新的迭代点, 5) 令 6) 转至2 缺点: 原始牛顿法在迭代公式中没有步长因子,定 迭代,对于非二次型目标函数,有时会使函数值上升,表明牛顿法不能保证函数值稳定地下降,在严重的情况下,甚至可能造成迭代点列{ }发散而失败。 来源: https://www.cnblogs.com/cymx66688/p/11514568.html