梯度下降
简而言之,对于深度学习的模型,比如普通的神经网络,我们有一个输入值 x x x,一个矩阵 W W W 和一个输出预测值 Y ^ = W ⋅ x \hat{Y}=W·x Y^=W⋅x, 但是往往除此之外还会有一个真实的 y y y 值。拿一种较为常见的损失函数公式举例:
C o s t = ( p r e d i c t e d − r e a l ) 2 = ( W ⋅ x − y ) 2 Cost=(predicted-real)^2=(W·x-y)^2 Cost=(predicted−real)2=(W⋅x−y)2
梯度下降说白了是一种优化算法,其目的是为了不断将预测值和真实值之间的差(损失值)减小。其方式就是不停的找下降最快的“梯度”,然后按照这个梯度进行下降。
【梯度】
对于一个二维的坐标系来说, 梯度就是曲线中一点的斜率 。根据上面的描述,
C
o
s
t
=
(
W
⋅
x
−
y
)
2
Cost=(W·x-y)^2
Cost=(W⋅x−y)2如果再进行简化一下:
C
o
s
t
=
(
W
−
0
)
2
Cost=(W-0)^2
Cost=(W−0)2(虽然这种简化在数学上是不成立的,但这里只是为了看看效果)就会得到如下的图像:
图中蓝点为初始点的位置,其斜率为此时的梯度,然后蓝点会朝着这个梯度的方向下降一点,然后在进行梯度的重新计算,得到下图:

然后再按照相同的方式直到到达梯度最小的点:

但是,再深度学习中的
W
W
W 不是如此简单的,一般会有很多个
W
W
W以矩阵的方式出现:
所以很难可视化出来这一个具体的过程,而且在梯度下降的过程中有可能出现很多“局部最优点”限制梯度下降的效果:

图中黄点为全局最优解,蓝点都是局部最优解
虽然神经网络不能够保证找到的点是全局最优解,但是神经网络现在通过找局部最优解已经完全可以胜任普通的任务了。
1453

被折叠的 条评论
为什么被折叠?



