李宏毅机器学习——Logistic回归

文章目录

    • Logistic回归
      • 分类概念
      • 概率和分类的关系
      • 后验概率
      • Step1 逻辑回归的函数集
      • Step2 定义损失函数
      • Step3 寻找最好的函数
      • 损失函数:逻辑回归为什么不使用线性回归的平方误差?
      • 判别模型 vs 生成模型
      • 生成模型的优势
      • 多类别分类
        • Softmax
        • 定义 target
      • 逻辑回归的局限
      • 特征转换
      • 级联逻辑回归模型

Logistic回归

分类概念

李宏毅机器学习——Logistic回归_第1张图片
分类要找一个 functionfunction 函数,输入对象 xx 特征, 输出是该对象属于 nn 个类别中是属于哪一个。

概率和分类的关系

下面的 Class1 和 Class2 分别表示两个盒子
李宏毅机器学习——Logistic回归_第2张图片
问题: 从两个盒子中抽一个球,抽到的是盒子1中蓝色球的概率是多少?
上述问题相当于从两个类别中抽一个 x , 抽到的是类别 1 中 x 的概率是多少。可以同等转换为:随机给出一个 x,那么它最终是属于哪一个类别?

注意:在李宏毅老师的机器学习中,我们一开始假设的 p ( c 1 ) = 2 3 , p ( c 2 ) = 1 3 p(c1) = \dfrac{2}{3},p(c2) = \dfrac{1}{3} p(c1)=32p(c2)=31,不要被盒子中球的数量所影响, p ( x ∣ c 1 ) p(x|c1) p(xc1)以及 p ( x ∣ c 2 ) p(x|c2) p(xc2)同样也是假设的

当我们知道了红色框的值的时候,当给出一个x的时候,便可以计算出他属于哪一个类型,即可以计算出 p ( c 1 ∣ x ) p(c1|x) p(c1x) p ( c 2 ∣ x ) p(c2|x) p(c2x) ,两个概率中哪一个大,就说明 x 属于哪一个类别。从训练集中估测红色方框中的值,这一套想法叫做生成模型。因为有了这个模型,就可以生成一个 x,可以计算某个 x 出现的概率,知道了 x 的分布,就可以自己产生 x。生成模型在数据集特别少,以及数据集噪音严重的情况下可以起到增加训练集的作用。

后验概率

李宏毅机器学习——Logistic回归_第3张图片
上述图片中的 P(C1|x) 称为后验概率,从上述的推导我们可以知道 Sigmoid Function如何产生的。在上面的式子中,我们使用 高斯分布 进行模型假设,在下面我们将依据高斯模型中的 μ \mu μ以及 ∑ \sum 来求解 z 的具体表示,在这里我们直接给出 z的最终形式(对推导过程感兴趣的可以去看李宏毅老师的视频,视频中有详细的推导过程):
李宏毅机器学习——Logistic回归_第4张图片
依据上述的公式,我们最后可以得知如下公式:
p ( c 1 ∣ x ) = σ ( w ∗ x + b ) p(c1|x) = \sigma\left(w * x + b\right) p(c1x)=σ(wx+b)
上述的式子也可以看出,当共用协方差矩阵 ∑ \sum 的时候为什么分界线是线性的了。

Step1 逻辑回归的函数集

李宏毅机器学习——Logistic回归_第5张图片
将函数可视化:
李宏毅机器学习——Logistic回归_第6张图片
上述函数集的分类问题叫做 Logistic Regression(逻辑回归),将逻辑回归与线性回归先进行简单的对比:
李宏毅机器学习——Logistic回归_第7张图片

Step2 定义损失函数

李宏毅机器学习——Logistic回归_第8张图片
由前面的推导我们可以得知 P(c1|x) 是 x 属于 c1 类别的概率,那么当我们有了一个训练集之后(上图所示),我们知道了对应的 x 属于 哪一个类别,当给定了一组 w 和 b 之后,我们便可以利用 P(c1|x) 来得出由公式计算出的每一个 x 属于 c1 的概率,以及 x 属于 c2 的概率(1-P(c1|x)即为c2的概率),最后我们将公式计算出来的概率进行 相乘,也就是图中的 L(w,b)。我们最终希望 L(w,b) 越大越好,因为越大说明公式计算出的类别分类越正确。

