- 前言
- 微积分基础
- 一元函数的极值,导数与泰勒展开
- 多元函数的泰勒展开
- 梯度下降法
- 梯度方向
- 终止条件
- 代码举例
- 后记
本篇将开始介绍优化算法。首先是梯度下降法,在最小二乘与深度学习中,都是最常用的最优化求解方法和思想。
微积分基础 一元函数的极值,导数与泰勒展开对于一元函数 f ( x ) f(x) f(x)而言,当 x 0 x_0 x0满足以下条件时, f ( x 0 ) f(x_0) f(x0)取得极值: f ′ ( x 0 ) = 0 , f ′ ′ ( x 0 ) ≠ 0 f'(x_0)=0,f''(x_0)\ne 0 f′(x0)=0,f′′(x0)=0 将 f ( x ) f(x) f(x)在 x 0 x_0 x0处泰勒展开: f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 ! f ′ ′ ( x 0 ) ( x − x 0 ) 2 + o ( ( x − x 0 ) 2 ) f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{1}{2!}f''(x_0)(x-x_0)^2+o((x-x_0)^2) f(x)=f(x0)+f′(x0)(x−x0)+2!1f′′(x0)(x−x0)2+o((x−x0)2) 可以从泰勒展开中看出,当 f ′ ( x ) = 0 , f ′ ′ ( x 0 ) > 0 f'(x)=0,f''(x_0)> 0 f′(x)=0,f′′(x0)>0,在 x 0 x_0 x0附近必然有 f ( x ) > f ( x 0 ) f(x)>f(x_0) f(x)>f(x0)成立;当 f ′ ( x ) = 0 , f ′ ′ ( x 0 ) < 0 f'(x)=0,f''(x_0)< 0 f′(x)=0,f′′(x0)f(x0),同时也存在某一点 x \bf x x使得 f ( x ) < f ( x 0 ) f({\bf x})f({\bf x_0}) f(x)>f(x0),到达点 x 1 \bf x_1 x1,然后再选择周围某一个点 x = Δ x + x 1 {\bf x}=\Delta \bf x+ x_1 x=Δx+x1,继续迭代到满足局部极值条件为止。寻找极小值同理。
这就是梯度下降(上升)法的思想。
梯度下降法以上迭代具有两个核心问题:①如何选择周围点,也就是如何选择 Δ x \Delta \bf x Δx;②如何判断满足局部极值条件,也是就是什么时候结束迭代。下面以最常见的寻找局部最小为例。
梯度方向首先讨论问题①,回到多元泰勒展开式: f ( x ) = f ( x 0 ) + ∇ f ( x 0 ) ⋅ ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x 0 ) ( x − x 0 ) + o n f({\bf x})=f({\bf x_0})+ \nabla f({\bf x_0}) \cdot ({\bf x}-{\bf x_0})+ \frac{1}{2} ({\bf x}-{\bf x_0})^TH({\bf x_0}) ({\bf x}-{\bf x_0}) +o^n f(x)=f(x0)+∇f(x0)⋅(x−x0)+21(x−x0)TH(x0)(x−x0)+on 梯度 ∇ f ( x 0 ) ≠ 0 \nabla f({\bf x_0}) \ne {\bf 0} ∇f(x0)=0。假设我们要寻找的 Δ x \Delta \bf x Δx的长度固定,则每次迭代的函数增量为: Δ f = f ( x ) − f ( x 0 ) = ∇ f ( x 0 ) ⋅ ( Δ x ) + o n \Delta f=f({\bf x})-f({\bf x_0})=\nabla f({\bf x_0}) \cdot (\Delta \bf x)+o^n Δf=f(x)−f(x0)=∇f(x0)⋅(Δx)+on 等式右边是一个内积,可以简化表示为: g x 0 = ∇ f ( x 0 ) e Δ x = Δ x Δ f = f ( x ) − f ( x 0 ) = g x 0 ⋅ e Δ x = ∣ g x 0 ∣ ∣ e Δ x ∣ cos θ g_{\bf x_0}=\nabla f({\bf x_0}) \\ e_{\Delta \bf x} = {\Delta \bf x} \\ \Delta f=f({\bf x})-f({\bf x_0}) = g_{\bf x_0} \cdot e_{\Delta \bf x}=|g_{\bf x_0}||e_{\Delta \bf x}|\cos \theta gx0=∇f(x0)eΔx=ΔxΔf=f(x)−f(x0)=gx0⋅eΔx=∣gx0∣∣eΔx∣cosθ 其中, cos θ \cos \theta cosθ是梯度向量 ∇ f ( x 0 ) \nabla f(\bf x_0) ∇f(x0)与 Δ x \Delta \bf x Δx的夹角。 θ = 0 \theta=0 θ=0, Δ f > 0 \Delta f>0 Δf>0并且取最大值; θ = π \theta=\pi θ=π, Δ f < 0 \Delta f
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?