Step1:Function Set
在lecture4中,我们知道我们需要找的是一个几率,如果大于0.5,就output C1,否则C2。
(w是一个vector,x也是一个vector,每个下标i代表一维)

如果用图像来表示的话就是这样子。

这就是logistics regression。
Goodness of a Function
接下来我们要决定一个function的好坏。
假设有大N个training data,这些data都是根据我们的事后概率posterior probability所产生的,那如果给我们一个w和b,我们就决定了这个posterior probability,就可以计算这个model产生这N个x的几率。那最好的参数w和b就是使L(w,b)最大化。

我们在这边做一个数学式子的转换,原来是要找一组w和b最大化L(w,b),但这件事等同于找一个w和b最小化-lnL(w,b)。

这个式子我们没法全部合起来,怎么办呢?我们做一个符号上的转换,如果某一个x属于class1,那么我们就认为它的target是1,否则是0。那么你就可以把上面的式子都写成这样。


Step2:Goodness of a Function
做了上述运算后,我们就可以把我们需要最小化的function写出来了!

蓝色划线部分其实是两个伯努利分布的cross entropy。cross entropy代表的意思是这两个分布有多接近。如果两个一模一样的话那么结果就是0。

所以有了Loss function,我们在logistics regression里我们就明白该怎么定义一个function的好坏了。只需要最小化那个cross entropy,也就是这两个伯努利分布越接近越好。
回头想想在regression里,我们需要最小化的对象很简单,就是预测值减去实际值的平方,为什么在logistics regression里面不能用同样的方法呢?(后面解释)

Step3:Find the best function
因为我们已经找到了需要最小化的对象,就可以用梯度下降法求解了。
对我们对需要最小化对function做微分。

计算上述function对wi的偏微分只需要计算蓝色划线部分的两部分偏微分就可以得出了。

对划线部分求w的偏微分,由于w受z的影响,所以由链式法则得出下列式子。


因为在z表达式中,只有一项与wi有关,所以 ∂z/∂wi = xi。

把f(x)= σ(z)带入,化简得:

第二段化简得:

整理一下后,所以最终结果:

接下来我们看一下logistics regression和linear regression在做gradient descent时参数更新的方式。

what?!它们其实是一模一样的。唯一不一样的是在logistics regression中,y^的值只有0或1,f的值只在0到1区间内,在linear regression中,y^的值和f的值可以是任意一个数字。
Logistics regression + square error
如果用均方误差的形式来表示逻辑回归的好坏可以吗?把我们的output的值减去y^的值平方当作我们的loss function,然后再用gradient descent求解。

现在问题是,当我们用这个loss function做gradient descent时候,如果你预测值非常接近真实值1,或者说等于真实值1,那么f(x) - y^ = 0,所以整个偏微分等于0,这一看其实是合理的,因为我们此时找到了局部最优解。但是如果你的预测值等于0,也就是完全不属于1类,那么这时候整个偏微分值也会是0,gradient descent不再更新,但此刻的参数w并不是最优的参数!所以不合理。

结论就是,如果用均误方差的方法来当作logistics regression的loss function的话,如果你的结果离目标很近,那么它的微分是0,这是合理的,但是如果你的结果离目标很远,它的微分也是0,显然这是不合理的。反过来举class2也就是y^=0时,也是一样的。

我们用cross entropy的方式来当作loss function的话,由上图能看出,当我们离目标很远的时候,图像很陡峭,我们在做gradient descent的时候就会下降的很快,显然这很合理,但如果用square error的方法,虽然我们离目标很远,但是微分却很小,那么下降的速度就会很慢,容易卡住。你完全不知道微分小的时候你是距离目标远还是近!
Discriminative 判别模型 vs Generative 生成模型
我们用gradient descent的方法来生成一个模型,这属于Discriminative 判别模型,而用高斯分布来描述先验概率的方法我们称之为generative 生成模型。
但是只要我们把几率模型中的covariance matrix 设成相同的话,其实两个model是一模一样的。
我们可以直接把w和b采用gradient descent的方法找出来,也可以先算出平均值μ和协方差矩阵∑,带入公式就可以得到w和b。

那么问题来了,如果我们同时采用两种方法找出w和b,那这两组w和b是相同的吗?
是不同的,如果training data相同,那么我 们的function set实际上是相同的,但我们做了不同的假设,在判别模型中,我们没有做任何假设,没有对概率分布做任何的描述,但在生成模型中,我们对training data的概率分布做了假设,例如假设是高斯分布,又或是伯努利分布等等。
那么哪一个方式找出来的参数比较好呢?

通常判别模型效果要比生成模型好!
举个例子,如果我们的训练数据集像下面这样。
由此我们可以得出以下概率:

现在我们给一个测试数据:

这个数据来自1类还是2类呢?
我们来算这个测试数据来自1类的概率,由贝叶斯公式:

最终结果小于0.5,所以判定它属于class2。对于generative来说,它不考虑数据每个dimension间的关系,它认定每个dimension都是independent产生的,之所以在class2中没有sample出x(1,1)是你sample的不够多,如果足够多,说不定也是有几率产生出来的。所以两个模型差别就在于generative会对数据做了某些假设(脑补,它想象出有x(1,1)会属于class2的)。
但是也不是所有情况下generative都要比discriminative差劲。假设现在给两个model大小不同的训练集,因为discriminative model是完全没有做任何假设的,所以它会受training data的量影响很大,如果是generative model的话,它受date量影响是小的。所以在date量较少的话,generative model是有可能赢过discriminative model的。
Multi-class Classification
只讲过程,不谈原理。
假设有三个class,每个class都有自己的w和b,接下来input一个x,得到z1,z2,z3,全部丢进softmax里,做如下运算。

如果单纯做max就是取最大值,但是softmax的意思是对最大的值做强化,大的和小的值之间的差距会变得更大。比如3和1变为20和2.7。最终x属于z1的概率就是0.88,属于z2的概率就是0.12,属于z3的概率为0。

它的loss function就是求y和y^的cross entropy。
Limitation of Logistic Regression


无论怎么调整参数也没有办法把红蓝两种颜色的点分开。
解决的方法,feature transformation。

我们把x1,x2重新定义以下,将x1定义为x到(0,0)的距离,x2定义为x到(1,1)的距离,作如下变换后我们可以发现能够用一条直线将两种颜色的点分开了。但不是每次都能找到一个合适的特征变换,所以我们希望机器能够自己去找到一个合适的feature transformation。

现在我们将三个logistic regression model连在一起,其实前两个model就是做了feature transformation的工作,后一个model做了分类的工作。
举刚才那个例子:
我们调整z1的w权重来让它的posterior probability 的output长成图上这个样子,每条等高线代表一个output,左上角output值比较大,右下角output值比较小。对z2再做调整。

有了这两个logistic regression以后,我们就可以得到另外一组feature。

所以当仅有一个logistic regression的时候我们没办法做到,但有三个以后我们就可以做到。
把这些logistic regression全部叠在一起,把每一个叫做一个neuron,这个整体就叫做neural network!就是Deep learning!
网友评论