【人工智能与机器学习 】第六周课后作业--牛顿法、梯度下降法的原理及使用方法

一、牛顿法

1.介绍

牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。

一般情况对于f(x)是一元二次的情况直接应用求根公式就可以了,但是对于更高次(在5次方以上),没有求根公式,于是牛顿想了个近似求解的办法——牛顿法

2.求解方程

并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f’(x0)。求解方程f(x)=0,即f(x0)+(x-x0)f’(x0)=0,求解x = x1=x0-f(x0)/f’(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f’(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f’(x(n)),通过迭代,这个式子必然在f(x)=0的时候收敛。整个过程如下:
Alt

二、梯度下降法

1.介绍

梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。

2.梯度下降算法

2.1场景假设

梯度下降法其实可以看成一个人下山的过程:假设一个场景,一个人被困在山上,此时起了大雾,他看不清楚下山的路径,就需要一步一步测量。此时下山就可以使用梯度下降法来帮助自己下山。
具体的方法:他可以先使用自己当前的位置为基准,找到这个位置最陡峭的地方,然后朝着下降的方向走一步,然后又继续以此时的位置为基准,找到最陡峭的地方,再走,再找最陡峭的地方,直到走到最低点位置。

2.2梯度下降

和下山类似,首先需要一个可以微分的函数,这个函数就是上文中的“山”,我们需要“下山”,走到“山”的最低点,就是找到该函数的最小值。根据上文场景假设,最快的下山方式就是找到当前位置的最陡峭位置,然后走到该位置后又继续上面的步骤,在函数中就是找到给定点的梯度,朝着梯度相反的方向,就可以让函数值下降的最快!因为梯度的方向就是函数变化最快的方向!所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是场景中测量方向的手段。

三、实际操作

使用jupyter notebook运行梯度下降法实例代码:

首先,定义数据集和学习率

from numpy import *

# 数据集大小 即20个数据点
m = 22
# x的坐标以及对应的矩阵
X0 = ones((m, 1))  # 生成一个m行1列的向量,也就是x0,全是1
X1 = arange(1, m+1).reshape(m, 1)  # 生成一个m行1列的向量,也就是x1,从1到m
X = hstack((X0, X1))  # 按照列堆叠形成数组,其实就是样本数据
# 对应的y坐标
y = np.array([
    3, 4, 5, 5, 2, 4, 7, 8, 11, 8, 12,
    11, 13, 13, 16, 17, 18, 17, 19, 21,
    22,23
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值