对于使得 L(w,b) 最大的 w 和 b ,记做 w* 和 b*,即:
在这里插入图片描述
将训练集数字化,并对原本的 L(w,b) 做一步转化,使其更容易计算:
李宏毅机器学习——Logistic回归_第9张图片
在上述的步骤中,我们做了这样的转化操作:
在这里插入图片描述
原因:首先 L(w,b)转化为 lnL(w,b)之后,公式的性质没有发生变化,但是这一步操作之后,就可以将 L(w,b)中的乘法转变为 lnL(w,b)中的加法,对于 lnL(w,b),我们又可以依据对训练集做的数字化处理将其转变为统一的公式,如下图所示:

李宏毅机器学习——Logistic回归_第10张图片

其次将 lnL(w,b) 前加一个负号,将原本求最大变为求最小。

最后, -lnL(w,b)改线为下图中带蓝色下划线式子的样子:

李宏毅机器学习——Logistic回归_第11张图片

图中蓝色下划线实际上代表的是两个伯努利分布(0-1分布,两点分布)的 cross entropy(交叉熵)

假设有两个分布 p 和 q,如图中蓝色方框所示,这两个分布之间交叉熵的计算方式就是 H(p,q)H(p,q);交叉熵代表的含义是这两个分布有多接近,当交叉熵越小,说明两个越接近,如果两个分布是一模一样的话,那计算出的交叉熵就是熵。

下面再进行逻辑回归和线性回归之间的比较,这次比较损失函数:
李宏毅机器学习——Logistic回归_第12张图片
对于逻辑回归的损失函数为什么不和线性回归的损失函数设置为一样的问题我们在后面进行回答。

Step3 寻找最好的函数

下面是利用梯度下降的方法求最好的函数:
李宏毅机器学习——Logistic回归_第13张图片
上述图片中只是对 w中的其中一个 wi 做递归下降分析。

要求 − l n L ( w , b ) -lnL(w,b) lnL(w,b) w i w_{i} wi的偏微分,只需要计算出 l n f w , b ( x n ) lnf_{w,b}(x^{n}) lnfw,b(xn) w i w_{i} wi 的偏微分以及 l n ( 1 − f w , b ( x n ) ) ln(1-f_{w,b}(x^{n})) ln(1fw,b(xn)) w i w_{i} wi 的偏微分。计算 l n f w , b ( x n ) lnf_{w,b}(x^{n}) lnfw,b(xn) w i w_{i} wi 的偏微分, f w , b ( x ) f_{w,b}(x) fw,b(x) 可以使用 σ ( z ) \sigma(z) σ(z) 表示,在 z 可以用 w i w_{i} wi 和 b 表示,所以利用链式法则展开。

李宏毅机器学习——Logistic回归_第14张图片

上面是利用链式法则对 l n ( 1 − f w , b ( x n ) ) ln(1-f_{w,b}(x^{n})) ln(1fw,b(xn)) 求偏微分

李宏毅机器学习——Logistic回归_第15张图片
将偏微分带入上图的公式之后,经过化简之后即可得到 − l n L ( w , b ) -lnL(w,b) lnL(w,b) w i w_{i} wi 的偏微分。计算出偏微分之后即可利用梯度下降逐步优化 w i w_{i} wi

现在 w i w_{i} wi 的更新取决于学习率 η \eta η x i n x^{n}_{i} xin以及上图中的紫色划线部分,紫色划线部分直观上看就是真正的目标 y n y^{n} yn 与function得到的结果之间的差距。

下面在对逻辑回归和线性回归做比较,如下:
李宏毅机器学习——Logistic回归_第16张图片

对于逻辑回归,target y n y^{n} yn 是0或者1,输出是介于0和1之间。而线性回归的target可以是任何实数,输出也可以是任何值。

损失函数:逻辑回归为什么不使用线性回归的平方误差?

李宏毅机器学习——Logistic回归_第17张图片
考虑上图中的平方误差形式。在step3计算出了对 w i w_{i} wi 的偏微分。假设 y n = 1 y^{n} = 1 yn=1 , 如果 f w , b ( x n ) = 1 f_{w,b}(x^{n}) = 1 fw,b(xn)=1,则表示此时由公式算出来的结果非常接近 target,会导致偏微分中第一部分为0,从而偏微分为0,此时是正确的,但是如果 f w , b ( x n ) = 0 f_{w,b}(x^{n}) = 0 fw,b(xn)=0,此时会导致第二部分为0,从而偏微分为0,此时 损失函数也会将这个作为正确的,但是事实上此时公式计算出来的数值里目标数值非常远,所以是不对的。

