逻辑回归-偏导公式推导(gpt-o1)

300次阅读
没有评论

1. 问题背景

在逻辑回归中,我们预测输入 $\mathbf{x}^{(i)}$ 的输出为 $y^{(i)} \in {0, 1}$,模型定义如下:

  1. 模型函数: $$
    f_{\mathbf{w}, b}(\mathbf{x}^{(i)}) = g(z^{(i)}) \tag{3}
    $$
  2. 线性组合: $$
    z^{(i)} = \mathbf{w} \cdot \mathbf{x}^{(i)} + b \tag{4}
    $$
  3. Sigmoid 函数: $$
    g(z^{(i)}) = \frac{1}{1 + e^{-z^{(i)}}} \tag{5}
    $$

2. 损失函数

我们采用逻辑回归的对数似然损失函数(交叉熵损失):

$$
J(\mathbf{w}, b) = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} \log(f_{\mathbf{w}, b}(\mathbf{x}^{(i)})) + (1 – y^{(i)}) \log(1 – f_{\mathbf{w}, b}(\mathbf{x}^{(i)})) \right]
$$

其中,$m$ 是样本数量。

3. 目标

求损失函数 $J(\mathbf{w}, b)$ 对参数 $\mathbf{w}$ 和 $b$ 的偏导数,即计算 $\frac{\partial J}{\partial w_j}$ 和 $\frac{\partial J}{\partial b}$。


4. 推导步骤

(a)对 $w_j$ 求偏导数

首先,计算损失函数对 $w_j$ 的偏导数:

$$
\frac{\partial J}{\partial w_j} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} \frac{\partial}{\partial w_j} \log(f^{(i)}) + (1 – y^{(i)}) \frac{\partial}{\partial w_j} \log(1 – f^{(i)}) \right] \tag{6}
$$

其中,$f^{(i)} = f_{\mathbf{w}, b}(\mathbf{x}^{(i)})$。

(b)计算 $\log(f^{(i)})$ 和 $\log(1 – f^{(i)})$ 的偏导数

首先,我们需要计算 $f^{(i)}$ 对 $w_j$ 的偏导数。

  1. 计算 $f^{(i)}$ 对 $z^{(i)}$ 的偏导数: $$
    \frac{\partial f^{(i)}}{\partial z^{(i)}} = g'(z^{(i)}) = f^{(i)} (1 – f^{(i)}) \tag{7}
    $$
  2. 计算 $z^{(i)}$ 对 $w_j$ 的偏导数: $$
    \frac{\partial z^{(i)}}{\partial w_j} = x_j^{(i)} \tag{8}
    $$
  3. 应用链式法则计算 $f^{(i)}$ 对 $w_j$ 的偏导数: $$
    \frac{\partial f^{(i)}}{\partial w_j} = \frac{\partial f^{(i)}}{\partial z^{(i)}} \cdot \frac{\partial z^{(i)}}{\partial w_j} = f^{(i)} (1 – f^{(i)}) x_j^{(i)} \tag{9}
    $$
  4. 计算 $\log(f^{(i)})$ 对 $w_j$ 的偏导数: $$
    \frac{\partial}{\partial w_j} \log(f^{(i)}) = \frac{1}{f^{(i)}} \cdot \frac{\partial f^{(i)}}{\partial w_j} = \frac{f^{(i)} (1 – f^{(i)}) x_j^{(i)}}{f^{(i)}} = (1 – f^{(i)}) x_j^{(i)} \tag{10}
    $$
  5. 计算 $\log(1 – f^{(i)})$ 对 $w_j$ 的偏导数: $$
    \frac{\partial}{\partial w_j} \log(1 – f^{(i)}) = \frac{1}{1 – f^{(i)}} \cdot \left(-\frac{\partial f^{(i)}}{\partial w_j} \right) = -\frac{f^{(i)} (1 – f^{(i)}) x_j^{(i)}}{1 – f^{(i)}} = -f^{(i)} x_j^{(i)} \tag{11}
    $$

(c)代入偏导数回到损失函数的偏导

将 (10) 和 (11) 代入 (6) 式:\begin{equation}
\frac{\partial J}{\partial w_j} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} (1 – f^{(i)}) x_j^{(i)} – (1 – y^{(i)}) f^{(i)} x_j^{(i)} \right] \tag{12}
\end{equation}

\begin{equation}
\frac{\partial J}{\partial w_j} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} x_j^{(i)} – y^{(i)} f^{(i)} x_j^{(i)} – f^{(i)} x_j^{(i)} + y^{(i)} f^{(i)} x_j^{(i)} \right] \tag{13}
\end{equation}

