一:简单梯度下降
1. 概述
预测模型为
y=b+w∗xcp
y
=
b
+
w
∗
x
c
p
,真实标签为
y^n
y
^
n
,则损失函数loss function为
我们目的是最小化 损失函数L(w,b),即找出最佳的 w∗,b∗ w ∗ , b ∗
即
处理方法 : 梯度下降法
2. 仅含一个参数的梯度下降
对某一个参数的偏导数,就是对损失函数在这个参数的方向的斜率
即,就是
然后,不对向极点逼近
3. 含多个参数的梯度下降
我们可以多个参数 列在一起,变成一个列向量。
同时,通过链式法则,直接可以求出每一个点的偏导数的值
梯度下降可能会出现一些问题。
1. 我们下降到一个局部最优值,但是不是全局最优值。
2. 下降到下图中第二种情况。这个地方的导数也是为0。但是也不在最优点,而且可能离最优点很远
3. 下降到下图中第一种情况。这个地方的导数约为0。而且离最优点更远
以上三种情况,都会对结果产生影响。
但是,在线性回归中,不用考虑这种问题。因为,线性回归的loss fuanction 损失函数是
(y^−y)2
(
y
^
−
y
)
2
,即是平方。所以是个凸函数,呈现一个碗状。有且仅有一个最优值。上面三种情况不会出现。
二: Tuning your learning rates 与 Adagrad算法
1. 回顾
问题 最小化L , 求对应的参数
方法:梯度下降,如下
2. 使用可变 learning rates
在多个变量情况下,我们画不出左图的情况,但是可以画出右图的情况。所以,编代码时,要画出右图,时时关注曲线变化,才能够找到自己的learning rates是否设置的合理
如上图所示,左右两图对照着看
1. 红色表示learning rates 正好
2. 蓝色表示learning rates 过小,可以到达谷底,但是速度太慢,如右图
3. 绿色表示learning rates过大,先下降很快,但是最后卡在了一个地方,就是下降不下来
4. 黄色表示learning rates太大,直接飞出去了,损失函数不仅没降下来,还增大了
发现,learning rates 的不同,直接影响了最终结果的好坏。因此有了,时时改变learning rates的想法。
基本想法:
learning rates 不能一成不变。根据参数的不同,给出不同的learning rates
1. 一开始, 离目的地远,所以learning rates可以大一些。即,一次跨大步子大。
2. 几个回合后,离得目的地近,调小learning rates,避免出现上图中绿色线一样,最终卡得不能走下去。
比如
3. Adagrad 算法
普通梯度下降
Adagrad 算法
其中:
所以,最终Adagad算法核心为:
三: Stochastic Gradient Descent 随机梯度下降
Make the training faster
训练速度明显优于上面的梯度下降
原理: 一次仅仅处理一个数据,进行更新参数。等每个数据都处理了一遍,参数也就更新完了。
实验表明,
1. 假如有20个数据,每次仅仅处理一次数据,处理20次 ——————随机梯度下降
2. 直接20个数据一次处理完,仅处理一次——————————普通梯度下降
以上两种情况,第一次的速度明显优于第二次。
四: Feature Scaling 特征标准化
比如:
为什么要将特征标准化???
如上图所示,左图特征不在一个量级,右图特征在一个量级。那么左图等高线图像为不规则椭圆,右图等高线图像接近与圆。
对二者都进行梯度下降。如图所示,你会发现,
左图梯度下降很曲折,走了很多弯路,且很容易到达局部最优,且当learning rates取得不合适时,根本走不到谷底。
但是右图就很容易达到最优值,达到谷底。
一种标准化的方法:
对于每一个特征:
此时每一个维度 平均值都为0 。方差都为1。
四: 梯度下降数学解释(梯度下降与泰勒级数)
一元泰勒级数
多元泰勒级数(二元)
仅仅保留一阶导数叫做 梯度下降。
用二阶导数 就是 Hessian矩阵。
多元泰勒级数与梯度下降
那么梯度下降,就是梯度方向一小步一小步向下走,走到最低端。如下图。
在二元泰勒级数上,我们去掉高阶导数,仅仅留一阶导数
要找到最小的
(θ1,θ2)
(
θ
1
,
θ
2
)
最小化L
同时点
(θ1,θ2)
(
θ
1
,
θ
2
)
要在红色小圆内,所以
令
Δθ1=θ1−a
Δ
θ
1
=
θ
1
−
a
Δθ2=θ2−b
Δ
θ
2
=
θ
2
−
b
则
L(θ)≈s+u∗Δθ1+v∗Δθ2=s+(u,v)⋅∗(Δθ1,Δθ2)
L
(
θ
)
≈
s
+
u
∗
Δ
θ
1
+
v
∗
Δ
θ
2
=
s
+
(
u
,
v
)
⋅
∗
(
Δ
θ
1
,
Δ
θ
2
)
其中s是常数,不变,那么就是怎样最小化
(Δθ1,Δθ2)
(
Δ
θ
1
,
Δ
θ
2
)
与(u,v)两个向量的点积。
两个向量的点积什么时候最小?
(u,v)⋅∗(Δθ1,Δθ2)
(
u
,
v
)
⋅
∗
(
Δ
θ
1
,
Δ
θ
2
)
=
|(u,v)|∗(Δθ1,Δθ2)∗cos(θ)
|
(
u
,
v
)
|
∗
(
Δ
θ
1
,
Δ
θ
2
)
∗
c
o
s
(
θ
)
则,两个向量的模值最大,且方向相反(即180度)。此时两个向量的点积最小。
有
(Δθ1,Δθ2)∗cos(θ)
(
Δ
θ
1
,
Δ
θ
2
)
∗
c
o
s
(
θ
)
方向必须在圆内,所以点最佳在圆上。
所以
则
即
综上: