机器学习的基本模型—入门知识

机器学习的各种算法在于如何使用特定函数与已知的数据集相匹配,从而达到训练和测试的目的。本篇文章对一些近似的模型做一些相应的介绍。

线性模型

一维输入变量

假设学习对象f函数的输入是一组实数,那么对该函数进行近似的时候,最简单的方案就是f_{\theta}(x)=\theta\cdot x。在这里,\theta是这个函数的斜率,也就是这个函数f_{\theta}(x)的参数。机器学习就是通过对这个参数的学习,完成函数的近似计算。这个模型对于\theta而言是一个线性函数,操作起来十分方便,但是对于实际的情况来说,该模型过于简单,没有太大的使用价值。 由于上面这个模型过于简单,那么在实际应用中,会对上述的模型进行必要的扩展,使得函数f_{\theta}(x)变成参数的线性模型,这样这个模型就可以用来表示非线性的输入和输出了。可以把\theta\cdot x扩展成如下形式:

f_{\theta}(x)=\sum_{j=1}^{b}\theta_{j}\cdot\phi_{j}(x).

在这个式子中,\phi_{j}(x)是基函数向量\phi(x)=(\phi_{1}(x),\cdot\cdot\cdot,\phi_{b}(x))^{T}的第j个分量,\theta_{j}\theta=(\theta_{1},\cdot\cdot\cdot,\theta_{b}))^{T}的第j个分量,b是基函数\phi(x)的维数。根据上面f_{\theta}(x)的定义,可以得到该函数是参数向量\theta的线性函数。也就是说对于b维参数\theta,\theta^{'}\alpha\in \mathbb{R},满足

f_{\theta+\theta^{'}}(x)=f_{\theta}(x)+f_{\theta^{'}}(x),

f_{\alpha \theta}(x)=\alpha f_{\theta}(x).

那么这个时候如何选择基函数\phi(x)就成为了一个关键所在。

数学分析里面有一个经典定理叫做Weierstrass定理,陈述如下:

Weierstrass第一逼近定理:假设f(x)是闭区间[a,b]上的连续函数,对于任意的\epsilon>0,则存在多项式P(x)使得对于所有的x\in [a,b],有|f(x)-P(x)|<\epsilon 

根据Weierstrass第一逼近定理,对于任何一个闭区间上面的连续函数,都可以用多项式去逼近。所以联系到机器学习,就可以把基函数\phi(x)的分量设置为多项式,换句话说

\phi_{j}(x)=x^{j-1}

\phi(x)=(1,x,x^{2},\cdot\cdot\cdot, x^{b-1})^{T}.

那么上述的\theta的线性函数却是关于自变量x的非线性函数,而且f_{\theta}(x)=\sum_{j=1}^{b}\theta_{j}\cdot x^{j-1}可以逼近关于x的闭区间上任何一个连续函数。

与Weierstrass逼近定理类似,用Fourier级数也可以逼近Lipchitz连续函数。所以也可以选择基函数

\phi_{0}(x)=1,\phi_{2j-1}(x)=\sin(jx),\phi_{2j}(x)=\cos(jx), 其中j\geq 1. 

简单来说就是令b=2m+1, \phi(x)=(1,\sin(x),\cos(x),\cdot\cdot\cdot,\sin(mx),\cos(mx))^{T}. 根据这些模型,f_{\theta}(x)就可以表示复杂的非线性模型了。

高维输入变量

对于高维的变量\textbf{x}=(x^{(1)},\cdot\cdot\cdot,x^{(d)}), 函数依旧可以扩展成如下模式:

f_{\theta}(\textbf{x})=\sum_{j=1}^{b}\theta_{j}\cdot\phi_{j}(\textbf{x})={\theta}^{T}\phi(\textbf{x}).

对于多维的输入向量\textbf{x},可以用一维的基函数来构造多维基函数的乘法模型加法模型

乘法模型指的是把一维的基函数作为因子,通过使其相乘而获得多维基函数的方法。表达式如下:

f_{\theta}(x)=\sum_{j_{1}=1}^{b^{'}}\cdot\cdot\cdot\sum_{j_{d}=1}^{b^{'}}\theta_{j_{1},\cdot\cdot\cdot,j_{d}}\phi_{j_{1}}(x^{(1)})\cdot\cdot\cdot \phi_{j_{d}}(x^{(d)}).

在上面的式子中,b^{'}是各个维数的参数个数。对于这个模型而言,它的表现力十分丰富,但是不足之处在于所有的参数个数是(b^{'})^{d}, 是一个非常巨大的数字,导致的维数灾难,所以在实际运用中,不主张用这个模型。

