ML-Softmax分类器的数学原理与统计原理


前言

Softmax是机器学习中最为基础的一种算法,其本质是对logistic回归算法的推广。logistic算法是二元分类,Softmax算法是多元分类。在这一篇博文中,我将向大家介绍分别介绍数学原理与统计原理。阅读本篇博文之前,希望你已经掌握了logistic算法的相关知识。不了解也没关系,但是可能有一些概念需要你现学一下。

广义线性模型(GLM)与指数分布族

广义线性模型是一系列模型的统称,其是基于指数分布族的。如果一个概率分布函数可以写成如下模式: \[ p(y;\eta)=b(y)exp(\eta^TT(y)-a(\eta))\] 那么这个概率分布就是指数分布族的一种。其中:
η 自然参数
T(y) 充分统计量
a(η) log分配函数,展开之后是exp(-a(η)),本质上是确保p(y;η)集成在1和y之间

我们只要选定合适的a,b,T,就确定了一个以η为参数的分布族,当我们变化η的时候就会得到这个簇的不同的概率分布,用ExpFamily(η)表示以η为参数的指数分布族。常见的伯努利分布,高斯分布,泊松分布,贝塔分布,狄特里特分布都属于指数分布族。

如果属于指数分布族的话,那一定也是广义线性模型的一种。广义线性模型基于三条假设,亦称作GLM三大定律:
1.给定特征属性\(x\)和参数\(\theta\)后,\(y\)的条件概率\(p(y|x;\theta)\)服从指数分布族,即\(y|x;\theta\)~\(ExpFamily(\eta)\)。
2.预测\(T(y)\)的期望,即计算\(E[T(y)|x]\)。
3.\(\eta\)与\(x\)之间是线性的,即\(\eta=\theta^Tx\)。

Softmax的数学原理

我们推到Softmax最终是希望得到一个损失函数,然后通过对损失函数的学习得到参数。在分类问题中,假设损失函数为\(L(\theta)\),那么我们通常要对L求最大似然函数,式子为: \[L(\theta)=\prod h(\theta)\] 其中h是我们的预测函数,预测当前样本属于某种分类的概率有多大的函数。最大似然L可以理解为,我们已有一个训练样本,我们要寻找一组参数\(\theta\),使得我们能够取得符合这组样本分类情况的概率越大越好,如果是1的话就证明我们的模型已经非常完美的满足了这组样本(1的话可能会过拟合)。那么我们为了求L就去要去求h。接下来我们要做的工作就是求出h。

首先我们设一共有k种分类,假设每种情况的概率分别为\(\varphi_1,\varphi_2,...,\varphi_k\),即\(p(y=i)=\varphi_i\),这样一来我们最后一种情况可以表示为: \[\varphi_k = 1-(\varphi_1+\varphi_2+...+\varphi_{k-1})\] 于是我们就只有k-1个未知数了,所以我们设我们的y为一个k-1维的向量,表示为:

在这里声明一下示性函数1{boolean},如果boolean为真,那么输出为1,如果boolean为假,那么输出为0.

我们接下来使用\(T(y)_i\)表示向量T(y)的第几个元素,那么就会有以下两个式子: \[T(y)_i=1(y=1)\] \[E[T(y)_i=p(y=i)=\varphi_i\] 这里需要我们动脑去理解一下,T第i个元素等于1的概率就是y=i的概率,因为T中只有一个1,剩下的全是0,还是按顺序排列的,体会一下
其中\(\eta\)还可以表示为:
根据上式可以得到: \[\varphi_i=\frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}}\] 当y=i时: \[p(y=i|x;\theta)=\varphi_i=\frac{e^{\eta_i}}{\sum_{j=1}^k e^{\eta_j}}=\frac{e^{\theta^T_ix}}{\sum_{j=1}^k e^{\theta^T_jx}}\] 得到了指数分布族之后,我们根据GLM三定律的第二条可以求h函数了:
得到了假设函数之后,接下来对其求最大似然估计:
前面我们还说到一个过拟合的问题,过拟合问题我们只需要规范化以下L就可以了,使用的方法是加入惩罚函数,规范化之后的公式如下:
这样一来我们就完成了Softmax算法的数学推导。


Softmax的统计原理

虽然通过了上面复杂的公式推导,但是我们还是不能够很直观的了解到Softmax的工作模式。这一部分就是跟大家一个直观的理解。

我们把Softmax分类器想象成一个黑盒,我们给这个黑盒一些判定的依据,然后这个黑盒输出一个判定结果,即哪一种分类。那么判定依据是什么呢?判定依据就是我们的特征向量啊,即输入的x!当然肯定不是\(x_1+x_2+...+x_n\)这种形式,每一个x前面都是有一个参数的,即 \[A=\theta_1x_1+\theta_2x_2+...+\theta_nx_n\] 通常情况下,我们会再加上一个偏置参数bias,表示出了我们的特征向量之外的影响因素: \[A=\theta_1x_1+\theta_2x_2+...+\theta_nx_n+b\] 这样的话,我们就有了: \[y=Softmax(A)\] 其实Softmax只是一组公式,其输出结果正好是一个k-1维的向量罢了,我们可以通过这个向量得到预测结果而已。Softmax在这里的简化公式为: \[Softmax(m)_i=\frac{e^m}{\sum_je^j}\] 把A代入进去有: \[Softmax(A)_i=\frac{e^A}{\sum_je^j}\] 注意GLM三大定律中的第三条,我们的A实际上不就是\(\eta\)嘛!!!所以我们把A换成\(\eta\)就得到了上一节用数学知识推导出的公式: \[p(y=i|x;\theta)=\frac{e^{\theta^T_ix}}{\sum_{j=1}^k e^{\theta^T_jx}}\] 为了便于理解,给出一个Softmax分类系统的图:


分享博文


评论博文


Last one :   DL-RNN循环神经网络原理

Next article :   TF-Windows10安装TensorFlow-GPU版