2.2 梯度下降和反向传播
梯度下降和反向传播
目标
-
知道什么是梯度下降
-
知道什么是反向传播
1. 梯度是什么?
梯度:是一个向量,导数+变化最快的方向(学习的前进方向)
回顾机器学习
收集数据 ,构建机器学习模型
,得到
判断模型好坏的方法:
目标:通过调整(学习)参数,尽可能的降低
,那么我们该如何调整
呢?
随机选择一个起始点,通过调整
,让loss函数取到最小值
的更新方法:
-
计算
的梯度(导数)
-
更新
其中:
-
<0 ,意味着w将增大
-
>0 ,意味着w将减小
总结:梯度就是多元函数参数的变化趋势(参数学习的方向),只有一个自变量时称为导数
2. 偏导的计算
2.1 常见的导数计算
-
多项式求导数:
-
基本运算求导:
-
指数求导:
-
对数求导:
,ln 表示log以e为底的对数
-
导数的微分形式:
那么:如何求 的导数呢?那就可以使用
则有:
2.2 多元函数求偏导
一元函数,即有一个自变量。类似
多元函数,即有多个自变量。类似三个自变量x,y,z
多元函数求偏导过程中:对某一个自变量求导,其他自变量当做常量即可
例1:
例2:
例3:
练习:
3. 反向传播算法
3.1 计算图和反向传播
计算图:通过图的方式来描述函数的图形
在上面的练习中,
,把它绘制成计算图可以表示为:
绘制成为计算图之后,可以清楚的看到向前计算的过程
之后,对每个节点求偏导可有:
那么反向传播的过程就是一个上图的从右往左的过程,自变量$a,b,c$各自的偏导就是连线上的梯度的乘积:
3.2 神经网络中的反向传播
3.2.1 神经网络的示意图
表示网络第n层权重
表示第n层第i个神经元,连接到第n+1层第j个神经元的权重。
3.2.2 神经网络的计算图
其中:
-
是根据损失函数对预测值进行求导得到的结果
-
f函数可以理解为**函数
问题:那么此时的偏导该如何求解呢?
通过观察,发现从 到
的来连接线有两条
结果如下:
公式分为两部分:
-
括号外:左边红线部分
-
括号内
-
加号左边:右边红线部分
-
加号右边:蓝线部分
-
但是这样做,当模型很大的时候,计算量非常大
所以反向传播的思想就是对其中的某一个参数单独求梯度,之后更新,如下图所示:
计算过程如下
更新参数之后,继续反向传播
计算过程如下:
继续反向传播
计算过程如下:
通用的描述如下