对于连个参数的变化,对总的损失函数作图:
李宏毅机器学习——Logistic回归_第18张图片
如果是交叉熵,距离target越远,微分值就越大,就可以做到距离target越远,更新参数越快。而平方误差在距离target很远的时候,微分值非常小,会造成移动的速度非常慢,这就是很差的效果了。

判别模型 vs 生成模型

逻辑回归的方法称为Discriminative(判别) 方法;上一篇中用高斯来描述后验概率,称为 Generative(生成) 方法。它们的函数集都是一样的:

李宏毅机器学习——Logistic回归_第19张图片
如果是逻辑回归,就可以直接用梯度下降法找出 w 和 b ;如果是概率生成模型,像上篇那样求出 μ 1 , μ 2 , ∑ − 1 \mu^{1},\mu^{2},\sum^{-1} μ1,μ21,然后可以求出 w 和 b。

但是使用逻辑回归和概率生成模型中找出来的 w 和 b 是不一样的。

李宏毅机器学习——Logistic回归_第20张图片

上图是前一篇的例子,图中画的是只考虑两个因素,如果考虑所有因素,结果是逻辑回归的效果好一些。

生成模型的优势

训练集数据量很小的情况;因为判别方法没有做任何假设,就是看着训练集来计算,训练集数量越来越大的时候,error会越小。而生成方法会自己脑补,受到数据量的影响比较小。 对于噪声数据有更好的鲁棒性(robust)。 先验和类相关的概率可以从不同的来源估计。比如语音识别,可能直观会认为现在的语音识别大都使用神经网络来进行处理,是判别方法,但事实上整个语音识别是 Generative 的方法,DNN只是其中的一块而已;因为还是需要算一个先验概率,就是某句话被说出来的概率,而估计某句话被说出来的概率不需要声音数据,只需要爬很多的句子,就能计算某句话出现的几率。

多类别分类

Softmax

假设有3个类别,每个都有自己的 w 和 b:

李宏毅机器学习——Logistic回归_第21张图片
z 1 , z 2 , z 3 z_{1},z_{2},z_{3} z1,z2,z3 放到一个叫做Softmax的方程中,Softmax做的事情就是它们进行exponential(指数化),将exponential 的结果相加,再分别用 exponential 的结果除以相加的结果。原本 z 1 , z 2 , z 3 z_{1},z_{2},z_{3} z1,z2,z3 可以是任何值,但做完Softmax之后输出会被限制住,都介于0到1之间,并且和是1。Softmax做事情就是对最大值进行强化。

输入x,属于类别1的几率是0.88,属于类别2的几率是0.12,属于类别3的几率是0。

定义 target

李宏毅机器学习——Logistic回归_第22张图片

逻辑回归的局限

李宏毅机器学习——Logistic回归_第23张图片
对于上述中的例子,逻辑回归无法正确的进行分类

李宏毅机器学习——Logistic回归_第24张图片
这里的逻辑回归所能做的分界线就是一条直线,没有办法将红蓝色用一条直线分开。

特征转换

李宏毅机器学习——Logistic回归_第25张图片

特征转换的方式很多,举例类别1转化为某个点到 (0,0)(0,0) 点的距离,类别2转化为某个点到 (1,1)(1,1) 点的距离。然后问题就转化右图,此时就可以处理了。但是实际中并不是总能轻易的找到好的特征转换的方法。

级联逻辑回归模型

李宏毅机器学习——Logistic回归_第26张图片

可以将很多的逻辑回归接到一起,就可以进行特征转换。比如上图就用两个逻辑回归 对 z 1 , z 2 z_{1},z_{2} z1,z2 进行特征转换,然后对于 x 1 ′ , x 2 ′ x_{1}^{'},x_{2}^{'} x1,x2 再使用一个逻辑回归来进行分类

对上述例子使用这种方式进行处理:
李宏毅机器学习——Logistic回归_第27张图片

李宏毅机器学习——Logistic回归_第28张图片

经过这样的转换之后,点就被处理为可以进行分类的结果。

李宏毅机器学习——Logistic回归_第29张图片
一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出也可以是其他逻辑回归的输入。把每个逻辑回归称为一个 Neuron(神经元),把这些神经元连接起来的网络,就叫做 Neural Network(神经网络)。

你可能感兴趣的:(机器学习)