李宏毅机器学习课程笔记-4.3分类模型之逻辑回归

逻辑回归

假设训练集如下,有2个类别$C_1$和$C_2$,表格中的每列为一个样本。

例如,第一列表示样本$x^1$的类别为$C_1$,所以它的标签$\hat y^1$是1。

$x^1$ $x^2$ $x^2$ $\dots$ $x^N$
$C_1$ $C_1$ $C_2$ $\dots$ $C_1$
$\hat y^1=1$ $\hat y^2=1$ $\hat y^3=0$ $\dots$ $\hat y^N=1$

模型定义

在分类(Classification)一节中,我们要找到一个模型$P_{w,b}(C_1|x)$,如果$P_{w,b}(C_1|x)\geq0.5$,则$x$属于类别$C_1$,否则属于类别$C_2$。

可知$P_{w,b}(C_1|x)=\sigma(z)$,其中$\sigma(z)=\frac{1}{1+e^{-z}}$(Sigmoid Function),$z=w\cdot x+b=\sum_{i=1}^Nw_ix_i+b$。

最终我们找到了模型$f_{w,b}(x)=\sigma(\sum_{i=1}^Nw_ix_i+b)$,这其实就是逻辑回归(Logistic Regression)

损失函数

从模型$f_{w,b}(x)=P_{w,b}(C_1|x)$中取样得到训练集的概率为:$L(w,b)=f_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))\dots f_{w,b}(x^N)$(似然函数)。

我们要求$w^,b^=arg\ max_{w,b}L(w,b)$,等同于$w^,b^=arg\ min_{w,b}-lnL(w,b)$(对数似然方程,Log-likelihood Equation)。

而$-lnL(w,b)=-lnf_{w,b}(x^1)-lnf_{w,b}(x^2)-ln(1-f_{w,b}(x^3))\dots$,其中$lnf_{w,b}(x^n)=\hat y^nlnf_{w,b}(x^n)+(1-\hat y^n)ln(1-f(x^n))$,所以$-lnL(w,b)=\sum_{n=1}^N-[\hat y^nlnf_{w,b}(x^n)+(1-\hat y^n)ln(1-f_{w,b}(x^n))]$,式中$n$用来选择某个样本。

假设有两个伯努利分布$p$和$q$,在$p$中有$p(x=1)=\hat y^n,p(x=0)=1-\hat y^n$,在$q$中有$q(x=1)=f(x^n),q(x=0)=1-f(x^n)$,则$p$和$q$的交叉熵(Cross Entropy,代表两个分布有多接近,两个分布一模一样时交叉熵为0)为$H(p,q)=-\sum_xp(x)ln(q(x))$。

所以损失函数$L(f)=\sum_{n=1}^NC(f(x^n),\hat y^n)$,其中$C(f(x^n),\hat y^n)=-[\hat y^nlnf_{w,b}(x^n)+(1-\hat y^n)ln(1-f_{w,b}(x^n))]$,即损失函数为所有样本的$f(x^n)$与$\hat y^n$的交叉熵之和,式中$n$用来选择某个样本。

梯度

$\frac{-lnL(w,b)}{\partial w_i}=\sum_{n=1}^{N}-(\hat y^n-f_{w,b}(x^n))x_i^n$(推导过程省略,具体见李宏毅机器学习视频14分56秒),其中$i$用来选择数据的某个维度,$n$用来选择某个样本,$N$为数据集中样本个数。

该式表明,预测值与label相差越大时,参数更新的步幅越大,这符合常理。

逻辑回归VS线性回归

LogisticRegressionVSLinearRegression

模型

逻辑回归模型比线性回归模型多了一个sigmoid函数;

逻辑回归输出是[0,1],而线性回归的输出是任意值。

损失函数

逻辑回归模型使用的训练集中label的值必须是0或1,而线性回归模型训练集中label的值是真实值。

图中线性回归损失函数中的$\frac{1}{2}$是为了方便求导

这里有一个问题,为什么逻辑回归模型中不使用Square Error呢?这个问题的答案见下文

梯度

逻辑回归模型和线性回归模型的梯度公式一样

为什么逻辑回归模型中不使用Square Error

LogisticRegressionWithSquareError

由上图可知,当label的值为1时,不管预测值是0还是1,梯度都为0,当label值为0时也是这样。

如下图所示,如果在逻辑回归中使用Square Error,当梯度接近0时,我们无法判断目前与最优解的距离,也就无法调节学习率;并且在大多数时候梯度都是接近0的,收敛速度会很慢。

CrossEntropyVSSquareError

判别模型VS生成模型

形式对比

逻辑回归是一个判别模型(Discriminative Model),用正态分布描述后验概率(Posterior Probability)则是生成模型(Generative Model)。

如果生成模型中共用协方差矩阵,那两个模型/函数集其实是一样的,都是$P(C_1|x)=\sigma(w\cdot x+b)$。

因为做了不同的假设,即使是使用同一个数据集、同一个模型,找到的函数是不一样的。