\begin{equation}
\frac{\partial J}{\partial w_j} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} x_j^{(i)} – f^{(i)} x_j^{(i)} \right] \tag{14}
\end{equation}

\begin{equation}
\frac{\partial J}{\partial w_j} = \frac{1}{m} \sum_{i=1}^{m} \left[f^{(i)} – y^{(i)} \right] x_j^{(i)} \tag{15}
\end{equation}

解释:

  • 在 (13) 式中,$- y^{(i)} f^{(i)} x_j^{(i)}$ 和 $+ y^{(i)} f^{(i)} x_j^{(i)}$ 相互抵消。
  • 在 (14) 式中,合并同类项得到 $y^{(i)} x_j^{(i)} – f^{(i)} x_j^{(i)}$。
  • 在 (15) 式中,改变符号并调整顺序。

(d)对 $b$ 求偏导数

类似地,计算损失函数对 $b$ 的偏导数:

  1. 计算 $f^{(i)}$ 对 $b$ 的偏导数: $$
    \frac{\partial z^{(i)}}{\partial b} = 1 \tag{16}
    $$ $$
    \frac{\partial f^{(i)}}{\partial b} = \frac{\partial f^{(i)}}{\partial z^{(i)}} \cdot \frac{\partial z^{(i)}}{\partial b} = f^{(i)} (1 – f^{(i)}) \tag{17}
    $$
  2. 计算 $\log(f^{(i)})$ 和 $\log(1 – f^{(i)})$ 对 $b$ 的偏导数:
  • 对于 $\log(f^{(i)})$:$$
    \frac{\partial}{\partial b} \log(f^{(i)}) = \frac{1}{f^{(i)}} \cdot \frac{\partial f^{(i)}}{\partial b} = (1 – f^{(i)}) \tag{18}
    $$
  • 对于 $\log(1 – f^{(i)})$:$$
    \frac{\partial}{\partial b} \log(1 – f^{(i)}) = -\frac{f^{(i)}}{1 – f^{(i)}} \tag{19}
    $$
  1. 代入损失函数的偏导数: $$
    \frac{\partial J}{\partial b} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} (1 – f^{(i)}) – (1 – y^{(i)}) f^{(i)} \right] \tag{20}
    $$
  2. 化简偏导数表达式: $$\frac{\partial J}{\partial b} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} – y^{(i)} f^{(i)} – f^{(i)} + y^{(i)} f^{(i)} \right] \tag{21}$$
  3. $$\frac{\partial J}{\partial b} = -\frac{1}{m} \sum_{i=1}^{m} \left[y^{(i)} – f^{(i)} \right] \tag{22}$$
  4. $$\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} \left[f^{(i)} – y^{(i)} \right] \tag{23}$$

5. 最终结果

(a)参数 $\mathbf{w}$ 的梯度:

$$
\frac{\partial J}{\partial w_j} = \frac{1}{m} \sum_{i=1}^{m} \left[f_{\mathbf{w}, b}(\mathbf{x}^{(i)}) – y^{(i)} \right] x_j^{(i)} \tag{24}
$$

(b)偏置 $b$ 的梯度:

$$
\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} \left[f_{\mathbf{w}, b}(\mathbf{x}^{(i)}) – y^{(i)} \right] \tag{25}
$$


6. 总结

通过以上推导,我们得到了逻辑回归损失函数对参数 $\mathbf{w}$ 和 $b$ 的偏导数表达式。这些梯度用于更新参数,以最小化损失函数:

  • 更新规则(梯度下降法): $$
    w_j := w_j – \alpha \frac{\partial J}{\partial w_j}
    $$ $$
    b := b – \alpha \frac{\partial J}{\partial b}
    $$ 其中,$\alpha$ 是学习率。

7. 注释

  • 直观理解: 梯度的形式表明,每个参数的更新取决于预测值与实际值的差异 $(f^{(i)} – y^{(i)})$,以及对应的输入特征 $x_j^{(i)}$。
  • 向量化表示: 可以将梯度表示为向量形式,方便计算:
  • 对于 $\mathbf{w}$:$$
    \nabla_{\mathbf{w}} J = \frac{1}{m} \mathbf{X}^\top (\mathbf{f} – \mathbf{y})
    $$ 其中,$\mathbf{X}$ 是输入数据矩阵,$\mathbf{f}$ 是预测值向量,$\mathbf{y}$ 是实际标签向量。
  • 对于 $b$:$$
    \frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} – y^{(i)})
    $$
正文完
 0
评论(没有评论)