Deep Learning Note: 1-3 m 个样本上的梯度下降

1. m 个样本上的梯度下降

  前文通过计算图得到了对于单个样本的各个参数的偏导,下面扩展到 m 个样本的情况,给出在 m 个样本上进行逻辑回归梯度下降的方法。

  回顾一下前面得到的逻辑回归的代价函数为:

\begin{equation}
J(w, b) = \frac{1}{m} \sum_{i = 1}^m L(a^{(i)}, y{(i)}) \tag{1}
\end{equation}

  其中,

\begin{equation}
a^{(i)} = \hat{y}^{(i)} = \sigma(z^{(i)}) = \sigma(w^T x^{(i)} + b) \tag{2}
\end{equation}

  前文通过计算图得到了只有两个特征($w^T = [w_{1} w_{2}]$)的情况下,损失函数 $L$ 对第 $i$ 各样本的各参数的偏导 $\frac{\partial L}{\partial w_{1}^{(1)}}$,$\frac{\partial L}{\partial w_{2}^{(1)}}$,$\frac{\partial L}{\partial b^{(1)}}$,为了方便书写,将他们分别简写为 $dw_1^{(i)}$、$dw_2^{(i)}$、$db^{(i)}$。由式 (1),可得对于参数 $w_1$,有:

\begin{equation}
\frac{\partial}{\partial w_1} J(w, b) = \frac{1}{m} \sum_{i = 1}^m \frac{\partial}{\partial w_1^{(i)}} L(a^{(i)}, y{(i)}) = \frac{1}{m} \sum_{i = 1}^m dw_1^{(i)} \tag{3}
\end{equation}

  即计算每个样本的 $dw_1^{(i)}$,再进行平均。类似地,可以得到 $\frac{\partial}{\partial w_2} J(w, b)$ 和 $\frac{\partial}{\partial b} J(w, b)$:

\begin{equation}
\frac{\partial}{\partial w_2} J(w, b) = \frac{1}{m} \sum_{i = 1}^m dw_2^{(i)} \tag{4}
\end{equation}

\begin{equation}
\frac{\partial}{\partial b} J(w, b) = \frac{1}{m} \sum_{i = 1}^m db^{(i)} \tag{5}
\end{equation}

2. 计算步骤

  得到了代价函数 $J(w, b)$ 关于 $w_1$、$w_2$ 和 $b$ 的偏导后,就可以实现梯度下降了。为了方便书写,将 $\frac{\partial}{\partial w_1} J(w, b)$、$\frac{\partial}{\partial w_2} J(w, b)$、$\frac{\partial}{\partial b} J(w, b)$ 分别简写为 $dw_1$、 $dw_2$ 和 $db$,梯度下降的具体步骤如下:

  (1)初始化 $J = 0$,$dw_1 = 0$,$dw2 = 0$,$db = 0$

  (2)计算 m 个样本的 $L(a^{(i)}, y{(i)})$、 $dw_1^{(i)}$、 $dw_2^{(i)}$ 和 $db^{(i)}$,累积到 $J$、$dw_1$、$dw_2$、$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$ 使得代价函数达到最小值。