深度学习基础: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=0∑m(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) ∂wi∂L(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) α∂wi∂L(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−α∂wi∂L(w1,w2...,wd,b)
更新完所有参数,即完成了一轮的迭代,接下来就能以新的一组 w i w_i wi参与下一轮迭代。
举例说明
有数据集表示如下:
x | y |
---|---|
1 | 2 |
2 | 4 |
3 | 6 |
假设,我们使用 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=(2−1∗w)2+(4−2∗w)2+(6−3∗w)2