深度学习基础:3.反向传播和梯度下降

Posted zstar-_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习基础:3.反向传播和梯度下降相关的知识,希望对你有一定的参考价值。

动态计算图

计算图可以用来表示两个变量之间的关系。例如,构建 y = x 2 y=x^2 y=x2,则可用一张简单计算图进行表示。
pytorch支持动态计算图,动态意义在于,当创建其它由计算图中变量而来的新变量时,新变量会自动添加到计算图内。
而Tensorflow v1仅支持静态计算图,需要提前定义各个变量的关系,灵活性不如动态计算图。

反向传播

通过反向传播,可以计算各变量的导数。

x = torch.tensor(1.,requires_grad = True) #requires_grad=True表示x可导
y = x ** 2
y.backward()
# 在y=x**2函数关系基础上,x取值为1时的导数值
x.grad

输出:

tensor(2.)

梯度下降

梯度下降的代数表示

令多元线性回归方程为
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x) = w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b

w ^ = ( w 1 , w 2 , . . . , w d , b ) \\hat w = (w_1,w_2,...,w_d,b) w^=(w1,w2,...,wd,b)
x ^ = ( x 1 , x 2 , . . . , x d , 1 ) \\hat x = (x_1,x_2,...,x_d,1) x^=(x1,x2,...,xd,1)

出于加快迭代收敛速度的目标,我们在定义梯度下降的损失函数L时,在原SSE基础上进行比例修正,新的损失函数 L ( w 1 , w 2 , . . . , w d , b ) = 1 2 m S S E L(w_1,w_2,...,w_d,b) = \\frac{1}{2m}SSE L(w1,w2,...,wd,b)=2m1SSE,其中,m为样本个数。

损失函数有:

L ( w 1 , w 2 , . . . , w d , b ) = 1 2 m ∑ j = 0 m ( f ( x 1 ( j ) , x 2 ( j ) , . . . 1 ) − y j ) 2 L(w_1,w_2,...,w_d,b) = \\frac{1}{2m}\\sum_{j=0}^{m}(f(x_1^{(j)}, x_2^{(j)}, ...1) - y_j)^2 L(w1,w2,...,wd,b)=2m1j=0m(f(x1(j),x2(j),...1)yj)2

并且,根据此前描述过程,在开始梯度下降求解参数之前,我们首先需要设置一组参数的初始取值 ( w 1 , w 2 . . . , w d , b ) (w_1, w_2..., w_d, b) (w1,w2...,wd,b),以及学习率 α \\alpha α,然后即可执行迭代运算,其中每一轮迭代过程需要执行以下三步

Step 1.计算梯度表达式

对于任意一个参数 w i w_i wi,其梯度计算表达式如下:

∂ ∂ w i L ( w 1 , w 2 . . . , w d , b ) \\frac{\\partial}{\\partial w_i}L(w_1, w_2..., w_d, b) wiL(w1,w2...,wd,b)

Step 2.用学习率乘以损失函数梯度,得到迭代移动距离

α ∂ ∂ w i L ( w 1 , w 2 . . . , w d , b ) \\alpha \\frac{\\partial}{\\partial w_i}L(w_1, w_2..., w_d, b) αwiL(w1,w2...,wd,b)

Step 3.用原参数减Step 2中计算得到的距离,更新所有的参数w

w i = w i − α ∂ ∂ w i L ( w 1 , w 2 . . . , w d , b ) w_i = w_i - \\alpha \\frac{\\partial}{\\partial w_i}L(w_1, w_2..., w_d, b) wi=wiαwiL(w1,w2...,wd,b)

更新完所有参数,即完成了一轮的迭代,接下来就能以新的一组 w i w_i wi参与下一轮迭代。

举例说明

有数据集表示如下:

xy
12
24
36

假设,我们使用 y = w x y = wx y=wx进行拟合,则SSE为:

S S E = ( 2 − 1 ∗ w ) 2 + ( 4 − 2 ∗ w ) 2 + ( 6 − 3 ∗ w ) 2 = w 2 − 4 w + 4 + 4 w 2 − 16 w + 16 + 9 w 2 − 36 w + 36 = 14 w 2 − 56 w + 56 = 14 ( w 2 − 4 w + 4 ) SSE = (2-1*w)^2 + (4-2*w)^2 + (6-3*w)^2 \\\\ = w^2-4w+4+4w^2-16w+16+9w^2-36w+36 \\\\ = 14w^2-56w+56 \\\\ = 14(w^2-4w+4) SSE=(21w)2+(42w)2+(63w)2以上是关于深度学习基础:3.反向传播和梯度下降的主要内容,如果未能解决你的问题,请参考以下文章

深度学习的损失函数优化方法

[人工智能-深度学习-7]:数据流图正向传播导数梯度梯度下降法反向链式求导,非常非常重要!!!

三深度学习基础2(前反向传播;超参数)

动手深度学习15-深度学习-正向传播反向传播和计算图

深度学习入门 2022 最新版 深度学习简介

《Andrew Ng深度学习》笔记2