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

相关推荐
Mr.Winter`1 小时前
深度强化学习 | 图文详细推导软性演员-评论家SAC算法原理
人工智能·深度学习·神经网络·机器学习·数据挖掘·机器人·强化学习
强盛小灵通专卖员1 小时前
分类分割详细指标说明
人工智能·深度学习·算法·机器学习
IT猿手5 小时前
基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
神经网络·算法·matlab·人机交互·无人机·强化学习·无人机三维路径规划
蜡笔小新..7 小时前
从零开始:用PyTorch构建CIFAR-10图像分类模型达到接近1的准确率
人工智能·pytorch·机器学习·分类·cifar-10
沅_Yuan8 小时前
基于小波神经网络(WNN)的回归预测模型【MATLAB】
深度学习·神经网络·matlab·回归·小波神经网络·wnn
万能程序员-传康Kk8 小时前
旅游推荐数据分析可视化系统算法
算法·数据分析·旅游
PXM的算法星球8 小时前
【并发编程基石】CAS无锁算法详解:原理、实现与应用场景
算法
ll7788118 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
烨然若神人~8 小时前
算法第十七天|654. 最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
算法
视觉语言导航8 小时前
湖南大学3D场景问答最新综述!3D-SQA:3D场景问答助力具身智能场景理解
人工智能·深度学习·具身智能