梯度
相信大家在高数中都学过什么是梯度。
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
也就是 g r a d f grad \;f gradf
函数在一点沿梯度方向的变化率最大,最大值为该梯度的模
梯度下降
可以那个代价函数 J 最小化的一种算法,当然也可以最小化其他函数,不仅仅是线性回归中的
方法
给定 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1的初始值,不停的一点点地改变这两个值
沿着该点下降速度最快的方向进行一点点的移动,达到一个局部最优解
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
f
o
r
j
=
0
a
n
d
j
=
1
)
\theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1) \;\;\;\;(for j = 0 \;and \;j = 1)
θj:=θj−α∂θj∂J(θ0,θ1)(forj=0andj=1)
α
\alpha
α称为学习率,用来控制梯度下降时,我们迈多大的步子
对于这个公式我们要同时更新这两个参数
我们反复做这一步,直到函数收敛
那么 α \alpha α怎么取呢?
显然取太大或者太小的定值是不好的,确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢
当随着导数的变小幅度也会变小,所以我们不需要额外的再次改变α的取值
线性回归算法
即用直线来拟合数据
它结合了代价函数和梯度下降
也就是将梯度下降运用到代价函数来
偏导求解过程:
那么将我们得到的结果带回梯度下降的公式中得到:
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
∗
x
(
i
)
\theta_0:=\theta_0-\alpha \frac{1}{m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)})-y^{(i)}) \\\\ \theta_0:=\theta_0-\alpha \frac{1}{m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)})-y^{(i)}) *x^{(i)}
θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))∗x(i)
不断重复该过程直到收敛(注意同步更新!)
那么我们之间就看到了,梯度下降容易陷入局部最优
但是线性回归的图形三维是抛物面(多维可推广),本质就是凸函数,所以不存在这样的问题只有一个全局最优
陷入局部最优
但是线性回归的图形三维是抛物面(多维可推广),本质就是凸函数,所以不存在这样的问题只有一个全局最优
吴老师也提到了,不用迭代法也可以完成拟合操作,即用最小二乘法确定参数