我们将上堂课最后的内容回顾下,我们利用线性模型z=wx+b带入sigmoid函数后就得到了概率
如果x是个维的特征向量,就有如图所示的输出,z少写了个+b
我们比较逻辑回归和线性回归
第一处区别是,逻辑回归的输出经过sigmoid函数,其输出是介于0,1之间的,而线性回归是正负无穷间的任何值
假设我们有N个样本,2分类每个样本的实际分类分别为C1,C2,根据训练集生成的概率模型,给定w,b取N组数据生成训练集数据的概率是图中的式子,使L(w,b)取最大的w,b我们记为
我们可以目标值是C1定义为1,C2定义为0,当然图中错了,应该是1,1,0而不是1,0,1,我们对上图l(w,b)求最大值就变成了-lnL(w,b)的最小值,因为L(w,b)是乘积,就可以左下展开,我们带入后就可以得出每项是右下的式子
由于目标值已知,带入0,1可以消去一些无用项
我们求-lnL(w,b)就有了如图中的通项和,其内涵实际是伯努利分布(二分类)的交叉熵
第二处区别:
所以逻辑回归的损失函数就是交叉熵求和,当0,1分布(目标值)和概率模型接近时,使得损失函数最小,
而线性回归的损失函数是误差平方和
有人就会想问了,我们把逻辑回归能不能也按误差平方和来算损失函数呢
我们如何为了求-lnL(w,b)的最小,可以使用梯度下降来求解,这里先求出对w的偏微分,图中的图是即sigmoid(z)的微分和本身的示意图,
求导就是
,算式右侧加号左边的偏微分可以求出即
同理,将右侧求偏微分带入后,可得出图中结果,因此我们更新wi就收到3个影响,1是学习率,2是样本第i个参数,第三个是样本目标值和概率结果的差值,我们也能看出差别越大,我们的更新就越大
我们比较第三个区别
其实线性回归和逻辑回归他们的权重更新的式子是一样的,但是区别就在于,目标值逻辑回归就是0,1,而线性回归是任意值,而逻辑回归f(w,b)是0,1之间的值,线性回归也是任意值
我们之前问过能不能用方差做逻辑回归的损失函数,我们这里就验证下,经过一番推导,我们得出式子,样本是1,如果函数生成1,此时函数的微分是0,看起来好像很不错,可是当f是0时(离目标较远),也会微分是0
我们把损失函数用交叉熵和误差平方和可以得到如下立体图形,可以看到平方和在目标值处和离目标值较远的点都比较小,而且平方和梯度比较小,步进很慢。也有人说我们可以把梯度小的时候设计得学习率大啊,可是当梯度小的时候也可能离目标点比较近,我们采用大的学习率是不行的。
所以使用交叉熵作为逻辑回归的损失函数会好很多
Discriminative and Generative 可判别的和可生成的
我们用逻辑回归生成概率模型的方式叫做可判别的,我们再之前使用某种几率模型(如高斯分布)叫做可生成的
两个模型都是使用的相同的概率公式,前者是用梯度下降求得w,b,后者使用公式求出w,b。我们会有疑问,两个方法得出的w,b会是一样的么,因为前者并没有使用任何假设,而后者假设其是正态(也可以考虑伯努利分布等其他概率分布模型)分布的
我们采用2种模型分别进行了水系和一般系宝可梦的分类,从图上大致看不太出来区别,但是当我们考虑了7个特征后,generative的概率73%,discrimitive的概率79%,后者看着似乎更好一点
为了更好地理解上述,我们举个例子,一共13个数据,1个1类,12个2类,每个样本有2个特征,每个特征取值分别可能为0,1,那问题来了,如果有一个样本2个特征都是1,你会判断他是哪个类别呢?会是常识判断过去的1吗?
我们用朴素贝叶斯计算下
第一个分类的概率为1/13,第二个为12/13,第一类前提下第一个特征为1的概率为1,第一类前提下第二个特征为1的概率也为1,第二类前提下第一个特征为1的概率为1/3,第二类前提下第二个特征为1的概率为1/3(图中C2写成C1了)
我们根据公式带入可求出2个特征都是1的情况下,是第一类的概率结果比0.5小,这就是意味着2个特征都是1的是C2的概率比C1大,我们以概率分布generative来考虑,就是我们有可能有这样的样本,不过是样本量不够大,没出现这样的样本而已。
大多数情况下,discriminative model是比generatvie model好的,但也不是绝对,下面我们分析下generative model的优点:
1假设分布模型的时候,我们可以使用很少的样本数据量
2我们受噪声影响的比较小
3可以从不同的源评估优先可能性(这里感觉老师没有讲的很清楚)
多分类
多分类和2分类很类似,我们也是找到w,b,对于每个分类,分别求得z1,z2,z3将其e指数化,以图中为例,在除以所有的加和,就得到介于0,1的新概率,而且他们之间的加和是为1的,这种方法叫做softmax,为什么叫做softmax,这是因为我们会对不同的值做强化(大小值之间分的更开,有利于分类),使其成e的指数级变化。
以3分类为例,我们的目标值向量可能分别是1,0,0 0,1,0 0,0,1三种,我们还是采用交叉熵来做损失函数,因为交叉熵最小的过程就是使概率逼近目标值的过程。
逻辑回顾的限制
以一个2分类为例,输入权重w1,w2我们有如下样本(0,1)(1,0)为1类,(0,0),(1,1)为2类,而根据逻辑回归我们要找到一条直线,无法用一条直线有效的实现分类
我们可以尝试对特征进行处理,比如生成新的特征向量,x1'为到0,0的距离,x2'为到1,1的距离,我们处理后,之前0,1和1,0就变成了1,1点重合到一起,而之前的0,0变成了0,, 原来1,1变成了
,0,我们就可以找到一条直线作为边界了,当然图中左下一个(0,1)应该为(1,0),但是麻烦的问题是我们不知道怎么这么变换,我们希望程序自动化实现,如果有一个逻辑回归可能实现不了分割,但是有多个逻辑回归就可能实现。
我们的一个逻辑回归,他的输入可以是其他逻辑回归的输出,他的输出也可以是其他逻辑回归的输入,这样的一个逻辑回归单元,我们叫做Neuron(神经元),所有神经元组成的叫做Neuron Network(神经网络,简写NN)
哇,好高大上啊,我们就要进入深度学习的范畴啦