加法模型指的是把一维的基函数作为因子,通过相加而活得高维基函数的方法。表达式如下:

f_{\theta}(x)=\sum_{k=1}^{d}\sum_{j=1}^{b^{'}}\theta_{k,j}\phi_{j}(x^{(k)}).

加法模型中所有参数的个数是b^{'}d, 它是一个关于维数d的线性函数,复杂度没有乘法模型大,但是表现力和乘法模型比起来则差很多。

核模型

在线性模型中,多项式或三角函数等基函数的选择都是与训练样本无关的,核模型则与之相反,会在进行基函数构造的时候使用输入样本\{\mathbf{x}_{i}\}_{i=1}^{n}.  在核模型中,会使用核函数

K(\mathbf{x},\mathbf{c})=\exp(-||\mathbf{x}-\mathbf{c}||_{2}^{2}/(2h^{2})), 

其中||\cdot||_{2}指的是欧几里德2-范数,h表示核函数的带宽\mathbf{c}指的是核函数的均值 从核函数的定义可以可以延伸出模型

f_{\theta}(\mathbf{x})=\sum_{j=1}^{n}\theta_{j}\cdot K(\mathbf{x},\mathbf{x}_{j}).

在这个模型中,关于\theta而言仍然满足线性关系。换句话说,对于\theta,\theta^{'}\in\mathbb{R}^{n},f_{\theta+\theta^{'}}(x)=f_{\theta}(x)+f_{\theta^{'}}(x)f_{\alpha\theta}(x)=\alpha f_{\theta}(x). 对于核函数来说,无论输入的是一维变量还是高维变量,核函数都可以容易的进行扩展。

层级模型

对参数来说是非线性的模型,都称为非线性模型。下面要介绍的就是非线性模型中的层级模型,它在很多领域都有应用。假设模型是

f_{\theta}(\mathbf{x})=\sum_{j=1}^{b}\alpha_{j}\cdot\phi(\mathbf{x};\mathbf{\beta}_{j}).

上式中,\phi(\mathbf{x};\mathbf{\beta})是关于参数向量\mathbf{\beta}的基函数,层级模型是基于参数向量\mathbf{\alpha}=(\alpha_{1},\cdot\cdot\cdot,\alpha_{b})^{T}的线性形式。同时也包含参数向量\{\beta_{j}\}_{j=1}^{b}, 所以层级模型是基于参数向量\mathbf{\theta}=(\mathbf{\alpha}^{T},\mathbf{\beta}_{1}^{T},\cdot\cdot\cdot,\mathbf{\beta}_{b}^{T})^{T}的非线性形式。 基函数通常采用S型函数

\phi(\mathbf{x};\beta)=1/(1+\exp(-\mathbf{x}^{T}\omega-\gamma)), 其中\beta=(\omega^{T},\gamma)^{T}

或者高斯函数

\phi(\mathbf{x};\beta)=\exp(-||\mathbf{x}-\mathbf{c}||_{2}^{2}/(2h^{2})), 其中\beta=(\mathbf{c}^{T},h)^{T}.

其中S函数模仿的是人类脑细胞的输入输出函数,因此使用S函数的层级模型也被称为人工神经网络模型

针对像人工神经网络这样的层级模型,采用贝叶斯学习的方法是不错的选择。人工神经网络也以学习过程艰难异常而著称。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s