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

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

  • 分类回顾
  • 逻辑回归+均方差损失函数
  • 生成模型与判别模型
  • 多分类
  • 逻辑回归的限制
  • 总结

分类回顾

我们先回顾下前面我们讲的分类的步骤,第一步先找到一个模型集合,是个概率模型,最后可以转化为sigmoid函数,输入是一个线性函数,如果结果大于等于0.5,则认为是类1,否则是类2:
李宏毅机器学习系列-逻辑回归_第1张图片
如果画出结构图的话应该是这样,每个特征 x i x_i xi都有一个权重,然后加上偏置,输入到sigmoid函数里,得到0到1的概率值:
李宏毅机器学习系列-逻辑回归_第2张图片
第二步我们要衡量模型的好坏,我们有一组训练集:
李宏毅机器学习系列-逻辑回归_第3张图片
假设我们的数据都来自后验概率模型 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:
李宏毅机器学习系列-逻辑回归_第4张图片
求最大可以转换为求最小的负对数 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))]
比如:
李宏毅机器学习系列-逻辑回归_第5张图片
所以如果代入 y ^ = 1 或 者 0 \hat y=1 或者0 y^=10,可得原式:
李宏毅机器学习系列-逻辑回归_第6张图片
即推导出:
李宏毅机器学习系列-逻辑回归_第7张图片
最下面的式子其实就是交叉熵,信息论里的,通俗的说就是两个分布之间的差异,我们当然希望这个差异越小越好啦:
李宏毅机器学习系列-逻辑回归_第8张图片
比如下图两个二项分布,p是真实的分布,q是我们的预测模型分布,我们希望这两个分布越近越好,如果交叉熵为0,,那我们的模型的分布就等同于真实分布了:
李宏毅机器学习系列-逻辑回归_第9张图片
接下来我们要用算法找出最好的模型,当然是用梯度下降法啦,先看看 σ ( z ) \sigma(z) σ(z)的相关图像,
李宏毅机器学习系列-逻辑回归_第10张图片
因为:
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
则(手打公式太累,我只能截图了,其实一样的):
在这里插入图片描述
在这里插入图片描述

李宏毅机器学习系列-逻辑回归_第11张图片
更新参数为:
李宏毅机器学习系列-逻辑回归_第12张图片
可见真是和预测之间的差距越大,更新幅度也越大。

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

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

生成模型与判别模型

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

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

多分类

拿三分类的情况来说,每个类别都有自己的参数:
李宏毅机器学习系列-逻辑回归_第27张图片
我们把他们放进softmax:
李宏毅机器学习系列-逻辑回归_第28张图片
可以看到,这样的输出就被压缩到0到1,而且都是正的,因为取了e,这样大的值会被放大法,小的值更小,做了概率的强化。

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

逻辑回归的限制

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

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

李宏毅机器学习系列-逻辑回归_第34张图片
以上这种多个逻辑回归单元所组成的就是神经网络:
李宏毅机器学习系列-逻辑回归_第35张图片

总结

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

你可能感兴趣的:(机器学习,李宏毅机器学习,深度学习,李宏毅机器学习系列-逻辑回归,逻辑回归,机器学习,深度学习,多分类)