线性回归 Linear Regression
线性回归详细代码请移步此处
对于线性模型:
y
=
w
×
x
+
b
y=w×x+b
y=w×x+b
其中,w为权重,初始值在本次代码中采用正态分布随机数,偏置b初始化为0.0
用
y
p
r
e
y_{pre}
ypre 表示线性模型的预测值,
y
r
e
a
l
y_{real}
yreal 表示对于输入x对应的真实标签,则损失函数采用均方误差:
E
r
r
o
r
=
(
y
p
r
e
−
y
r
e
a
l
)
2
Error=(y_{pre}-y_{real})^{2}
Error=(ypre−yreal)2
将线性模型公式带入得到:
E
r
r
o
r
(
x
)
=
(
(
w
×
x
+
b
)
−
y
r
e
a
l
)
2
Error(x)=((w×x+b)-y_{real})^{2}
Error(x)=((w×x+b)−yreal)2
这个式子就变成了关于x的一元二次函数,且开口向上,那么,预测问题就变成了降低误差问题,进一步变成了寻找抛物线最低点的问题:
E
r
r
o
r
(
x
)
Error(x)
Error(x)的斜率,可用grad(param)=tf.GradientTape().gradient(
E
r
r
o
r
(
x
)
Error(x)
Error(x), param)来获得,那么权重w和偏置b的更新公式为:
w
=
w
−
η
∗
g
r
a
d
(
w
)
w=w- \eta *grad(w)
w=w−η∗grad(w)
b
=
b
−
η
∗
g
r
a
d
(
b
)
b=b- \eta *grad(b)
b=b−η∗grad(b)
其中,
η
\eta
η 成为步长(step size)或者学习率(learning rate)
只要设定一个合理的学习率,w和b就会一步步靠近最低点,但是如果步长过大,就很难收敛到最低点,俗称步子迈太大容易扯到蛋
:
各位观众老爷,给个赞再走吧~~