0%

Logistic Regression(以二分类为例)

Logistic Regression(以二分类为例)

2021/03/23

Step 1:Function Set

上节得到:

所以我们的函数集即为

此为Logistic Regression ,它与Linear Regression只相差一个 函数;Logistic Regression的输出值在0-1之间,而Linear Regression的输出值可以是任何数

Step 2:Goodness of Function

依然是最大似然估计的思想,来估计我们需要的

给定已知数据集的分类,上述函数 表示当前数据属于 的概率,$1-f$ 则表示属于 的概率(以二分类为例)那么以当前的 生成该数据集的概率为:

要找 去最大化这个概率(最大似然估计标准解法,取负对数求导)

但是上面的式子形式非常的不统一,不方便后面的表述,因此对它做一下符号化,即:

那么上面的式子可以被改写为

其实,大括号里的项就是两个伯努利分布的交叉熵(cross entropy)

假设有两个分布 p 和 q,那么他们的交叉熵定义为: ,表示的含义是这两个分布有多接近,即用来衡量两个分布的相似性。如果两个分布完全一样,结果就会是 0。

Logistic Regression: 使用交叉熵判断模型的好坏 - 先验是正态

Linear Regression: 使用误差平方(square error)判断模型好坏 - 先验是二项

Step 3:Find the best function

数学推导!!!

括号内的项表示差距越大,更新越多

但神奇的是

Logistic Regression 的更新方式:

Linear Regression 的更新方式:

其实是一模一样的,唯一不一样的是 的取值不同

为什么Logistic Regression的损失函数不用Square Error

因为 的取值限制在了0-1之间,当估计值和目标距离很远的时候,Square Error的微分值依然很小,非常平坦,更新得很慢

但Cross Entropy在距离目标较远的地方微分值很大,更新得很快

Discriminative(判别模型) v.s. Generative(生成模型)

Discriminative: Logistic Regression => 直接找 $\boldsymbol{w}$ 和 $b$

Generative: 概率模型 => 找 $\boldsymbol{\mu}^1,\boldsymbol{\mu}^2,\boldsymbol{\Sigma}^{-1}$ => 计算 $\boldsymbol{w}$ 和 $b$ (假设了数据分布,这里是高斯分布)

两种方法找出来的w和b会一样么?(不会)=> 同样的模型,不同的方法得到了不同的方程。

生成模型的优势:

  • 判别模型的准确率受训练数据量影响大,生成模型的准确率(一般来说)受训练数据量影响小。在训练数据少的情况下,通过假设数据分布提高准确率(但有时候也会适得其反)。

  • 假设数据分布的做法,使生成模型对噪声数据更鲁棒

  • 生成模型把参数分为 Priors probabilities 和 class-dependent probabilities,可以分别从不同的来源进行估计

    例如语音识别,现在一般使用神经网络实现(Discriminative),但事实上它是个Generative System,DNN只是其中的一部分。对语音识别来说,Priors probability指的是一句话被说出来的概率,这是不需要语音数据的,直接从网上爬文字数据就能计算出某句话出现的概率;class-dependent probability才同时需要语音和文字数据

Logistic Regression的限制

数据必须线性可分才能做。如果不能线性可分,解决方法:Feature Transformation 把原本线性不可分的特征向量转化为线性可分。但并不是所有时候都能知道如何找到一个好的Transformation方法,人找不到,那机器呢?

Cascading Logistic regression models

Cascading Logistic regression models

前两个logistic regression自动完成feature transformation,最后一个logistic regression完成分类

把诸多logistic regression叠加在一起,作进一步推广:

  • 某个logistic regression的输入可以是其他logistic regression的输出
  • 某个logistic regression的输出可以是其他logistic regression的输入

把每个logistic regression模块叫做一个Neuron,把由logistic regression组成的整体叫做Neural Network