机器学习与深度学习2:梯度下降算法和BP反向传播算法

梯度下降算法:

算法原理

上一章我们已知神经网络算法就是求解拟合函数,通过线性变换和非线性变换来得出损失函数最小的模型。那么是如何进行求解的呢,其中之一就是梯度下降算法。

如图,当我们需要求解拟合曲线时,如何找到拟合曲线?步骤就是首先随机一个w值,画出过原点的y = wx的图像,再根据误差调整这个曲线,最终得到拟合函数。

因此我们根据这个步骤开始分析,首先随机出的这个曲线称为预测函数 ,然后根据误差 ,求出**代价函数,**再根据代价函数调整曲线,最终得到拟合最好的预测函数。下面我们根据下图进行算法流程讲解:

算法流程

预测函数:y = wx

第一个点的误差为: ,所有样本点的均方差就是代价函数

代价函数 ::

可以看出误差函数图像为一个开口向向上的二次函数,具有极小值点,因此我们找到这个最低点的w值,就得到了最终的拟合曲线。

实际情况中,我们要求解的不一定是一元二次的函数,是多元甚至更高次的函数的最小值,因此我们就要使用算法来寻找这个最低点,寻找最低点的算法之一就是梯度下降算法。

因此,我们定义(e,w)函数图像中某一个位置的陡峭程度为梯度 ,对应就是斜率k ,我们根据梯度往下搜索就会找到最低点。那么该如何搜索,每次的步长改迈多大?这时候就要引入学习率的概念:

学习率: 首先梯度下降的过程是使用斜率k作为基准步长,越陡峭下降越快,越平滑下降越慢,这样就能最快达到最低点,由于斜率与x的关系不确定 ,因此我们就要乘上一个参数控制步长大小,这个参数就是学习率,这样函数在适当的学习率下,可以快速准确地收敛到最小值的位置。

算法优化

在下降方法上,存在如下优化方法:

BGD:批量梯度下降算法,采用所有样本进行运算 ,速度慢,精确度高

SGD:随机梯度下降算法,采用随机样本进行计算,速度快,精准度低

MBGD:小批量梯度下降算法,采用随机小批量样本点进行运算,也叫最速下降法,这个方法最常用

在学习率上,存在如下优化方法:

AdGrad:动态学习率,经常更新的参数学习率就小一点,不常更新的参数学习率就大一点

RMSProp算法:优化动态学习率

AdaDelta算法:无需设置学习率

Adam算法:融合AdaGrad和RMSProp

Momentum算法:模拟动量,螺旋搜索前进,

BP反向传播算法

BP反向传播算法就是利用结果来反向更新参数的算法。

一次变化

例如一个线性拟合,x经过w,b的线性拟合后变为y = wx + b

损失函数:

其中是预测值,为真实值,假设有一个真实样本为,随机出一个,得出,根据损失函数求出损失,根据梯度下降算法,我们的目标是求出L对w和b的梯度值,也就是偏导数,然后再沿着梯度的反方向更新这两个参数

通过计算L对y的偏导求出L对w和b的偏导:

带入

得:

假设学习率

更新下一次的w和b:

二次变换

例如一个线性拟合,x经过w1,b1的线性拟合后变为y = wx + b,经过w2,b2的线性变换后为y

损失函数:

求导过程如下:

在计算机中求导过程如下

代码如下:

注:本文部分图片与文字来自哔站up主:风中摇曳的小萝卜,梗直哥丶

相关推荐
天选之女wow11 小时前
【Hard——Day8】65.有效数字、68.文本左右对齐、76.最小覆盖子串
linux·运维·redis·算法·leetcode
AI大模型学徒12 小时前
NLP基础(八)_马尔可夫模型
算法·机器学习·自然语言处理·nlp·概率论·马尔可夫模型
前端小L12 小时前
图论专题(十八):“逆向”拓扑排序——寻找图中的「最终安全状态」
数据结构·算法·安全·深度优先·图论·宽度优先
前端小L12 小时前
图论专题(十七):从“判定”到“构造”——生成一份完美的「课程表 II」
算法·矩阵·深度优先·图论·宽度优先
limenga10212 小时前
奇异值分解(SVD):深度理解神经网络的内在结构
人工智能·深度学习·神经网络·机器学习
秋邱12 小时前
【机器学习】深入解析线性回归模型
人工智能·机器学习·线性回归
qq_4335545412 小时前
C++ 稀疏表
开发语言·c++·算法
●VON13 小时前
人工智能、机器学习与深度学习:从概念到实践
人工智能·深度学习·机器学习
学习中的数据喵13 小时前
机器学习之逻辑回归
人工智能·机器学习·逻辑回归
小白程序员成长日记13 小时前
2025.11.21 力扣每日一题
算法·leetcode·职场和发展