由浅入深理解面试中的牛顿迭代法

背景

  面试机器学习经常被问到牛顿迭代法求根,现准备梳理下牛顿迭代法。

核心公式,可理解为机器学习中的优化器

  xn+1 = xn - f(xn) / f'(xn)

举个求根号2的例子

  x2 = 2, 使用牛顿迭代法求根

  解:

  1. 转化成函数: f(x) = x2 - 2, 求该函数的近似正根;定义损失函数
  2. 初始化x值, x取值范围为:(0 < x < 2),不妨另初始xn = 2
  3. 依据牛顿迭代公式迭代xn+1;定义了优化器
  4. 设置迭代终止条件 f(xn+1) < accuracy; (accuracy为设置的精度,也可理解为 f(x) = 0的最小误差)

python脚本实现-牛顿迭代法求根号2

# -*- coding: utf-8 -*-

# 牛顿迭代法,求根号2
def deal_num():
    # 初始化x值
    x = 2
    # 定义损失函数
    fx = x**2 - 2

    while 1:
        # 设置精度:终止迭代条件
        if fx < 0.0001:
            break
        else:
            # 定义优化器,牛顿迭代法
            x = x - fx / (2.0 * x)
            fx = x**2 - 2
    return x

if __name__ == "__main__":
    print deal_num()

 

    

 

posted @ 2020-02-18 18:01  威威后花园  阅读(603)  评论(0编辑  收藏  举报