机器学习的各种算法在于如何使用特定函数与已知的数据集相匹配,从而达到训练和测试的目的。本篇文章对一些近似的模型做一些相应的介绍。
假设学习对象 f 函数的输入是一组实数,那么对该函数进行近似的时候,最简单的方案就是 fθ(x)=θ⋅x 。在这里, θ 是这个函数的斜率,也就是这个函数 fθ(x) 的参数。机器学习就是通过对这个参数的学习,完成函数的近似计算。这个模型对于 θ 而言是一个线性函数,操作起来十分方便,但是对于实际的情况来说,该模型过于简单,没有太大的使用价值。
由于上面这个模型过于简单,那么在实际应用中,会对上述的模型进行必要的扩展,使得函数 fθ(x) 变成参数的线性模型,这样这个模型就可以用来表示非线性的输入和输出了。可以把 θ⋅x 扩展成如下形式:
fθ(x)=∑bj=1θj⋅ϕj(x) 。
在这个式子中, ϕj(x) 是基函数向量 ϕ(x)=(ϕ1(x),⋅⋅⋅,ϕb(x))T 的第 j 个分量, θj 是 θ=(θ1,⋅⋅⋅,θb)T 的第 j 个分量, b 是基函数 ϕ(x) 的维数。根据上面 fθ(x) 的定义,可以得到该函数是参数向量 θ 的线性函数。也就是说对于 b 维参数 θ,θ′ 和 α∈R ,满足 fθ+θ′(x)=fθ(x)+fθ′(x) 和 fαθ(x)=αfθ(x) 。那么这个时候如何选择基函数 ϕ(x) 就成为了一个关键所在。数学分析里面有一个经典定理叫做Weierstrass定理,陈述如下:
Weierstrass第一逼近定理:假设 f(x) 是闭区间 [a,b] 上的连续函数,对于任意的 ϵ>0 ,则存在多项式 P(x) 使得对于所有的 x∈[a,b] ,有 |f(x)−P(x)|<ϵ 。
根据Weierstrass第一逼近定理,对于任何一个闭区间上面的连续函数,都可以用多项式去逼近。所以联系到机器学习,就可以把基函数 ϕ(x) 的分量设置为多项式,换句话说 ϕj(x)=xj−1 和 ϕ(x)=(1,x,x2,⋅⋅⋅,xb−1)T 。那么上述的 θ 的线性函数却是关于自变量 x 的非线性函数,而且 fθ(x)=∑bj=1θj⋅xj−1 可以逼近关于 x 的闭区间上任何一个连续函数。
与Weierstrass逼近定理类似,用Fourier级数也可以逼近Lipchitz连续函数。所以也可以选择基函数 ϕ0=1,ϕ2j−1(x)=sin(jx),ϕ2j(x)=cos(jx) ,这里 j≥1 。简单来说就是令 b=2m+1 ,
ϕ(x)=(1,sinx,cosx,⋅⋅⋅,sin(mx),cos(mx))T 。根据这些模型, fθ(x) 就可以表示复杂的非线性模型了。
对于高维的变量 x=(x(1),⋅⋅⋅,x(d)) ,函数依旧可以扩展成如下模式:
fθ(x)=∑bj=1θjϕj(x)=θTϕ(x) 。对于多维的输入向量 x ,可以用一维的基函数来构造多维基函数的乘法模型和加法模型。
乘法模型指的是把一维的基函数作为因子,通过使其相乘而获得多维基函数的方法。表达式如下:
fθ(x)=∑b′j1=1⋅⋅⋅∑b′jd=1θj1,⋅⋅⋅,jdϕj1(x(1))⋅⋅⋅ϕjd(x(d)) 。
在上面的式子中, b′ 是各个维数的参数个数。对于这个模型而言,它的表现力十分丰富,但是不足之处在于所有的参数个数是 (b′)d ,是一个非常巨大的数字,导致的维数灾难,所以在实际运用中,不主张用这个模型。
加法模型指的是把一维的基函数作为因子,通过相加而活得高维基函数的方法。表达式如下:
fθ(x)=∑dk=1∑b′j=1θk,jϕj(x(k)) 。
加法模型中所有参数的个数是 b′d ,是一个关于维数 d 的线性函数,复杂度没有乘法模型大,但是表现力和乘法模型比起来则差很多。
在线性模型中,多项式或三角函数等基函数的选择都是与训练样本无关的,核模型则与之相反,会在进行基函数构造的时候使用输入样本 {xi}ni=1 。
在核模型中,会使用核函数 K(x,c)=exp(−||x−c||22/(2h2)) ,其中 ||⋅||2 指的是欧几里德2-范数, h 表示核函数的带宽, c 指的是核函数的均值。
从核函数的定义可以可以延伸出模型
fθ(x)=∑nj=1θj⋅K(x,xj) 。
在这个模型中,关于 θ 而言仍然满足线性关系。换句话说,对于 θ,θ′∈Rn , α∈R ,有 fθ+θ′(x)=fθ(x)+fθ′(x) 和 fαθ(x)=αfθ(x) 。对于核函数来说,无论输入的是一维变量还是高维变量,核函数都可以容易的进行扩展。
对参数来说是非线性的模型,都称为非线性模型。下面要介绍的就是非线性模型中的层级模型,它在很多领域都有应用。假设模型是
fθ(x)=∑bj=1αj⋅ϕ(x;βj) 。
上式中, ϕ(x;β) 是关于参数向量 β 的基函数,层级模型是基于参数向量 α=(α1,⋅⋅⋅,αb)T 的线性形式。同时也包含参数向量 {βj}bj=1 ,所以层级模型是基于参数向量 θ=(αT,βT1,⋅⋅⋅,βTb)T 的非线性形式。
基函数通常采用S型函数
ϕ(x;β)=1/(1+exp(−xTω−γ)) ,其中 β=(ωT,γ)T
或者高斯函数
ϕ(x;β)=exp(−||x−c||22/(2h2)) ,其中 β=(cT,h)T 。
其中S函数模仿的是人类脑细胞的输入输出函数,因此使用S函数的层级模型也被称为人工神经网络模型。
针对像人工神经网络这样的层级模型,采用贝叶斯学习的方法是不错的选择。人工神经网络也以学习过程艰难异常而著称。