Press "Enter" to skip to content

用Python从头开始实现的“最陡下降法”和“牛顿法”:一种比较

作者提供的图片

目录

  1. 引言
  2. 问题陈述和最速下降法
  3. 牛顿法
  4. 实现
  5. 结论和最终比较

1. 引言

在之前的一篇文章中,我们探讨了流行的最速下降法优化方法,并使用Python从头开始实现了它:

从头开始使用Python实现最速下降算法

目录

towardsdatascience.com

在本文中,我们旨在介绍牛顿法,并分享一种逐步实现的方法,同时将其与最速下降法进行比较。

2. 问题陈述和最速下降法

优化是找到使目标函数 f(x) 最小化的变量集合 x 的过程:

为了解决这个问题,我们可以在坐标空间中选择一个起始点,并通过搜索方向 p 迭代地向更好的最小值逼近:

在这个表达式中:

  • x 是输入变量;
  • k 是当前迭代;
  • p 是搜索方向;
  • α > 0 是步长或步长;它描述了我们应该沿着方向 p 移动多少。

搜索方向

最速下降法中,搜索方向 pₖ 是当前迭代 xₖ 中求得的负梯度 -∇f(xₖ)

最小值是一个驻点,因此当梯度的范数小于给定的容差时,停止算法是合理的。

步长

步长 α 理想情况下是以下目标函数 φ(α) 的极小化器:

然而,这个额外的优化任务可能是不实际和昂贵的。它的解决方案需要对 f(x)∇f(x) 进行多次评估。不精确的线搜索方法…

Leave a Reply

Your email address will not be published. Required fields are marked *