binary classification 能将给定的样本进行分类,可是在一些场景下,我们在意的是给定样本,这个样本被断定为一个类别的概率!如果我们有了给定样本被分类为给定类别的概率分布估计,我们就能拿这个估计得来的概率分布做二元分类。所以,这个我们也称这样的问题为soft binary classification。
一、收集训练集
soft binary classification 的目标在于给定样本输出其产生不同类别的概率值。可是在实际中,搜集数据的时候,我们只能拿到样本的类别,而不知其概率。这个时候不妨想,我们所取得的结果是在其概率分布中进行的一次抽样,利用抽样结果我们来估计其生成某一类别的概率。(或是可以理解为根据抽样结果生成的0、1是实际概率分布的Noise版本)
根据分类结果,粗略的估计出label。
二、设定hypothesis set(尽可能地接近我们的target function)
通用思路,得到特征后计算加权和,记为score。score 越大,越有可能出现某一个类。但我们的目标是输出0-1之间的数值,因此需要对score进行转化,logistic 函数便能达成我们的心愿。于是一个满足要求的hypothesis set 便出现了。(linear +logistic ),我们称其为logistic regression。
三、定义损失函数(损失函数是我们的优化目标,损失函数决定学习算法)
不同的问题对应的机器学习模型各不相同,我们已经学习了linear regression、binary classification模型,这些模型中所选择的损失函数又各不相同(Ein的表达各不相同),而损失函数的选定又决定了我们的学习算法。那么我们新给出的logistic regression 所对应的损失函数是什么呢?
不管选择怎么样的损失函数,Error measure的标准总是不会变的:pick的hypothesis要最大程度地接近target function。
对于binary classification 问题(预测结果是类别),最好的hypothesis在训练集上产生的错误是最少的。对于linear regression问题(预测结果是实值),最好的g和f预测出的结果差的平方最小。而对于soft binary classification由于产生的结果代表的是出现某一类别的概率值(probablistic
),因此我们可以使用f能生成这些数据的可能性最高来表示损失函数。
总是说,target function未知,因此我们会先保证在训练集上g和f相似 。给定训练集,我们就可以表示出target function 产生这组数据集的概率,由于训练集来自target function ,因此这个概率值肯定不低。而我们要pick的hypothesis 同样产生这组样本的概率值也不能低,其实就是产生这组训练集最大可能性所对应的hypothesis。
因此我们已经找到了对于soft binary classification 问题来说的Error measure方式:利用likelihood。当hypothesis 使用logistic ,logistic对称性可以简化likelihood的表达。
将logistic function代入同时引入w
为了将Error measure表示为求和形式,取对数:
为了与我们给出的机器学习通用学习流一致(最小化Ein(w)),我们又进一步化简,最终得到logistic regression 的err表达,得到Ein(w)。
cross-entropy error含义:对于给定的数据,若是预测错了,err值很大。
四、如何求得最优的w使得Ein(w)最小 (Ein(w)模样决定了可采用的优化方法)
这里试图迁移我们学习binary classification 和linear regression的优化方法(迭代优化和梯度值为0)来解决这里的Ein的优化问题。
类比linear regression 模型,我们使用squared error来表示Ein(w),由于这个表达式convex的,所以最小的Ein(w)处的梯度值为0,因此,我们对Ein(w)求梯度使其等于0便求得了w的表达。相同的思路用在logistic regression上,我们对以cross-entropy error表达的Ein(w)求梯度(已知Ein(w)也是convex,因此存在最小值,且最小值处的梯度值为0):
看看关于Ein(w)的梯度表达,错误分类的数据的权重值更大。与linear regression 不同的是,Ein(w)的梯度中,无法直接以解析式的形式求出梯度为0时的最优w。显然,梯度为0时的w无法直接求出!很多的创新性工作利用了前人的思想,这个时候我们把目光转到PLA 上,PLA在求w的时候,利用了迭代优化的方法,每次根据错误分类的数据点来更新w,直到没有被错误分类的数据点。而在这里,我们以利用迭代法每次更新w使得Ein(w)最小。
回顾一下,PLA迭代的时候,我们是根据错误点来决定下一次的迭代方向,每次更新的步长为1,当训练集上没有错误点停止更新。
!
因此,对于迭代优化问题,我们需要确定每次更新的方向、步长、整个迭代过程何时停止。随着这些参数的确定可以组合出多种不同的迭代优化方法。现在我们想应用迭代优化的方法,不断修改w,使得Ein(w)最小。当前我们就需要解决确定长度和方向的问题!目前,我们先来假设长度为1,找到关于合适的方向保证Ein减小。
使用迭代的方法代入Ein(w),还是无法得到关于v的非线性表达。因此,我们需要对这个式子做个变形,最好是能将v提取出来!利用Taylor 展开式就可以做到!通过Taylor展开,我们在之前分析的梯度被使用到了(条条大路通罗马,虽然我们试图通过梯度为0来求最优w的心愿无法达成,但是在迭代更新的学习法中,由于使用了泰勒公式,梯度公式被再次使用)
看着上面的表达,为了使Ein(w)最小,只要使得v的方向与Ein(w)方向相反就可以了,且我们假设v是单位向量,因此我们可以得到v的表示。
在上面讨论中,为了求出方向的表达,我们假定了长度是已知的。那么长度该如何确定呢?
从上面的图可以看出,Ein(w)梯度大的时候,更新的长度也应该大,梯度小的时候,长度也应该小!步长应该和梯度的模长成正比关系,因此可以再将w的表达简化一下,最终得到如下表达。
使用Ein(w)的梯度来做w更新时的长度和方向的迭代学习方法称作梯度下降!当前的梯度决定了更新的方向和大小。总的来说,需要计算Ein(w)的梯度作为更新的方向和长度,给定固定的步长,由于我们在迭代更新的过程中,每次都有计算梯度,而我们得知在Ein(w)最小的时候的梯度值0,因此,我们结束的条件是梯度值近似为0;或可以采用迭代足够的次数。
本篇文章提出了两个新的思想,而且这两个思想都不局限于logistic regression问题的本身,在很多问题背景下,都能得到广泛应用!
第一个:如果我们求解的问题是probablistic,即p(+1|x),使用likelihood来表示Ein(w),likelihood的想法通用,具体到不同的问题,hypothesis不同,代入后将得到不同的Ein(w)表达。
第二个:最小化Ein(w)时,如果我们可以知道Ein(w)是convex,即Ein(w)最小值存在。我们可以使用iterative optimization方法来优化Ein(w)找到w,更具体来说,使用泰勒展开式来化简Ein(w)后,我们可以发现若想使得Ein(w)越来越小,只要我们每次更新w的方向为当前Ein(w)梯度的反方向,直到Ein(w)的梯度值为0或是更新了足够的次数。这也具有通用性,只要Ein(w)是convex的,我们就可以使用这种方法(GD 梯度下降法)求得Ein(w)最小时对应的w。(因此,linear regression 除了使用closed form solution ,自然也可以使用iterative optimization)
所以,我们已经学习了一个在保证Ein(w)是convex下,万能的求解w的方法,做iterative optimization,方向为Ein(w)梯度的反方向。