Deep Learning Note: 1-3 m 个样本上的梯度下降
Contents [show]
1. m 个样本上的梯度下降
前文通过计算图得到了对于单个样本的各个参数的偏导,下面扩展到 m 个样本的情况,给出在 m 个样本上进行逻辑回归梯度下降的方法。
回顾一下前面得到的逻辑回归的代价函数为:
J(w,b)=1mm∑i=1L(a(i),y(i))
其中,
a(i)=ˆy(i)=σ(z(i))=σ(wTx(i)+b)
前文通过计算图得到了只有两个特征(wT=[w1w2])的情况下,损失函数 L 对第 i 各样本的各参数的偏导 ∂L∂w(1)1,∂L∂w(1)2,∂L∂b(1),为了方便书写,将他们分别简写为 dw(i)1、dw(i)2、db(i)。由式 (1),可得对于参数 w1,有:
∂∂w1J(w,b)=1mm∑i=1∂∂w(i)1L(a(i),y(i))=1mm∑i=1dw(i)1
即计算每个样本的 dw(i)1,再进行平均。类似地,可以得到 ∂∂w2J(w,b) 和 ∂∂bJ(w,b):
∂∂w2J(w,b)=1mm∑i=1dw(i)2
∂∂bJ(w,b)=1mm∑i=1db(i)
2. 计算步骤
得到了代价函数 J(w,b) 关于 w1、w2 和 b 的偏导后,就可以实现梯度下降了。为了方便书写,将 ∂∂w1J(w,b)、∂∂w2J(w,b)、∂∂bJ(w,b) 分别简写为 dw1、 dw2 和 db,梯度下降的具体步骤如下:
(1)初始化 J=0,dw1=0,dw2=0,db=0
(2)计算 m 个样本的 L(a(i),y(i))、 dw(i)1、 dw(i)2 和 db(i),累积到 J、dw1、dw2、db,步骤如下:
\begin{align} for & \; i = 1 \; to \; m: \\ &z^{(i)} = w^T x^{(i)} + b \\ &a^{(i)} = \sigma(z^{(i)}) \\ &J = J + L(a^{(i)}, y{(i)}) = J -[y^{(i)}\log{a^{(i)}} + (1 – y^{(i)})\log(1 – a^{(i)})] \\ &dz^{(i)} = a^{(i)} – y^{(i)} \\ &dw_1 = dw_1 + dw_1^{(i)} = dw_1 + x_1^{(i)} dz^{(i)} \\ &dw_2 = dw_2 + dw_2^{(i)} = dw_2 + x_2^{(i)} dz^{(i)} \\ &db = db + db^{(i)} = db + dz^{(i)} \\ \end{align}
然后求平均:
\begin{equation} J /= m \\ dw_1 /= m \\ dw_2 /= m \\ db /= m \end{equation}
上面 dw_1^{(i)} = x_1^{(i)} dz^{(i)}、dw_2^{(i)} = x_2^{(i)} dz^{(i)}、db^{(i)} = dz^{(i)} 取自前文 中式(10)、(11)、(12) 的结果。
(3)得到 dw1、dw2、db 后,就可以对参数 w1、w2、b 进行更新,使得代价函数 J 向减小的方向移动一小步:
\begin{equation} w_1 = w_1 – \alpha dw_1 \\ w_2 = w_2 – \alpha dw_2 \\ b = b – \alpha db \end{equation}
由此就完成了梯度下降的一步。之后需要不断重复此步骤,即不断调整参数 w_1、w_2、b,使得代价函数 J 不断向减小的方向移动,直到达到或接近一个所接受的极小值。如前所述,以上所使用的代价函数是一个凸函数,可以通过梯度下降达到全局最佳,即找到最佳的参数 w_1、w_2、b 使得代价函数达到最小值。