为什么沿着梯度相反的方向更新参数

本文解释了为何沿着梯度相反方向,损失函数下降最快。通过泰勒公式和一阶导数的概念,说明了在梯度的反方向上更新参数可以使函数值减少最多,并引入学习率来控制下降速度。理解这一原理对于优化神经网络的损失函数至关重要。
摘要由CSDN通过智能技术生成

为什么说,沿着梯度相反的方向函数值下降最快

我们假设损失函数是 f ( x ) f(x) f(x) x x x就是神经网络的参数,我们的目的是最小化损失函数,也就是不断让 f ( x ) f(x) f(x)减小。

那么根据高等数学中的泰勒公式,我们知道函数 f ( x ) f(x) f(x)的一阶泰勒公式如下
f ( x + Δ x ) = f ( x ) + f ′ ( x ) Δ x + o ( Δ x ) f(x+\Delta x)=f(x)+f'(x)\Delta x+o(\Delta x) f(x+Δx)=f(x)+f(x)Δx+o(Δx)

其中 f ′ ( x ) f'(x) f(x)我们都知道是导数,在神经网络中,它就是梯度,因为 x x x是很多的参数,所以 x x x f ′ ( x ) f'(x) f(x)都是向量

我们的目的是让函数值减小,所以 f ( x + Δ x ) f(x+\Delta x) f(x+Δx)要小于 f ( x ) f(x) f(x)
那么根据上式我们知道,想要 f ( x + Δ x ) < f ( x ) f(x+\Delta x)<f(x) f(x+Δx)<f(x)只能有 f ′ ( x ) Δ x f'(x)\Delta x f(x)Δx小于0。

f ′ ( x ) Δ x f'(x)\Delta x f(x)Δx是两个向量在做内积相乘,我们又知道两个向量的内积公式如下:

f ′ ( x ) Δ x = ∥ f ′ ( x ) ∥ ∥ Δ x ∥ cos ⁡ θ f'(x)\Delta x=\left\|f'(x)\right\|\left\| \Delta x\right\|\cos\theta f(x)Δx=f(x)Δxcosθ

显然 f ′ ( x ) Δ x f'(x)\Delta x f(x)Δx的取值范围是 [ − ∥ f ′ ( x ) ∥ 2 , ∥ f ′ ( x ) ∥ 2 ] [-\left\|f'(x)\right\|^2,\left\|f'(x)\right\|^2] [f(x)2,f(x)2]。(注意我这里说的不严谨,因为 Δ x \Delta x Δx的取值是任意的,我们姑且认为它不会大于 f ′ ( x ) f'(x) f(x))

也就是说当 Δ x = f ′ ( x ) \Delta x=f'(x) Δx=f(x)时,与梯度同方向,此时 cos ⁡ θ = 1 \cos\theta=1 cosθ=1所以
f ′ ( x ) Δ x = ∥ f ′ ( x ) ∥ 2 f'(x)\Delta x=\left\|f'(x)\right\|^2 f(x)Δx=f(x)2

那么我们也就知道了当 Δ x = − f ′ ( x ) \Delta x=-f'(x) Δx=f(x),与梯度相反方向的时候(因为都是向量,所以这个负号表示的就是反方向。),此时 cos ⁡ θ = − 1 \cos\theta=-1 cosθ=1,所以
f ′ ( x ) Δ x = − ∥ f ′ ( x ) ∥ 2 f'(x)\Delta x=-\left\|f'(x)\right\|^2 f(x)Δx=f(x)2

那么显然 f ( x + Δ x ) = f ( x ) − ∥ f ′ ( x ) ∥ 2 f(x+\Delta x)=f(x)-\left\|f'(x)\right\|^2 f(x+Δx)=f(x)f(x)2函数值下降的最多。
f ( x + Δ x ) = f ( x ) + ∥ f ′ ( x ) ∥ 2 f(x+\Delta x)=f(x)+\left\|f'(x)\right\|^2 f(x+Δx)=f(x)+f(x)2函数值上升的最多。

所以说沿着梯度的方向,函数值变化最快

需要注意是,我们要引入步长,也就是 Δ x = − α f ′ ( x ) \Delta x=-\alpha f'(x) Δx=αf(x),也就是学习率,因为不能让函数值一下子变化太大。

### 梯度下降与梯度上升的区别及应用场景 #### 概念区分 梯度下降和梯度上升都是优化算法中的基本概念,主要用于最小化或最大化目标函数。两者的核心区别在于: - **梯度下降**旨在找到使成本函数最小化的参数值。通过计算当前点处的成本函数关于各个参数的偏导数(即梯度),并沿负梯度方向移动一小步来逐步接近最优解[^1]。 - **梯度上升**则相反,目的是寻找使得收益函数最大化的参数组合。同样利用梯度信息指导搜索路径的选择,只不过这次是沿着正梯度方向前进[^2]。 这两种方法本质上是一样的,只是应用场合不同而已——当面对的是一个需要被极小化的损失函数时使用前者;而如果目标是要极大化某个性能指标,则会选择后者。 #### 应用场景对比 ##### 梯度下降的应用 广泛应用于监督学习任务中,特别是在线性回归、逻辑回归和支持向量机等模型训练阶段。此外,在神经网络领域内更是不可或缺的一部分,因为这些复杂的结构通常依赖于向传播机制配合SGD及其变体来进行权重更新操作[^3]。 ```python def gradient_descent(X, y, theta, alpha=0.01, iterations=1500): m = len(y) J_history = [] for _ in range(iterations): predictions = X.dot(theta) error = np.dot(X.T, (predictions - y)) descent = alpha * 1/m * error theta -= descent cost = compute_cost(X, y, theta) J_history.append(cost) return theta, J_history ``` ##### 梯度上升的应用 更多见于强化学习框架下的策略改进环节或是某些特定类型的无约束最优化问题求解当中。比如A/B测试分析里为了提高转化率所采取的动作评估过程就可以视为一种典型的梯度上升实例[^4]。 ```python def gradient_ascent(p_current, reward_function, step_size=0.01, max_iter=1000): p_best = None best_reward = float('-inf') for i in range(max_iter): rewards = reward_function(p_current) if rewards > best_reward: best_reward = rewards p_best = p_current gradients = estimate_gradient(reward_function, p_current) p_next = p_current + step_size * gradients return p_best, best_reward ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值