【王木头学科学|深度学习】6. 如何理解“梯度下降法?”“什么反向传播”?

笔记来源于B站UP主@王木头学科学
笔记来源https://www.bilibili.com/video/BV1Zg411T71b

正向传播:把数据输入到神经网络,这些数据会沿着神经网络正向的传递,传递过程中会一层一层一个一个的感知机(也就是感知机上的参数W和b对结果产生的影响,有的对输出的结果影响大,有的对输出的结果产生的影响小)进行操作之后,最后得出结果
反向传播:当一个神经网络还没有训练好的时候,它的判断结果是有偏差的,这个偏差也是依赖于W和b,如果某个w或者某个b,它对判断的结果产生重大的影响,那么当这个判断结果有偏差的时候,这个W和b也是对偏差有重大影响,所有当我们知道有偏差值的时候,肯定是优先调整对最后判断结果有重大影响的参数,这样性价比最高。所以正向传播它是通过w和b最后计算得到了一个判断的结果,而反向传播不仅是方向反了,它还携带传递偏差值的信息,把这些偏差传递到各个参数上,然后根据这些参数对偏差的贡献的大小,相应承担修改的责任。

1. 梯度

曲面上取一个黑点,在黑点处做一个切面,过黑点的切面与红色的曲相切,这个切面确地以后就可以找到过过黑点任意一条直线,其实都代表了它是红色曲面的一个切线,其中图中的黑色直线是最特殊的,它指向的这个方向是上升到顶点最快的方向。黑色的切线与梯度密切相关,黑色直线的在xy平面上的投影。
在这里插入图片描述
黑色直线的在x、y平面上的投影,这个方向指着的永远是上升最快的那个方向,它都是和等高垂直的,也就是最快上升的方向,这条线才是真正的梯度
在这里插入图片描述
将梯度进行分解
在这里插入图片描述
在这里插入图片描述
现在有一个点,想要沿着梯度方向变化,

在这里插入图片描述

2. 神经网络里的梯度下降法(意会)

以下推导只用于意会:J表示输出层的损失(a, b,y 分别是w[3],a[2],b[3]分量的系数),现对J计算梯度。想要J数值沿着变化方向最快进行变化,更新w,b。a[2]不能直接更新,因为它还与上一层有关,所以讲其进行变化(如下图),前面的a[2]是当前值,后面的a[2]是目标值,这个式子与前面的损失函数有异曲同工之妙,损失函数是输出层与目标值的差值,而这是隐藏层与目标值的差值,所以假设J[2]表示第二层代表的“损失函数”,然后将J[2]继续展开,开启下一轮…
在这里插入图片描述

梯度下降法具体计算:
在这里插入图片描述
在这里插入图片描述
得到新的“损失函数”,然后再对新的损失函数再次求偏导
在这里插入图片描述
继续更新参数。a[1]的偏差数值不是由一个感知机确定,而是上一层的所有,所有要叠加,求平均。
到a[0],它是输入数据,是常量不需要修改。
在这里插入图片描述

3. 梯度下降法(严谨推导)

  • 隐藏层
    某一个感知机里面的参数介绍
    在这里插入图片描述
    由上一层** [l-1] 输出的值作为下一层[l]的输入,其中的系数就是W**,和 b,右上角的方括号[ ],表示第几层,右下角** i 表示第 i 个。w和b通过线性运算之后得到z**,z不能直接作为下一层的输入,还需要经过激活函数
    在这里插入图片描述
    得到a
    在这里插入图片描述
    1. 单个感知机的表达为,其中有下标的表示第几个感知机,a[l-1]没有下标,表示上一层整层的输出
    在这里插入图片描述

2. 整层感知机表达式:
在这里插入图片描述
只有上标没有下标,表示一整层感知机
在这里插入图片描述

  • 输出层
    1. 只考虑一个输出节点
    在这里插入图片描述
    J(y(k),a[l] (k)),圆括号代表训练集的个数,方括号代表第几层;x(k)进行矩阵分解,其实就是每一个像素,他们的输入可以表示为第0层的输出。
    下面这个是人工打标签,打标签的结果就是y(k)
    在这里插入图片描述
    2. 多个输出节点
    在这里插入图片描述
    因为x或者y都是确定的值,也就是损失函数唯一依赖的就是a(输出层的具体输出值),所以还能简写
    在这里插入图片描述

  • 反向传播
    求得损失函数之后,需要进行反向传播,将偏差值传递回去,那就是要对损失函数J求解梯度
    在这里插入图片描述
    为了方便后面的循环迭代,假设输出层是最后一层感知机——L+1层感知机(虚拟的感知机,把这个分量当做新的损失函数,这个损失函数只对相应的感知机有效)
    在这里插入图片描述
    对L+1层对应上一层每一个感知机求梯度
    在这里插入图片描述

    在这里插入图片描述
    链式求导展开
    在这里插入图片描述
    另外W[L]、a[L]也是向量,向量是有分量的,对其每个 分量进行求偏导
    在这里插入图片描述
    为了后面的表达简洁,以上的展开后面就不进行了

回到上面的梯度求导问题,各个梯度的分量都找到了,也就可以对参数w、b进行修改了
在这里插入图片描述
其中n就是学习率
而这部分的分量无法直接修改,它的改变要依赖于上一层的改变
在这里插入图片描述
所以,将这些重新定义为新的损失函数这样就可以把整个过程循环起来迭代起来。这个损失函数就是偏差值,这个需要由前面一层的来负责承担
在这里插入图片描述
然后将这一层看做是L+1层
在这里插入图片描述
在这里插入图片描述
重复前面的过程
在这里插入图片描述
在这里插入图片描述
比如对于第一个感知机来说,它需要承担的偏差量,不止一个偏差值赋予的,而是由所有的偏差值来赋予的,把所有偏差值的分量统一加起来,求平均,把它作为调整的量,然后更新参数
在这里插入图片描述
把所有需要调整的偏差值写出来,W、b是可以修改参数的,把a重新定义为新的损失函数,进行下去

在这里插入图片描述
这个是输入值,是常数,这个分量就不存在了,
在这里插入图片描述
在这里插入图片描述

到这,所有的系数全部修改完成,整个神经网络第一轮学习,所有系数的更新迭代完成一遍。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值