机器学习与深度学习——自用入门(2.4)
文章目录
- 机器学习与深度学习——自用入门(2.4)
- 前言
- 一、Classification与Regression。
- 二、Classification基本原理
- 总结
前言
补充机器学习的classification应用实现。
一、Classification与Regression。
想到分类第一直觉是利用regerssion,将y与class对应即可。但是实际上,这种解法并不合理。并且还可能会导致因为在函数训练的过程中减少loss而导致产生分类类别错误的问题。因为regression的目的是尽可能拟合样本点,而classification是为了将样本点进行归类。
很明显,regerssion和classification由于目的不同和,对于loss的定义也不一样,所以不可以用regerssion解决classification的问题。
classification的loss定义如下,很明显,不能用gradient来计算loss,也不能用regerssion的函数来模拟classification。
二、Classification基本原理
根据机器学习的基本步骤,涉及到分类,就要明确三个问题:
-
如何根据样本定义类,并建立与类相关的数学模型?
首先,通过对样本集设置feature与lable可以得到一种样本分布关系,而这种分布关系是可以进行定义的,比如由高斯分布(这个可以是任何Probablility Distribution,自己根据实际情况定义,这里以高斯为例),任何一个高斯分布都可以sample到我们的training set,且不同的高斯分布sample到的Likelihood是不同的。【Likelihood(μ,Σ):可以看作是所有样本点采样几率的乘积。】采用Maximum Likelihood(最大似然估计)找出使得Likelihood最大的μ与Σ,即得到一个最近似样本分布的高斯分布函数。
也就是说,想定义一个类,就取同类的样本分布,通过上述方法,找到类对应的高斯分布函数。(参数为u和Σ)
-
如何确定样本是否属于某类
由此我们定义了一个类的高斯分布函数,将其样本作为参数带入,得到的值就是此样本在此类中取样的概率,即P(x|Ci)。但是,我们要求的是样本属于某类的概率,即P(Ci|x)。而根据贝叶斯定理,我们可以建立这两者之间的关系。即:
注:P(Ci) 是class Ci的样本所占training set的几率,是已知量。
以上,可以得到P(Ci|x),根据即P(Ci|x)的值的大小,我们可以确定x属于哪一类,比如即P(Ci|x)>0.5时,我们就认为样本属于Ci。
这样,整体的model就建立了起来。 -
如何将上述model变成一个可供计算的function?
通过以上步骤得到的函数进行变形可以看到,原函数可以遍行成sigmoid函数,这就与我们之前所作的regression联系起来了。对于P(Ci|x)model的研究也就可以转化成对sigmoid函数z参数的研究。
对上述公式进一步变形,通过将不同类的Σ共用,避免overfitting,根据Σ对Z进行化简,复杂的Z可以准化成一个相对简单的线性关系。也就是说,P(Ci|x)可以写作下列sigmoid函数。(这里的w是个矩阵,而x是一个向量,由样本不同维度的feature构成)
注:通过公用,原来求最大似然估计的算式的参数就可以简化成不同的μ与一个通用的Σ。 -
如何将上述function进行评估-找loss的计算方法?
很明显,function越合理,样本属于样本类的可能性越大,换而言之就是,原函数可以取到Max Likelihood时,w与b是最佳参数。
Likelihood的计算公式如下:
将公式取对数化并加符号,求Max Likelihood的过程就变成了求最小的-ln(Likelihood)的过程。
再次进行变形,通过交叉熵代价函数(取值范围为0,1),让样本与每个类相关。这样,最大似然估计里样本属于某个类就可以简化成参数问题(0/1问题)。(information theory的知识)
讲了这么多,其实就是为了建立loss与参数w b的关系,现在关于w b的最大似然估计的公式已经建立起来了。怎么去定义loss呢?
首先回忆下loss function的作用,就是:
计算神经网络每次迭代的前向计算结果与真实值的差距
指导下一步的训练向正确的方向进行。
那么很明显,loss的差值就是likelihood的差值,我们的更新方向也就是对这个函数进行gradient decent。
这个其实跟regression的根本原理是一样的,只是loss的衡量尺度不同,对于regression,是y的差值的变化,而对于classification,体现在最大似然估计上。
ok,接下来,我们需要对likelihood function进行w与b的求导以确定更新方向,还记得第一步用来替代fwb(x)的简化得到的sigmoid函数吗,非常神奇的是,可以用链式求导把likelihood的求导结果用sigmoid函数表示出来……
整理后,得到的g就是update的更新方向,乘上参数n就是更新的步长。
总结
其实可以看到,分类无非就是以下的三步:
classification用到了logistic regression,即通过样本x,w,b定义一个线性关系,再代入一个logistic函数来求得一个概率,通过这个概率的likelihood去进行w b的调整进行回归,这个logistic函数就是sigmoid。