目录
二、从回归到线性分类模型:分类
1.分类模型
(1)回归变化到分类
线性分类问题本质上是对回归问题的延申。在处理某些现实问题的时候,对于问题的预测值域空间(也是模型的输出值范围空间)往往有所限制,如判断一个邮件是否为垃圾邮件,模型的输出不再是一个在实数范围的任意值,而是一个可以区分的两个不同的特定数。通常设为{0,1},0代表不是垃圾邮件,1代表垃圾邮件。
对于上述例子这种二分类任务来说,期望的输出值是离散的标签,如 {0,1} ,{1,-1} 这种二分类标签。更常见的是多分类问题,如图片的分类——将输入的图片矩阵转化为输出的图片类型,输出可能是猫、狗、鸡、鸭等,此时对不同的动物类别需要进行编码,一种常见的是独热(one-hot)编码方式(0,...,1,...,0),这是一个长度为总类别数的向量,除了对应类别处的索引位置的值为1,其余类别值都为0。也就是说线性分类较回归只是在输出最后多加了一个“编码方式”。
下面以数学形式解释上述内容。
(2)二分类模型
从简单的回归模型开始,可以知道回归的输出 是可以在整个实数域
上取值的。
,
先以简单的二分类问题为例,需要将回归的实数域 映射到二分类问题的 {0,1}区间,即所有样本要不就分到“0类”,要不就分到“1类”。通过一个链接函数可以实现这一映射,此处暂时不讨论这个函数的由来,在后续将具体推导。假设现在已知我们的链接函数为 Sigmoid 函数。
,
从输出的值域来看(关注下图中 x 轴取值意义),可以看到 Sigmoid 函数本质其实是将回归模型输出的 的实数域取值压缩到了 [0,1]之间的取值,注意此时说的 “
” 代表回归模型输出,对应图像 x轴取值,y轴上的值则代表经过处理后的分类模型的“初步输出”——正类样本概率。
从概率论的角度来看(关注下图中 y 轴取值意义),Sigmoid 函数其实是将模型的输出通过一个函数,转化并可以定义为正类样本的概率值(因为概率取值范围是在[0,1]间),这个概率值就对应图像y轴值。
从概率这个角度来看,二分类和回归没什么区别,只不过回归是预测一个特定值(可以理解为事物的一个特征),而二分类是预测一个事件(如垃圾邮件出现这个事件是否发生)的概率值。因为二分类很简单,假设正类样本的概率值经过模型计算为 ,那么很容易的我们可以知道负类样本概率值为
。在下图中,可以看见如果模型输出
比较大(小),经过Sigmoid 函数对应的概率本身值就确定为1(0),此时可以直接分类出两类样本集合。但如果输出在原点附近,那么上述引入概率的思想就很有作用了。
假如已经训练好了一个分类模型,可以预见的是,对于一些“特征明显”的样本(对应图中离原点较远的点),回归模型经过 Sigmoid 函数操作后的输出值已经分好类别了,即输出0或1这两个数,也对应分到正样本类的概率。但是对于一些“摸棱两可”的样本(对应图中原点附近的点),其值在(0,1)间波动,如0.9,0.2等,如果将二分类模型输出值理解为概率,将非常好理解处理这些值。只需设置一个阈值,即将数值大于0.5的分为 “1类”,小于0.5的分为 “0类”即可。
最终得到二分类模型的数学形式。通过概率值思想,将回归输出实数域映射到了分类问题的输出空间。当概率值恰好为0.5,将不好判断样本到底属于哪一类,这其实说明我们的模型没有训练好,此时可以随机取一个类别帮助模型继续优化。
值得关注的是,此时模型参数和回归模型没有区别。
,
(3)多分类模型
同二分类一样,假设现在已经得到链接函数为 Softmax 函数,在后续会对其由来进行推导。不失一般性,以三分类问题为例,推导多分类模型。
对于多分类问题,无法像二分类那样仅通过一个输出值就可以将两类样本分开(正样本概率值 ;负样本概率值
)。一种合理的做法就是,模型的输出改为当前样本归为每一个类别的概率值。因此不同于回归和二分类的模型输出
只是一个标量值,多分类问题输出是一个向量,向量的每一个元素代表一个概率值。由于现在要求模型输出的是一个向量,所有对于模型的参数向量
需进行形状改造以适应矩阵乘法的结果。下面给出具体数学表达式。
模型参数 的改造动机来自输出
由标量到向量的变化。下式中
的下标表示总的输出类别数,以三分类为例,m等于3。
因为输出的形状要改变,而我们样本中的特征向量 一般是不变的,因此原本的参数向量
形状要根据矩阵乘法规则变化以匹配输出的形状。原本的向量将扩展成矩阵。参数矩阵经过转置后
的行数对应与输出的分类数。
下图展示了矩阵中对应元素的运算过程。
有了以上的铺垫后,可以应用我们之前定义的链接函数: Softmax 函数。同二分类一样,这里的关键还是将模型输出看作一个概率值。二分类将单值输出视为正样本的概率值;多分类模型每个类别都对应有一个输出,经过 Softmax 函数 的“标准化”处理后,输出对应了当前样本归为每类的可能概率值。
,
式子中Softmax 函数输入输出都是一个向量,其运算式含义是将输入向量 的每个元素设为自然对数
的指数,然后在进行归一化处理。
上述是多分类应用 Softmax 的一般形式,为方便起见,这里不失一般性的以三分类问题继续展开讨论其数学表达式。
上述参数矩阵的转置可以进一步拆分成三个参数向量。
此处处理后可以看到,多分类对参数矩阵的处理实际上就是,对于每一个类别都添加一个和回归参数形状一致的参数向量,使得经过 Softmax 函数的输出值代表一个类别发生的概率。因此回归、二分类、多分类其本质的逻辑是一样的。
上述式子推导可以得到三分类模型的数学形式,得到的输出是一个向量,每个分量代表不同类别的概率值。显然,根据 Softmax 公式的定义,所有类别的概率值的和一定是1。
将分类数量一般化,可以进一步推出多分类模型的一般展开数学形式。
同二分类问题一样,此处模型的输出 对应的是每种分类对应的概率值。因此我们需要将这一个概率向量转化到实际想要预测的类别。即对概率设置阈值判断。
Softmax 函数和 Sigmoid 函数一样本质是一种映射。区别是 Sigmoid 是点到点的映射,而Softmax是向量到向量。不失一般性,以简单的三分类问题为例(方便在空间坐标系可视化展示,对于更多维数的向量其对应更高维度的空间系)。对于多分类模型的中间过程——回归模型输出 和经过 softmax 操作后的模型输出
,它们三个分量构成的三维向量可以视为三维空间中的一点。
Softmax 操作本质上也是一种映射,如果将 视为空间内的一个样本点,经过回归问题的参数乘积操作后,该点仍可以取空间内得任意位置(回归问题的实数域取值范围)。而 Softmax 将点映射限制在一个满足限制条件的平面上(仅在三分类对应的三维空间中说法有效)。该限制条件其实就是概率取值的限制条件。
进一步,对类别进行定义,当前类别概率值大于0.5,可以认为分为该类别的可能性比较大。即可将当前类别概率值设置为1,其他类别设为0。这样就对应了“独热”编码的类别。下面给出一个具体的例子。
但存在特殊情况,假如所有类别的概率都小于等于0.5,此时很难判断样本类别(这和 sigmoid 中靠近原点处的分类模糊一样),此时随机选取分类以帮助机器学习。
上述阈值操作实际是将映射平面分为了四类区域:样本三类和随机一类,如下图所示。进一步可以根据设置的阈值条件,推出不同类别的边界曲线,这样就清楚 Softmax 是怎么将空间内的全部样本点映射到不同的类别了。
一类样本边界: , 其中
对应
;
对应
;
对应
二类样本边界: , 其中
对应
;
对应
;
对应
三类样本边界: , 其中
对应
;
对应
;
对应
下图画出了类别边界,并将softmax的映射平面分为四块,其中中心块代表了随机类别样本。对于所有类别边界曲面上的点,其映射到三角形平面的点一定在不同类别三角区域与中心随机三角区域相交的边上。
进一步从整个空间区域角度来看,softmax操作其实是将整个空间的样本点分成了与平面区域对应的四类。值得一提的是,映射平面(大三角区域)不是固定的。我们之前是将模型的输出 设为坐标
得到的平面方程和图像,而模型的输出
是受模型参数
影响的,因此随着参数变化,整个坐标系会根据参数矩阵而变化,分类的映射平面也会移动变化,随之将空间样本区域划分的方式也会变化。因此机器学习多分类模型就是要找到一个最合适的映射平面(也是最优的参数矩阵对空间系的变化方式),准确的划分空间内的样本点。
下图中对应不同颜色的区域内的所有点将划分为该区域颜色的类别,对于空白区域的点将分为随机类。机器学习最理想的状态就是,每个类别都被分为正确的区域,并且空白区域几乎没有样本点。
2.链接函数的推导
在定义线性分类模型中,关键是在回归模型的基础上加入了一个链接函数的操作。在定义模型部分,我们只解释了使用sigmoid,softmax函数的动机——将数值的实数域 范围映射到一个分类的概率值区间。以二分类为例,能实现这一动机的函数还有很多,为什么使用sigmoid看起来更加合理有效。
如下图显,另外两个函数和sigmoid差别仅在靠近原点处的增长速度。通过设置阈值同样可以实现将实数域映射到二分类的操作。
事实上,这个问题可以推广到整个广义线性模型中。对于回归问题,其实也隐含了一个恒等的链接函数 。现在具体定义一个链接函数的通用表达式为
。下面将分别对回归、二分类、多分类相对应的链接函数进行推导。
(1)回归的链接函数
在回归模型中,我们从概率论视角将实际样本的目标值 视作从一个分布中取出的一种采样结果。之前的讨论运用正态分布的线性组合性质和误差项的分布,得到了
对
的条件分布的具体形式。所谓的具体形式其实是将模型的参数
同分布均值
联系起来的结果。
下面我们就换一种更通用的方式,以广义线性模型的角度,实现上述转化。
在广义线性模型中,有三个要素:假设分布,线性模型,链接函数。
假设分布:在回归模型中假设 是服从正态分布的(这是由回归问题中的误差项假设而来)。选择该分布也还受
的输出值域空间限定。
取值在整个实数域范围,高斯分布与之匹配。
线性模型:在整个广义线性模型中,模型本质上是线性的,即参数和特征向量的组合方式是线性和的形式,即模型参数和特征的关联是线性关系,即 。这也是因此此时的二分类多分类称为线性分类的原因。
链接函数:链接函数就是连接假设分布和线性模型的桥梁,由于模型优化的方式(概率论角度的极大似然估计)和模型参数 分别在分布函数和线性函数两个迥异的坐标系下,因此想要优化模型参数,必须建立参数到分布的联系。
对于回归的正态分布假设来说,链接函数就是将正态分布均值 和模型输出均值
联系在一起的函数。在假设分布(左图)中选择均值
而不是其他参数(如方差)的原因是,均值往往反应的是数据的中心趋势,如果我希望模型学到一个“一般化”的规律,这是一个合理的估计量选择。模型输出均值
对应(右图),有很多个样本点对应多个模型输出,但是与分布的一个值对应,因此要从众多样本的模型输出中跳出一个“代表性”的值,很直接的就想到均值操作。
下面具体给出链接函数的数学推导。
首先和上图一样的思维顺序,从分布出发,将正态分布的密度函数化为一般的指数簇分布函数形式。这么做的目的有两个:一是因为指数簇函数形式可以推广到更多的分布,这为后续分类模型的链接函数推导打下基础;二是指数簇函数形式将自然参数(对应于回归中的 ,是假设分布的参数)和充分统计量分开,这方便我么直接识别出链接函数的形式。
指数簇分布函数形式:
其中,
是一个向量,代表自然参数
也是一个向量,代表充分统计量(取特定值事件得到概率中的特定值)
是使得整个式子积分为1的归一化配分式
下面推导正态分布密度函数变换到指数簇函数一般形式。
因为在链接函数处我们关心的是均值 ,因此可以将方差在式子中忽略。进一步将表达式向指数簇分布函数一般形式。
拆开平方项:
写成向量形式:
注意此时 跟
是向量乘积关系。那么可以根据上述的形式得到,在高斯分布下,其关于均值的指数簇分布形式中的自然参数
与分布均值
的对应关系如下。
现在回到一般的指数簇分布函数,深入探讨一下自然参数 的另一层含义。回忆在回归模型中,通过误差分布的分析得出样本实际
的似然是在给定分布均值
下得到的概率取值。
而指数簇分布函数形式也是用来衡量在给定一个自然参数的取值概率。因此二者是描述的同一件事情,将原本的概率密度函数化为指数簇标准形式是为了让我们更清晰的看出,模型输出与假设分布中参数的关联。
最终得到的上式表明 既是指数簇分布函数中的自然参数,也是模型预测的输出值
。特别注意,之前推导的等式中,虽然
和均值
是相等的,因为都指向模型的均值参数。但是字母
代表模型未知的分布均值参数,是一个抽象概念。而
是可以通过模型训练计算出来的具体输出值,是对分布
的拟合。因为回归模型的特殊性,不便理解,在后续分类模型的讨论会更加清晰,可以就记住,自然参数
就是模型预测输出
。
重新审视由指数簇函数得到的等式关系,等式左边 代表的是模型的输出,右边
代表的是假设分布的均值参数。这样的一个等式就将原本迥异的坐标系联系起来了。链接函数就是使得等式成立,需要对各自的指标做出的变化——对分布参数作用的函数为
,对模型输出作用的函数为
。
分布参数和模型输出是全等的关系,链接函数就是描述这一关系的,因此回归问题的链接函数为恒等函数,在回归模型的讨论中省略了这个全等函数。现在重新完整的描述为什么极大似然估计法可以用于对回归模型损失函数的推导,就是要在满足链接函数 对模型输出的作用下,使得模型输出和分布参数链接时,回归问题的优化等价于分布函数参数的估计。
(2)二分类的链接函数
同回归推导一样,先将概率密度函数化为指数簇分布形式,找到假设分布参数和模型预测输出的关系,就可得到其链接函数。分类问题的链接函数将更清晰的展现抽象分布参数和具体分布参数估计 的区别。首先我们需要对二分类问题的分布做出说明。
二分类问题只有两种输出结果,即0类或1类,如果看作是“某一事件发生或不发生”,二分类的分布其实就是一个伯努利分布。那么就可以直接写出二分类问题的概率密度函数。其中伯努利分布参数是正样本发生的概率值。
化为指数簇分布形式。
根据指数簇分布标注形式,一一对应可以找到自然参数 的表达式。
此处就可以比较清晰的区分开模型的抽象参数 和具体的可训练自然参数
。上述等式是将分布参数
根据一个函数等价转化为线性模型的输出
。用一个通用函数表示,即
。
那么反过来,我们现在如果已知模型的输出 ,希望通过一个链接函数,使得输出联系上分布的参数,从而可以使用参数估计的方法优化模型。很自然的,我们只需取上述
的反函数并作用于模型输出
即可。这就得到了二分类问题的链接函数形式。
可见上述形式就是Sigmoid函数形式,因此我们证明了二分类问题链接函数的由来。使用Sigmoid 不仅仅是看上去性质合理那么简单,其他具有同样功能的函数不一定能满足优化过程中对分布参数的估计是无偏的。
(3)多分类的链接函数
多分类问题的链接函数——Softmax函数同之前一致,只不过因为多分类问题的分布服从多项式分布的形式稍微复杂一下,导致其转为指数簇函数麻烦,整个推导过程复杂。下面做出公式推导。
首先对多项式分布的概率密度函数建模。
对于 个类别的多分类任务,假设每个类别的发生概率为
,对每类进行“独热”编码,编码结果如下。其中对
类编码,只需
维长度的向量,这是因为可以将冗余的一个类别用全零向量表示。定义编码函数
。
冗余最后一项可用全零向量表示。
定义一种取上述编码内元素的索引方式 ,即下标表示向量内的第几个元素。下方给出一个具体的例子
定义一个指示函数 ,其中输入不是传统的数值而是一个真误的判断,当输入为真时,输出为1;输入为误时,输出为0。
通过定义指示函数,可以将之前索引取元素的操作用这个函数表示。下面的数学通式可以概括为,对于所有的编码向量来说,取任意一个向量的内部的任意元素 ,只有在该向量的类别序号
和取出元素对应的索引相等是才会输出1,其余输出0。最终结果和向量本身一致。
进一步我们可以考虑一个问题,对于当前有很多个属于这 类类别的样本,现在已知每种类别的概率
,那么按上述取法:取任意一个向量的内部的任意元素后,可以得到一个各值(0或1)。这个取法的期望值是多少。
知道每种类别的概率,可以对类别求期望的平均值。同时还剩一个任意位置的元素,因此这个期望值是对类别向量的平均,但受取向量的第几个元素影响而变化。可以代入指示函数化简。显然只有当要取的类别和元素的索引一致时才为1,其余为0。所以这个期望实际是取出了元素索引对应的类别概率。
现在前置的准备工作做完了。同二项式分布的概率密度函数的形式相似,可以写出多项式分布的概率密度函数形式。下面将其转化为指数簇分布函数的一般形式。
首先根据准备工作可以得到多项式分布的概率密度函数。即根据 输入值取出对应索引类别的概率值。
式中概率值的上标实际存在冗余。因为对于 的一个取值,只会有一个指示函数为1,其余都为0。即存在下面的关系式。
将上面的关系式代入概率密度函数,并将指示函数转化到之前定义的取索引的形式(方便利用索引取法的期望特性),最后将其化简到指数簇分布函数一般式。
将 这一项拆开,再与前面项合并
这个公因式,可以推得下式。
此时只需将上式转为向量形式,就可以得到指数簇分布标准形式了。 同二分类一样操作,唯一区别就是此时自然参数
是一个向量形式。还需注意的是,此处隐藏了一个条件。对于冗余的第
个类别,其对应的自然参数分量值为0.
可以将上述归纳为一个式子,其代表了向量操作中每个分量相同的操作过程。这个就是softmax函数的反函数。
下面将 进行求反函数,就可以转化为我们想要的 softmax 链接函数形式。
上式可以推导出下面关系式,对 i 进行求和,可以发现分子为所有类别概率之和,和必定为1。这就找到了 和
的关系。
将 和
的关系式代入原式化简可以得到softmax函数。
上述即softmax函数的推导过程。所以看似不用证明的sigmoid、softmax函数,其实都是由分布参数和模型输出的关联等式中推导出来的。