由浅入深理解面试中的牛顿迭代法
背景
面试机器学习经常被问到牛顿迭代法求根,现准备梳理下牛顿迭代法。
核心公式,可理解为机器学习中的优化器
xn+1 = xn - f(xn) / f'(xn)
举个求根号2的例子
x2 = 2, 使用牛顿迭代法求根
解:
- 转化成函数: f(x) = x2 - 2, 求该函数的近似正根;定义损失函数
- 初始化x值, x取值范围为:(0 < x < 2),不妨另初始xn = 2
- 依据牛顿迭代公式迭代xn+1;定义了优化器
- 设置迭代终止条件 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()