二元分类

y只有0,1两种取值。

例如,如果我们尝试建立一个电子邮件垃圾邮件分类器,那么 x(i) 可能是邮件的一些特征,y 如果是垃圾邮件则为 1,否则为 0。0 也被称为 负类(negative class) ,1 被称为 正类(positive class) ,它们有时也用符号 “-” 和 “+” 表示。给定 x(i),相应的 y(i) 也被称为训练样本的 标签(label)

逻辑回归 (Logistic Regression)

假设函数hθ(x)

$$ h_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} $$

其中

$$ g(z) = \frac{1}{1 + e^{-z}} $$

被称为逻辑函数(logistic function)或 Sigmoid 函数。

Sigmoid 函数具有如下性质:当 z → ∞ 时,g(z) → 1;当 z → −∞ 时,g(z) → 0。因此 h(x) 始终被限制在 0 和 1 之间。

梯度上升法

我们假设:

P(y = 1|x; θ) = hθ(x)

P(y = 0|x; θ) = 1 − hθ(x)

合二为一

p(y|x; θ) = (hθ(x))y(1 − hθ(x))1 − y

当我们拥有 n 个独立同分布(IID)的训练样本时,我们要计算观察到这一组数据的总概率。有了这个统一公式,似然函数 L(θ) 就可以简单地写成所有样本概率的乘积:

$$ L(\theta) = \prod_{i=1}^n p(y^{(i)} | x^{(i)}; \theta) = \prod_{i=1}^n (h_\theta(x^{(i)}))^{y^{(i)}} (1 - h_\theta(x^{(i)}))^{1-y^{(i)}} $$

利用对数似然函数 (θ) 并对其求导,

$$ \ell(\theta) = \log L(\theta) = \sum_{i=1}^n \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1 - y^{(i)}) \log (1 - h_\theta(x^{(i)})) \right] $$

$$ \frac{\partial}{\partial \theta_j} \ell(\theta) = \left( \frac{y}{g(\theta^T x)} - \frac{1-y}{1 - g(\theta^T x)} \right) \cdot \frac{\partial}{\partial \theta_j} g(\theta^T x) $$

hθ(x) = g(θTx)

因为g(z) = g(z)(1 − g(z))

所以可求得

$$ \frac{\partial}{\partial \theta_j} g(\theta^T x) = g(\theta^T x)(1 - g(\theta^T x)) \cdot \frac{\partial}{\partial \theta_j} (\theta^T x) $$

由于 θTx = θ0x0 + θ1x1 + … + θjxj + …,所以 $\frac{\partial}{\partial \theta_j} (\theta^T x) = x_j$

将上述性质带入公式中:

$$ \frac{\partial}{\partial \theta_j} \ell(\theta) = \left( \frac{y}{g(\theta^T x)} - \frac{1-y}{1 - g(\theta^T x)} \right) \cdot g(\theta^T x)(1 - g(\theta^T x)) \cdot x_j $$

现在将 g(θTx)(1 − g(θTx)) 乘入括号内:

  • 第一项: $\frac{y}{g(\theta^T x)} \cdot g(\theta^T x)(1 - g(\theta^T x)) = y(1 - g(\theta^T x))$
  • 第二项: $\frac{1-y}{1 - g(\theta^T x)} \cdot g(\theta^T x)(1 - g(\theta^T x)) = (1 - y)g(\theta^T x)$

公式变为:

 = [y(1 − g(θTx)) − (1 − y)g(θTx)]xj

展开括号:

 = [y − y ⋅ g(θTx) − g(θTx) + y ⋅ g(θTx)]xj

注意中间的 y ⋅ g(θTx) 项互相抵消了,剩下:

 = (y − g(θTx))xj

因为 hθ(x) = g(θTx),所以最终结果为:

$$ \frac{\partial}{\partial \theta_j} \ell(\theta) = (y - h_\theta(x)) x_j $$

我们得到更新规则(梯度上升,因为这个是要最大化似然函数):

θj := θj + α(y(i) − hθ(x(i)))xj(i)

虽然这个形式与线性回归的 LMS 规则完全一样,但它是一个不同的算法,因为这里的 hθ(x) 是非线性的。

感知器学习算法 (Perceptron Learning Algorithm)

如果我们强迫 g(z) 输出精确的 0 或 1,即使用阈值函数:

z ≥ 0g(z) = 1,当 z < 0g(z) = 0

使用同样的更新规则,我们就得到了感知器算法。它在历史上被认为是神经元的粗糙模型,但它不像逻辑回归那样具有明确的概率解释。

牛顿法 (Newton’s Method)

假设我们有一个函数 f : ℝ → ℝ,希望找到一个 θ 值使得 f(θ) = 0。这里 θ ∈ ℝ 是一个实数

牛顿法执行如下更新:

$$ \theta := \theta - \frac{f(\theta)}{f'(\theta)} $$

以下是牛顿法运行过程的图示: 在左图中,我们看到了函数 f 以及直线 y = 0。我们试图找到使 f(θ) = 0θ;实现这一目标的 θ 值约为 1.3。假设我们以 θ = 4.5 初始化算法。牛顿法随后在 θ = 4.5 处拟合一条与 f 相切的直线,并解出该直线为 0 的位置(中图)。这给出了我们的下一个猜测值 θ ≈ 2.8。右图显示了再运行一次迭代的结果,将 θ 更新为约 1.8。经过几次迭代后,我们迅速接近 θ = 1.3

1768898487784

而对于我们现在的逻辑回归问题就是要寻找似然函数的一阶导数为0的θ,

通过令 f(θ) = (θ),我们可以使用同样的算法来极大化 ,从而得到更新规则:

$$ \theta := \theta - \frac{\ell'(\theta)}{\ell''(\theta)} $$

最后,在我们的逻辑回归设定中,θ 是向量值的,因此我们需要将牛顿法推广到这种设定下。牛顿法在多维设定下的推广(也称为 Newton-Raphson 方法)由下式给出:

θ := θ − H−1θ(θ)

这里,θ(θ) 是一如既往的 (θ)θi 的偏导数向量;而 H 是一个 d × d 的矩阵(实际上,如果包含截距项,则是 (d + 1) × (d + 1)),称为 海森矩阵(Hessian),其元素由下式给出:

$$ H_{ij} = \frac{\partial^2 \ell(\theta)}{\partial \theta_i \partial \theta_j} $$

牛顿法通常比(批量)梯度下降具有 更快的收敛速度 ,并且只需要极少的迭代次数就能非常接近最小值。

然而,牛顿法的一次迭代可能比梯度下降的一次迭代更昂贵,因为它需要计算并求逆一个 d × d 的海森矩阵;但只要特征维度 d 不是太大,它通常总体上要快得多。当牛顿法被用于极大化逻辑回归的对数似然函数 (θ) 时,得到的方法也被称为 Fisher 得分法(Fisher scoring)