资讯动态

通俗易懂讲透梯度下降法(Gradient Descent)

发布时间:2026/8/27 11:44:47 来源:尧图企业网站定制
通俗易懂讲透梯度下降法Gradient Descent本科生/研究生都能看懂本文用大白话下山比喻公式拆解完整代码可视化把梯度下降法从原理、流程、优缺点到实战讲得明明白白适合机器学习/深度学习入门、面试复习、课程笔记。一、先搞懂梯度下降法到底是什么一句话总结梯度下降法 沿着“最陡下坡”一步一步走直到找到山谷最低点的优化算法。在机器学习里山 损失函数越高表示模型误差越大你的位置 模型参数下山 减小损失、优化模型每一步的大小 学习率步长二、最形象的例子黑夜下山你在黑夜的山上想尽快下到谷底拿出手电筒照脚下 →算梯度看哪边最陡朝坡度最陡的下方走一步 →更新参数走一步看一步重复下去 →迭代直到谷底这就是梯度下降。三、3 个核心关键词必须懂梯度Gradient函数在当前点上升最快的方向。我们要反方向走才能最快下降。学习率Learning Rate每一步走多大。太大迈过谷底、来回震荡、甚至不收敛太小走得极慢训练半天不动收敛Convergence损失不再明显下降说明走到谷底了。四、数学公式超级简单版1. 梯度是什么对参数求偏导组成一个向量∇J(θ)[∂J∂θ1, ∂J∂θ2, … ] \nabla J(\theta) \left[ \frac{\partial J}{\partial \theta_1},\ \frac{\partial J}{\partial \theta_2},\ \dots \right]∇J(θ)[∂θ1​∂J​,∂θ2​∂J​,…]2. 梯度下降更新公式背会θθ−η⋅∇J(θ) \theta \theta - \eta \cdot \nabla J(\theta)θθ−η⋅∇J(θ)θ\thetaθ模型参数η\etaη学习率∇J(θ)\nabla J(\theta)∇J(θ)梯度减号 朝梯度反方向走五、标准梯度下降算法流程4 步随机初始化参数θ\thetaθ计算全部样本的损失与梯度按公式更新参数重复直到损失收敛注意标准梯度下降 批量梯度下降BGD每一步都用全部数据。六、代码实战梯度下降训练线性回归房价预测直接复制可运行包含数据生成标准化梯度下降实现损失曲线 预测对比 残差分析importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScaler# 1. 生成模拟房价数据 np.random.seed(42)n_samples100000Xnp.random.rand(n_samples,3)*100# 3个特征面积、房龄、房间数noisenp.random.randn(n_samples)*10yX [3.5,2.1,-1.8]5noise# 标准化scalerStandardScaler()Xscaler.fit_transform(X)X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 2. 损失函数 defcompute_cost(X,y,theta):mlen(y)predX thetareturnnp.mean((pred-y)**2)/2# 3. 梯度下降 defgradient_descent(X,y,lr,iters):m,nX.shape thetanp.zeros(n)cost_history[]foriinrange(iters):predX theta gradX.T (pred-y)/m theta-lr*grad cost_history.append(compute_cost(X,y,theta))returntheta,cost_history# 4. 训练 lr0.01iters1000theta,costsgradient_descent(X_train,y_train,lr,iters)# 5. 预测 y_predX_test theta# 6. 可视化1损失下降曲线 plt.figure(figsize(10,5))plt.plot(costs)plt.title(损失函数下降过程)plt.xlabel(迭代次数)plt.ylabel(损失)plt.grid()plt.show()# 7. 可视化2预测 vs 真实 plt.figure(figsize(10,5))plt.scatter(y_test,y_pred,alpha0.3)plt.plot([y.min(),y.max()],[y.min(),y.max()],r-,linewidth2)plt.title(真实值 vs 预测值)plt.grid()plt.show()# 8. 可视化3残差分布 residualsy_test-y_pred plt.figure(figsize(10,5))sns.histplot(residuals,kdeTrue)plt.title(残差分布)plt.grid()plt.show()print(最优参数,theta)七、梯度下降法的优点原理最简单最基础、最核心的优化器通用性极强线性回归、逻辑回归、神经网络全都能用收敛稳定批量版易扩展能加动量、自适应学习率等八、梯度下降法的缺点速度慢每一步都要算全部数据学习率难调容易陷入局部最优非凸函数对特征尺度敏感必须标准化九、梯度下降的三大家族必懂算法每次用多少数据速度特点批量梯度下降 BGD全部最慢最稳随机梯度下降 SGD1个最快震荡小批量梯度下降 MBGD一小批中工业界标配十、适用场景✅适合机器学习模型入门线性/逻辑回归作为所有优化器的基础教学、推导、实验❌不适合超大规模深度学习太慢非凸复杂损失容易被困十一、一句话终极总结梯度下降法是机器学习最基础、最重要的优化算法沿着梯度反方向迭代更新参数让损失一步步降到最低。它是所有优化器的“祖宗”。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价