对于代价函数:
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
i
^
,
y
(
i
)
)
=
1
m
∑
i
=
1
m
(
−
y
(
i
)
l
o
g
(
y
(
i
)
^
)
−
(
1
−
y
(
i
)
)
l
o
g
(
1
−
y
(
i
)
^
)
)
J(w,b)=\frac{1}{m}\sum_{i=1}^m{L(\widehat{y^i},y^{(i)})}=\frac{1}{m}\sum_{i=1}^m{(-y^{(i)}log(\widehat{y^{(i)}})-(1-y^{(i)})log(1-\widehat{y^{(i)}}))}
J(w,b)=m1i=1∑mL(yi
,y(i))=m1i=1∑m(−y(i)log(y(i)
)−(1−y(i))log(1−y(i)
))
函数图如下:
为什么要用到梯度下降算法?
代价函数的目的:求
J
(
w
,
b
)
J(w,b)
J(w,b)的最小值,
J
(
w
,
b
)
J(w,b)
J(w,b)越小,则说明预测值与真实值越接近,越接近就说明参数
w
w
w和
b
b
b越合适。那么该怎么让函数
J
(
w
,
b
)
J(w,b)
J(w,b)找到最小值呢?观察函数图可以看出,函数
J
(
w
,
b
)
J(w,b)
J(w,b)存在且仅存在最小值(因为
J
(
w
,
b
)
J(w,b)
J(w,b)是凸函数),就是下图所示的最低点:
在最低点处,
J
(
w
,
b
)
J(w,b)
J(w,b)导数接近为0,而在其它点处
J
(
w
,
b
)
J(w,b)
J(w,b)导数大于0或小于0。所以找到最低点的办法就是找
J
(
w
,
b
)
J(w,b)
J(w,b)梯度(导数)接近为0的点,而在深度学习过程中
w
w
w和
b
b
b是随机选取的,
J
(
w
,
b
)
J(w,b)
J(w,b)绝对在最小点之上,找到
J
(
w
,
b
)
J(w,b)
J(w,b)最小值就要根据梯度下降算法来找。
梯度下降算法
(1)用小红点来初始化参数
w
w
w和
b
b
b;
(2)朝最陡的下坡方向走一步,不断地迭代,我们朝最陡的下坡方向走一步,如图,走到了如图中第二个小红点处;
(3)我们可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图,经过两次迭代走到第三个小红点处;
(4)直到走到全局最优解或者接近全局最优解的地方。
通过以上的四个步骤我们可以找到全局最优解,也就是代价函数
J
(
w
,
b
)
J(w,b)
J(w,b)(成本函数)这个凸函数的最小值点。
梯度下降法的细节化说明(仅有一个参数)
假定代价函数(成本函数)
J
(
w
)
J(w)
J(w)只有一个参数
w
w
w,即用一维曲线代替多维曲线,这样可以更好画出图像。
迭代就是不断重复如图的公式:
w
=
w
−
a
d
J
(
w
)
d
w
w=w-a\frac{dJ(w)}{dw}
w=w−adwdJ(w)
a
a
a表示学习率(learning rate),用来控制步长(step),即向下走一步的长度
d
J
(
w
)
d
w
\frac{dJ(w)}{dw}
dwdJ(w)就是函数
J
(
w
)
J(w)
J(w)对
w
w
w求导。假设我们以如图点为初始化点,该点处的斜率的符号是正的,即
d
J
(
w
)
d
w
>
0
\frac{dJ(w)}{dw}>0
dwdJ(w)>0,所以接下来会向左走一步。整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点。
假设我们以如图点为初始化点,该点处的斜率的符号是负的,即
d
J
(
w
)
d
w
<
0
\frac{dJ(w)}{dw}<0
dwdJ(w)<0,所以接下来会向右走一步。整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。
梯度下降法的细节化说明(两个参数)
逻辑回归的代价函数(成本函数)
J
(
w
,
b
)
J(w,b)
J(w,b)是含有两个参数的。
w
=
w
−
a
d
J
(
w
,
b
)
d
w
w=w-a\frac{dJ(w,b)}{dw}
w=w−adwdJ(w,b)
b
=
b
−
a
d
J
(
w
,
b
)
d
b
b=b-a\frac{dJ(w,b)}{db}
b=b−adbdJ(w,b)
对于单个样本实例的梯度下降算法中参数更新一次公式为:
w
(
1
)
=
w
(
1
)
−
a
d
w
(
1
)
w^{(1)}=w^{(1)}-adw^{(1)}
w(1)=w(1)−adw(1)
b
=
b
−
d
b
b=b-db
b=b−db
根本没有正确的选择,我们只不过是要努力奋斗把当初的选择变得正确。
深度学习之梯度下降算法
最新推荐文章于 2023-12-23 15:00:07 发布