随机梯度下降和批量梯度下降

梯度下降与随机梯度下降对比
本文对比了梯度下降与随机梯度下降两种优化算法。梯度下降需要遍历所有样本进行计算,而随机梯度下降仅使用单一样本进行更新,因此在大数据集上表现出更高的效率。

http://blog.youkuaiyun.com/lilyth_lilyth/article/details/8973972
样本个数m,x为n维向量。
h_theta(x) = theta^t * x
梯度下降需要把m个样本全部带入计算,迭代一次计算量为m*n^2

梯度下降 <wbr>VS <wbr>随机梯度下降

随机梯度下降每次只使用一个样本,迭代一次计算量为n^2,当m很大的时候,随机梯度下降迭代一次的速度要远高于梯度下降

梯度下降 <wbr>VS <wbr>随机梯度下降
### 随机梯度下降批量梯度下降的对比 #### 区别 - **数据利用方式** 批量梯度下降法(Batch Gradient Descent, BGD)在每一次迭代过程中使用整个训练集来计算损失函数关于权重向量的梯度并更新模型参数,这意味着每一步都力求全局最优解的方向前进[^1]。而随机梯度下降法(Stochastic Gradient Descent, SGD),则是在每次迭代只选取单一样本进行梯度估计参数调整,因此SGD可以看作是一种更快速但波动较大的逼近方法。 - **收敛特性** 对于BGD而言,因为每次都考虑到了全部的数据样本,在理想情况下能够稳定地朝着全局最小值移动,不过一旦遇到复杂的误差曲面可能会陷入局部极小值难以逃脱。相比之下,SGD由于其固有的噪声性质反而有助于跳出某些浅层陷阱,但也正因为这种不稳定性使得最终找到的确切位置可能不是真正的全局最优点附近的位置。 - **计算开销** 计算成本方面,BGD需要遍历一遍完整的数据集才能完成一次参数更新操作,当面对大规模数据时显然效率低下;相反,SGD仅需处理单一实例即可执行同样的任务,大大减少了内存占用以及运算时间,尤其适合在线学习场景或是实时性强的应用场合。 #### 共同点 - **目标一致** 不论是采用哪种形式的梯度下降策略,两者都是为了通过不断修正权值以使预测输出尽可能贴近实际标签值,从而达到降低整体损失的目的。理论上讲,如果给予足够多的时间资源,两种算法都应该能给出相近的结果。 - **依赖超参调节** 这两类方法均高度依赖诸如初始条件设定、步长选择等因素的影响,不当的选择可能导致无法有效寻优甚至完全失败。例如过大的学习率会让搜索过程变得不稳定,容易越过最低点造成振荡现象;反之太小又会使进展缓慢,延长必要的等待周期[^3]。 ```python import numpy as np def batch_gradient_descent(X, y, theta_init, alpha=0.01, iterations=1000): m = len(y) Theta_optimal = theta_init for _ in range(iterations): gradient = (1/m)*X.T.dot(X.dot(Theta_optimal)-y) Theta_optimal -= alpha * gradient return Theta_optimal def stochastic_gradient_descent(X, y, theta_init, alpha=0.01, epochs=50): m = len(y) Theta_optimal = theta_init for epoch in range(epochs): shuffled_indices = np.random.permutation(m) X_shuffled = X[shuffled_indices] y_shuffled = y[shuffled_indices] for i in range(m): random_index = np.random.randint(m) xi = X_shuffled[random_index:random_index+1] yi = y_shuffled[random_index:random_index+1] gradients = 2*xi.T.dot(xi.dot(Theta_optimal) - yi) Theta_optimal = Theta_optimal - alpha * gradients return Theta_optimal ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值