梯度下降法与方向导数

from https://www.zhihu.com/question/30672734

 

下面从梯度与方向导数的关系来解释:

1 方向导数

  • 引入
原来我们学到的偏导数指的是多元函数沿坐标轴的变化率,但是我们往往很多时候要考虑多元函数沿任意方向的变化率,那么就引出了方向导数
  • 定义
(1)方向导数是个数值。
二维空间情形:


我们把f(x+Dx,y+Dy)-f(x,y)的值Value1与PP1的距离value2的比值的极值叫做沿PP1的方向导数。
三维空间计算过程相似;


换句话来说,方向导数就是研究在某一点处的任意方向的变化率~

 

2 梯度

首先我来说,梯度是一个向量,并不是原来方向导数说的那样是一个数,那么这个向量是什么特殊的向量呢?还需要拿出来单独研究,那就是梯度代表的是各个导数中,变化趋势最大的那个方向,下面来介绍~
    • 定义

  • 证明
    梯度方向就是方向导数最大的方向,我们看如下:
  • 只有当Θ为0度的时候(cos\theta =1),方向导数最大(左边的式子),也就是说方向导数什么情况下最大,就是它的方向(cos\alpha,cos\beta)(这个方向公式中表示用x,y轴的线性组合表示了)和梯度方向一样((f_{x}(x_{0},y_{0}),f_{y}(x_{0},y_{0}) ))(平行)的时候,这个方向导数是最大的....换句话也可以说,方向导数任意方向一定有个变化率最大的方向,这个时候,我们把这个最大的方向定义为梯度方向~



作者:忆臻
链接:https://www.zhihu.com/question/30672734/answer/139402480
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/mdumpling/p/8625558.html

### 梯度下降算法中方向导数的作用及计算方式 #### 方向导数的定义及其作用 方向导数表示函数沿某一特定方向的变化率。具体来说,在多维空间中,如果有一个可微函数 \( f(x_1, x_2, \dots, x_n) \),那么它在某一点 \( P \) 处沿着单位向量 \( \vec{u} \) 的变化率称为该点处的方向导数[^2]。 方向导数的重要性在于它可以用来衡量目标函数在一个给定方向上的增减趋势。这为梯度下降提供了理论依据——通过找到使方向导数最小化的方向来实现最快速地下降[^3]。 #### 计算方向导数的方法 假设函数 \( f(x_1, x_2, \dots, x_n) \) 是连续可微的,则其在点 \( (x_1, x_2, \dots, x_n) \) 处沿单位向量 \( \vec{u} = (u_1, u_2, \dots, u_n) \) 的方向导数可以由以下公式给出: \[ D_{\vec{u}}f(\vec{x}) = \nabla f(\vec{x}) \cdot \vec{u} \] 其中: - \( \nabla f(\vec{x}) \) 表示函数 \( f \) 在点 \( \vec{x} \) 处的梯度; - \( \cdot \) 表示两个向量之间的点积运算。 因此,方向导数实际上是梯度指定方向之间夹角余弦值的乘积。当方向梯度相反时(即两者夹角为 \( 180^\circ \)),方向导数达到最小值,这意味着函数在此方向上减少得最快[^4]。 #### 梯度下降中的应用 在机器学习领域,尤其是训练神经网络模型时,通常会采用梯度下降法调整参数以最小化损失函数。此过程中利用了上述提到的方向导数概念:每次更新都朝着使得当前步长范围内损失函数值降低最多的方向前进。这一过程可以通过如下迭代公式描述: \[ \theta := \theta - \alpha \nabla_\theta J(\theta) \] 这里: - \( \theta \) 表示待优化的参数集合; - \( \alpha > 0 \) 称作学习速率,控制每一步移动的距离大小; - \( J(\theta) \) 则代表需要被极小化的成本或者误差函数[^5]。 这种策略确保了随着每一次更新操作,整体性能逐步改善直至收敛至局部最优解附近为止。 ```python def gradient_descent(theta, alpha, max_iterations, cost_function, grad_func): iteration = 0 while iteration < max_iterations: gradient = grad_func(theta) # Compute the gradient at current theta. theta -= alpha * gradient # Update parameters using negative of gradient. iteration += 1 # Increment counter after each update cycle. return theta # Return final set of optimized parameters upon completion. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值