优劣对比

  • 如果现在数据很少,当假设了概率分布之后,就可以需要更少的数据用于训练,受数据影响较小;而判别模型就只根据数据来学习,易受数据影响,需要更多数据。
  • 当假设了概率分布之后,生成模型受数据影响较小,对噪声的鲁棒性更强。
  • 对于生成模型来讲,先验的和基于类别的概率(Priors and class-dependent probabilities),即$P(C_1)$和$P(C_2)$,可以从不同的来源估计得到。以语音识别为例,如果使用生成模型,可能并不需要声音的数据,网上的文本也可以用来估计某段文本出现的概率。

多分类(Multi-class Classification)

以3个类别$C_1$、$C_2$和$C_3$为例,分别对应参数$w^1,b_1$、$w^2,b_2$和$w^3,b_3$,即$z_1=w^1\cdot x+b_1$、$z_2=w^2\cdot x+b_2$和$z_3=w^3\cdot x+b_3$。

Multi-class Classification

Softmax

使用Softmax($y_i=\frac{e^{z_i}}{\sum_{j=1}^3e^{z_j}}$),使得$0<y_i<1$以及$\sum_{i=1}^3y_i=1$,其中$y_i=P(C_i|x)$,即一个样本$x$属于类别$C_i$的概率不超过1,属于所有类别的概率之和为1。==Softmax公式中的z是一个参数吗?怎么确定或求得?==

Softmax公式中为什么要用$e$?这是有原因/可解释的,可以看下PRML,也可以搜下最大熵。

最大熵(Maximum Entropy)其实也是一种分类器,和逻辑回归一样,只是从信息论的角度来看待。

Softmax

损失函数

计算预测值$y$和$\hat y$的交叉熵,$y$和$\hat y$都是一个向量,即$-\sum_{i=1}^3\hat y^ilny^i$。

这时需要使用one-hot编码:如果$x\in C_1$,则$y=\begin{bmatrix}1\\0\\0\end{bmatrix}$;如果$x\in C_2$,则$y=\begin{bmatrix}0\\1\\0\end{bmatrix}$;如果$x\in C_3$,则$y=\begin{bmatrix}0\\0\\1\end{bmatrix}$。

梯度

和逻辑回归的思路一样。

逻辑回归的局限

如下图所示,假如有2个类别,数据集中有4个样本,每个样本有2维特征,将这4个样本画在图上。

LimitationOfLogisticRegression1

如下图所示,假如用逻辑回归做分类,即$y=\sigma(z)=\sigma(w_1x_1+w_2x_2+b)$,我们找不到一个可以把“蓝色”样本和“红色”样本间隔开的函数。

LimitationOfLogisticRegression2

假如一定要用逻辑回归,那我们可以怎么办呢?我们可以尝试特征变换(Feature Transformation)。

特征变换(Feature Transformation)

在上面的例子中,我们并不能找到一个能将蓝色样本和红色样本间隔开的函数。

如下图所示,我们可以把原始的数据/特征转换到另外一个空间,在这个新的特征空间中,找到一个函数将“蓝色”样本和“红色”样本间隔开。

比如把原始的两维特征变换为与$\begin{bmatrix}0\\0\end{bmatrix}$和$\begin{bmatrix}1\\1\end{bmatrix}$的距离,在这个新的特征空间中,“蓝色”样本和“红色”样本是可分的。

LimitationOfLogisticRegression3

但有一个问题是,我们并不一定知道怎么进行特征变换。或者说我们想让机器自己学会特征变换,这可以通过级联逻辑回归模型实现,即把多个逻辑回归模型连接起来,如下图所示。

下图中有3个逻辑回归模型,根据颜色称它们为小蓝、小绿和小红。小蓝和小绿的作用是分别将原始的2维特征变换为新的特征$x_1’$和$x_2’$,小红的作用是在新的特征空间$\begin{bmatrix}x_1’\\x_2’\end{bmatrix}$上将样本分类。

CascadingLogisticRegressionModels

如下图所示,举一个例子。小蓝的功能是(下图左上角),离$(1,0)$越远、离$(0,1)$越近,则$x_1’$越大;小蓝的功能是(下图左下角),离$(1,0)$越远、离$(0,1)$越近,则$x_2’$越小。小蓝和小绿将特征映射到新的特征空间$\begin{bmatrix}x_1’\\x_2’\end{bmatrix}$中,结果见下图右下角,然后小红就能找到一个函数将“蓝色”样本和“红色”样本间隔开。

CascadingLogisticRegressionModels2

神经网络(Neural Network)

假如把上例中的一个逻辑回归叫做神经元(Neuron),那我们就形成了一个神经网络。


Github(github.com):@chouxianyu

Github Pages(github.io):@臭咸鱼

知乎(zhihu.com):@臭咸鱼

博客园(cnblogs.com):@臭咸鱼

B站(bilibili.com):@绝版臭咸鱼

微信公众号:@臭咸鱼

转载请注明出处,欢迎讨论和交流!