李宏毅机器学习系列-逻辑回归

分类回顾

我们先回顾下前面我们讲的分类的步骤,第一步先找到一个模型集合,是个概率模型,最后可以转化为sigmoid函数,输入是一个线性函数,如果结果大于等于0.5,则认为是类1,否则是类2:
在这里插入图片描述
如果画出结构图的话应该是这样,每个特征 x i x_i xi都有一个权重,然后加上偏置,输入到sigmoid函数里,得到0到1的概率值:
在这里插入图片描述
第二步我们要衡量模型的好坏,我们有一组训练集:
在这里插入图片描述
假设我们的数据都来自后验概率模型 P w , b ( C 1 ∣ X ) P_{w,b}(C_1|X) Pw,b(C1X)生成的,记做 f w , b ( x ) f_{w,b}(x) fw,b(x)
在这里插入图片描述
那怎么样的后验模型能生成这样的数据呢,也即每一个样本来自这个模型的概率乘积最大,这里假设我们的样本是独立同分布的,因此有得到:
在这里插入图片描述
所以我们要找到一组参数 w ∗ , b ∗ w^*,b^* w,b可以使得 L ( w , b ) L(w,b) L(w,b)的值最大,即:
在这里插入图片描述
我们先讲类别1设定为1,类别2为0:
在这里插入图片描述
求最大可以转换为求最小的负对数 L ( w , b ) L(w,b) L(w,b),取对数对函数增减性没影响,可以把乘法转换为加法,即:
在这里插入图片描述
所以 − l n L ( w , b ) -lnL(w,b) lnL(w,b)乘积形式就可以转化为每一个相加的形式:
− l n L ( w , b ) = − l n f w , b ( x 1 ) f w , b ( x 2 ) ( 1 − f w , b ( x 3 ) ) . . . -lnL(w,b)=-lnf_{w,b}(x^1)f_{w,b}(x^2)(1-f_{w,b}(x^3))... lnL(w,b)=lnfw,b(x1)fw,b(x2)(1fw,b(x3))...
对数相乘可以变相加:
= − l n f w , b ( x 1 ) − l n f w , b ( x 2 ) − l n ( 1 − f w , b ( x 3 ) ) . . . =-lnf_{w,b}(x^1)-lnf_{w,b}(x^2)-ln(1-f_{w,b}(x^3))... =lnfw,b(x1)lnfw,b(x2)ln(1fw,b(x3))...
然后因为是二分类 y ^ = 1 或 者 0 \hat y=1 或者0 y^=10,把 − l n f w , b ( x i ) -lnf_{w,b}(x^i) lnfw,b(xi)即做 − l n f ( x i ) -lnf(x^i) lnf(xi),每一项都可以看做:
− [ y ^ l n f ( x i ) + ( 1 − y ^ ) l n ( 1 − f ( x i ) ) ] -[\hat ylnf(x^i)+(1-\hat y)ln(1-f(x^i))] [y^lnf(xi)+(1y^)ln(1f(xi))]
比如:
在这里插入图片描述
所以如果代入 y ^ = 1 或 者 0 \hat y=1 或者0 y^=10,可得原式:
在这里插入图片描述
即推导出:
在这里插入图片描述
最下面的式子其实就是交叉熵,信息论里的,通俗的说就是两个分布之间的差异,我们当然希望这个差异越小越好啦:
在这里插入图片描述
比如下图两个二项分布,p是真实的分布,q是我们的预测模型分布,我们希望这两个分布越近越好,如果交叉熵为0,,那我们的模型的分布就等同于真实分布了:
在这里插入图片描述
接下来我们要用算法找出最好的模型,当然是用梯度下降法啦,先看看 σ ( z ) \sigma(z) σ(z)的相关图像,
在这里插入图片描述
因为:
z = w ⋅ x + b z=w \cdot x+b z=wx+b
σ ( z ) = 1 1 + e ( − z ) \sigma(z)=\frac{1}{1+e^{(-z)}} σ(z)=1+e(z)1
f w , b ( x ) = 1 1 + e ( − z ) f_{w,b}(x)=\frac{1}{1+e^{(-z)}} fw,b(x)=1+e(z)1
所以:
∂ l n σ ( z ) ∂ z = 1 σ ( z ) ∂ σ ( z ) ∂ z = 1 σ ( z ) σ ( z ) ( 1 − σ ( z ) ) = 1 − σ ( z ) = ∂ l n f w , b ( x ) ∂ z \frac{\partial ln\sigma(z)}{\partial z}=\frac{1}{\sigma(z)}\frac{\partial \sigma(z)}{\partial z}=\frac{1}{\sigma(z)}\sigma(z)(1-\sigma(z))=1-\sigma(z)=\frac{\partial lnf_{w,b}(x)}{\partial z} zlnσ(z)=σ(z)1zσ(z)=σ(z)1σ(z)(1σ(z))=1σ(z)=zlnfw,b(x)
∂ z ∂ w i = x i \frac{\partial z}{\partial w_i}=x_i wiz=xi
∂ l n f w , b ( x ) ∂ w i = ∂ l n f w , b ( x ) ∂ z ∂ z ∂ w i = ( 1 − σ ( z ) ) x i \frac{\partial lnf_{w,b}(x)}{\partial w_i}=\frac{\partial lnf_{w,b}(x)}{\partial z}\frac{\partial z}{\partial w_i}=(1-\sigma(z))x_i wilnfw,b(x)=zlnfw,b(x)wiz=(1σ(z))xi
同理可得:
∂ l n ( 1 − f w , b ( x ) ) ∂ w i = − σ ( z ) x i \frac{\partial ln(1-f_{w,b}(x))}{\partial w_i}=-\sigma(z)x_i wiln(1fw,b(x))=σ(z)xi
则(手打公式太累,我只能截图了,其实一样的):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
更新参数为:
在这里插入图片描述
可见真是和预测之间的差距越大,更新幅度也越大。

