梯度下降和反向转播

文章介绍了如何在B站上的StatQuest课程中理解机器学习中的优化方法,如线性回归中的损失函数最小化,通过梯度下降和随机梯度下降寻找最优解,以及反向传播的工作原理。
摘要由CSDN通过智能技术生成

B站上有些课讲的蛮清晰的,推荐一个双语的StatQuest的个人空间-StatQuest个人主页-哔哩哔哩视频

通常来说我们要找到最优解,会有个判别方式,那么对于常规AI任务来说这个方式就是损失函数值,目标就是让损失函数值最小。以线性回归模型为例,假设y和不同的xi参数之间可以表示为线性函数。既然是函数,就肯定有函数相应的参数,例如一次函数的截距、斜率。

通常在训练数据时,最终的目标就是拟合出一个最接近真实的函数,对于一次线性回归来说就是找到最合适的斜率和截距,就是k和b。损失函数这里用差的平方和,当然实际应用中会有不同的选择,训练要做的就是找到一组k,b,让损失函数的值最小。

求最小值,通常的方式就是求导,如果有不同的变量都要一起判断,那么就成了梯度。只有两个变量的话,就是对应二元函数F=f(x,y)中F'x和F'y这俩偏导组成的向量。那导数怎么求最小呢,一般就是导数为0嘛,不过不是所有的场景导数都可以等于0,因此可以认为我们要找的是导数的最小值。

训练过程一般会先随机取一个点,还会设置一个学习率,代码中命名为lr,每次判断导数值之后,肯定要再取一个点,那么这个点就是以导数值乘以lr的结果作为步长迈出来的,也就是说,随着导数值下降,你的步长也会变小,这也是为什么收敛的速度会越来越慢的原因。最终,当导数值小于一个值的时候,我们可以认定已经达到最小了,最终求出最低点对应的拟合参数。(导数值也急速梯度值,差不多的)

具体步骤是这样的:

1. 对损失函数中需要的参数求导(链式求导法则),然后转换成传说中的梯度

2. 参数取个随机值

3. 参数值带入梯度,计算步长

4. 计算新参数

循环3,4,直到找到最优解

这里换成其他模型和损失函数都是一样的,原理相同

随机梯度下降就是梯度下降的变体,因为实际应用中数据量通常很大,拟合所有的点会很慢,因此每次随机选择一部分数据,减少时间

反向传播其实就是梯度下降思想的应用,对于每个参数都可以用链式求导法则求出对应的偏导数值,然后根据权重和偏置等参数,对样本计算损失,然后逐步更新参数直到达到最优解,至于为什么叫反向呢,因为反向传播步骤是:

1.前向传播,输入样本,经过一层层,最后输出

2. 根据损失函数计算loss值,也就是优化的目标,要让这个最小

3. 从输出层反向一层层计算权重等参数的优化,所以才叫反向

个人理解就是越前面的参数,和后面的参数关系就越大,有时候可能可能求出的偏导函数中会有靠近输出层的参数,所以要从输出层往输入层一层层优化,所以就是反向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值