机器学习与深度学习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主:风中摇曳的小萝卜,梗直哥丶

相关推荐
YFJ_mily2 小时前
【会议征稿】第八届人本计算与数据智能国际会议(HCC 2026)| 广州12月召开,EI/Scopus稳定检索,多届收录无忧
机器学习·人机交互·ei会议·数据智能·rdlink研发家·人本计算·广州会议
陕西企来客7 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
普通攻击往后拉8 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
@syh.9 小时前
【贪心】矩阵消除游戏
算法·游戏·矩阵
可编程芯片开发9 小时前
基于零极点配置的PID控制系统simulink建模与仿真
算法
徐小夕10 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
Hrain-AI10 小时前
2026 企业 AI 智能体平台横评:8 大主流平台 7 维度实测对比
人工智能·算法·机器学习
Angel Q.11 小时前
因子分析和生成模型有什么关系?从“幕后因素”到“生成数据”
算法
妍妍爱学习12 小时前
自动编码器与变分自动编码器:同一脉络下的进化
深度学习·无监督学习·概率模型·自动编码器·变分自动编码器