逻辑回归+均方差损失函数

那为什么要用交叉熵损失函数,换做均方差呢,这个求导比较容易,我就不用公式推了:
在这里插入图片描述
这样貌似没什么问题,但是你会发现:
在这里插入图片描述
也就是说, y ^ = 1 \hat y=1 y^=1的时候,我预测为,1,我们离目标很近,导数是0,这是对的,但是另外一种情况,我们预测为0,应该离目标很远,按道理应该有比较大的导数,居然也是0,所以比较迷惑。
同理还有:
在这里插入图片描述
所以均方差损失函数貌似对分类不合适,我们来看看他们的损失函数的三维图,可以看到均方差在离最低点的很远的时候有平坦的地方,导数可能为0,而交叉熵没有,交叉熵越远,导数越大,更新幅度越大:
在这里插入图片描述
我们来看看逻辑回归和线性回归的区别,他们的目标输出不同,损失函数也不同,但是他们的参数更新的形式是一样的,只是紫色部分的值不一样,一个是0到1,一个是任意数:
在这里插入图片描述

生成模型与判别模型

用逻辑回归的方法生成的模型我们叫做判别模型,前面用高斯分布来拟合的模型叫做生成模型,我们来看他们的却区别,模型都是一样的,只是一个是直接求得w,b,一个是用高斯分布来求得,但是这两个参数是不一样的,虽然我们训练集一样,但是因为在生成模型里,我们添加了很多的假设条件,假设符合高斯分布,假设朴素贝叶斯:
在这里插入图片描述

我们来看两个的分类结果比较。只考虑两个特征,好像差不多:
在这里插入图片描述
但是考虑到多个特征的话,判别模型貌似效果好一点:
在这里插入图片描述
那为什么会这样呢,我们举个例子:
我们给一组这样的训练集,每个样本有两个特征,每个样本都分为两类,Class1,或者Class2,总共有1+4+4+4=13个样本:
在这里插入图片描述
那如果来了个测试集是这样的,你觉得是应该是哪一类呢,人类一看很显然,应该是Class1啦:
在这里插入图片描述
那我们用朴素贝叶斯来考虑呢,假设特征之间是相互独立的:
在这里插入图片描述
于是我们得到:
在这里插入图片描述
根据公式:
在这里插入图片描述
代入得:
在这里插入图片描述
居然是Class2的,是不是觉得很不可思议,因为生产模型有某种假设,所以他会进行脑补,可以推测出这样的样本也会是Class2的。脑补到底好不好呢,要看数据的多少来说,人们通常认为判别模型是更好的,因为判别模型完全取决于数据,没有任何假设,只要数据够多,效果就越好,但是如果数据少呢,生成模型可能会比较好点,他对噪音数据也有比较好的鲁棒性,通过假设,可以把一些噪音给忽略掉,还有先验概率和类依赖概率可以从不同的来源估计,比如语音识别,其实他是个生成模型,判别模型只是一部分,还有有部分是一个先验概率,就是说出某句话的概率,是从很多语句里面统计出来的概率:
在这里插入图片描述

多分类

拿三分类的情况来说,每个类别都有自己的参数:
在这里插入图片描述
我们把他们放进softmax:
在这里插入图片描述
可以看到,这样的输出就被压缩到0到1,而且都是正的,因为取了e,这样大的值会被放大法,小的值更小,做了概率的强化。

那输出的y可以看成是一个概率分布,我们的真值也是一个概率分布,我们要做的就是让他们的概率分布越小越好,于是可以用到交叉熵,即两个分布的差异:
在这里插入图片描述
我们还对三个类别做出了假设,用one-hot编码,这样的编码是线性无关的,没什么联系:
在这里插入图片描述
这个多分类的交叉熵是怎么来的呢,其实是极大似然估计转换得到的,很直觉的也可以理解为极大似然估计就是要找到最像真实分布的预测分布,也就是希望预测分布和真实分布差异小,也就是交叉熵越小越好,就等价于优化交叉熵了。

逻辑回归的限制

假设我们要用逻辑回归来分下面的例子,样本在四个对角线上,没办法用直线去把红色和蓝色的分开:
在这里插入图片描述
如果还是要用逻辑回归的话,这个时候就可以用到特征空间的转换,也就是把坐标转换到可以线性可分的坐标下,比如下面的从 x 1 到 x 1 ′ , x 2 到 x 2 ′ x_1到x_1^{'},x_2到x_2^{'} x1x1,x2x2,刚好红线可以分割:
在这里插入图片描述
但是很多时候我们是不知道要怎么要转换的,我们希望机器可以自己学着去转换,我们可以把很多个逻辑回归组合起来,也就是一个逻辑回归的输出当成转换后的一个坐标,因此上面的例子我们可以用两个逻辑回归的,刚好转换到两个新坐标上,然后再接一个逻辑回归来进行线性分类:
在这里插入图片描述

比如刚才的例子,我们可以让原来的坐标转换到新的坐标下,且线性可能:

在这里插入图片描述
以上这种多个逻辑回归单元所组成的就是神经网络:
在这里插入图片描述

总结

本篇主要介绍了逻辑回归,为什么要交叉熵损失,判别模型和生成模型的特点,逻辑回归的限制,以及引出了神经网络,思维导图:
在这里插入图片描述
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值