机器学习算法一

最小均方算法,即Least-Mean-Square,LMS。其提出受到感知机的启发,用的跟感知机一样的线性组合器。 

无约束最优化问题

LMS算法的目标就是找到一组权值向量,使其输出响应跟期望响应最接近。

设立一个代价函数 E(w) ,其对权值向量连续可微,用来描述输出响应跟期望响应的差距,也就是值越小越好。于是我们的目标就是酱紫: 
找到一个最优的权值向量 w ,对于任何 w 都有:

E(w)E(w)

这是一个无约束最优化问题。其解决的一个必要条件就是 E(w)=0 。 
也就是:
[Ew1,Ew2,...,EwM]T=0

一般的解决方法是从一个初始权值向量 w(0) 开始,不断迭代产生新的权值向量 w(i) ,对于每一个权值向量其代价函数都要小于上一个的代价函数,即 E(w(i))<E(w(i1)) ,如此往复直到代价函数足够小为止。或者说在一个M维的空间里,从一个点出发,不停地往代价函数减小的方向走,直到走到最低点。

最速下降法

也就是反向传播算法梯度下降的基本原理,在每一个位置 w(i) 求出当前位置的代价函数的梯度 g(i) ,再沿着梯度的反方向(正方向使代价函数增加)移动一段距离成为 w(i+1) ,也就是每次都顺着坡最陡的方向往下走一步。 
梯度即为代价函数对权值向量的每一个元素求偏导:

g=E(w)=Ew

权值向量的修正为:
w(i+1)=w(i)ηg(i)

η 为一个标量,称为步长或学习率参数,可以理解为沿着梯度方向走的一步的大小。

理论上来说学习率参数 η 在足够小的时候,才能完全保证权值向量的修正是让代价函数一步比一步小的。但是 η 太小又会导致收敛速度过慢。

定义代价函数:

E(w)=12i=1N(diyi)2=12i=1N(diwTxi)2

那么就有:
g=(12i=1N(diwTxi)2)/w=i=1Neixi

其中 ei=diwTxi 即误差值。于是权值向量的修正为:

w(i+1)=w(i)ηg(i)=w(i)+ηi=1Neixi

N为样本数量。

牛顿法

最速下降法也可以理解为是拿一个平面去拟合点附近的曲面,而牛顿法则是复杂一些,拿一个二阶的曲面去拟合点附近的曲面。 
具体来说就是拿代价函数在权值向量 w(i) 处二阶泰勒展开(最速下降法可认为是一阶泰勒展开):

ΔE(w)=E(w(i)+Δw)E(w(i))=gT(i)Δw+12ΔwTH(i)Δw

其中 H 为Hessian矩阵:
H=2Ew212Ew2w12EwMw12Ew1w22Ew222EwMw22Ew1wM2Ew2wM2Ew2M

说白了就是对不同组合的权值求两次偏导。

接着就是要最大化 ΔE(w) ,所以拿上上式右边对权值向量求导后再使之为0:

g(i)+H(i)Δw=0

解得 Δw=H1(i)g(i) 。 
也就是 w(i+1)=w(i)H1(i)g(i)

牛顿法的主要问题就是计算复杂度,以及其要求Hessian矩阵 H 每次迭代里都必须是正定的但这不好保证。

对于代价函数是这样的情况:

E(w)=12i=1N(diyi)2=12i=1N(diwTxi)2

拿代价函数对权值求两次偏导,可以算得Hessian矩阵 H 的第i行第j列的元素为: 
hij=s=1Nxi(s)xj(s)

其中N为样本数量,s表示第s个样本。 
因而Hessian就为:
H=XTX

其中 X 为样本矩阵,一行一样本一列一属性。

高斯-牛顿法

为了降低牛顿法的计算量同时保证收敛能力又提出了高斯-牛顿法。其优势就是不需要搞两次偏导。 
依然是用这个误差平方和一半的代价函数:

E(w)=12i=1N(diyi)2=12i=1Ne2i

不过这次就不先拿代价函数,而是拿误差信号 ei 对权值向量在某一点处作一阶泰勒展开:
ei(w)=ei(w(n))+[eiw]T(ww(n))

这回i表示第i个样本,而n表示第n次迭代。 
把所有样本的 ei 组合成列阵形式,就有:
e(w)=e(w(n))+J(n)(ww(n))

其中 e=[e1,e2,...,eN]T ,N为样本数量。 
J 为Jacobi矩阵:

J=e1w1e2w1eNw1e1w2e2w2eNw2e1wMe2wMeNwM

说白了就是每个样本的误差信号分别对每个权值求偏导。

那么误差信号就是:

E(w)=12e(w)2=12e(w(n))2+e(w(n))TJ(n)(ww(n))+12(ww(n))TJ(n)TJ(n)(ww(n))

矩阵形式的完全平方公式。两根竖线 表示欧几里得范数,也就是常说的向量的模。 
现在需要找到一个权值向量使上式最小作为 w(n+1) ,于是对上式对权值向量求导并使之为0,得:
JT(n)e(n)+JT(n)J(n)(ww(n))=0

解出 w 作为 w(n+1) 得:
w(n+1)=w(n)(JT(n)J(n))1JTe(n)

这就是高斯-牛顿法的基本型

自然这里还有要求 JT(n)J(n) 得是非负定的。于是通常会给它加上一个对角矩阵 δI δ 是一个较小的正数, I 是单位矩阵。于是上式就变成:

w(n+1)=w(n)(JT(n)J(n)+δI)1JTe(n)

维纳滤波器

然后接着推导。在这里误差信号为 ei=diyi=diwTxi  
于是有 eiw=xi ei(w)=ei(w(n))xi 。 
从而Jacobi矩阵为:

J=[x1,x2,...,xN]T=X

X 就是样本矩阵。 
另外可知有 e=dXw 。 
将这些带入到高斯-牛顿法的基本型中可得:
w(n+1)=w(n)+(XT(n)X(n))1XT(d(n)Xw(n))

整理之后你会发现 w(n) 会被消掉,然后就干脆成了:
w(n+1)=(XT(n)X(n))1XT(n)d(n)

简直可以一开始就一次计算啊。也难怪前边用牛顿法可以一次就收敛。 
然后定义 X 的伪逆为 X+=(XT(n)X(n))1XT 。这样就可以表述成最优权值向量为样本矩阵的伪逆乘上期望响应:
w(n+1)=X+d(n)

这就像是《神机》第二章所讲的一次性计算分界的线性最小二乘分类器,所以这也叫 线性最小二乘滤波器。 
当样本数量N趋于无穷时,就成了维纳滤波器。

最小均方算法

反正《神机》是过了前面的大堆篇幅之后才开始讲回这章的主题… 
其实所谓最小均方算法就是拿均方误差作为代价函数,并使之最小的算法,权值调整方法也是跟最速下降法一致。 
只不过不同的是,前面的几个方法都是计算汇总了所有样本的误差再调整,而这里是逐个样本逐个计算误差逐个调整。每一个样本称为一个瞬像。 
因为每个样本不同,每次权值调整的方向也不同而近似于随机,但是总体来说都是朝着最优的方向调整的。于是LMS算法也被称为随机梯度算法

因此代价函数就成了:

E(w)=12(diyi)2=12e2i

称为代价函数的瞬时值。 
求偏导后即可得:
Ew(n)=x(n)e(n)

于是权值调整方式就是这样:
w(n+1)=w(n)+ηx(n)e(n)

η 同上为学习率参 数。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

 我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面...

   对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:

        (1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
        (2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
        (3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。

  最常用的是普通最小二乘法( Ordinary  Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数。

  样本回归模型:

                                     其中ei为样本(Xi, Yi)的误差

   平方损失函数:

                      

   则通过Q最小确定这条直线,即确定,以为变量,把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数:

                       

    根据数学知识我们知道,函数的极值点为偏导为0的点。

    解得:

                   

 

这就是最小二乘法的解法,就是求得平方损失函数的极值点。

 最小二乘法跟梯度下降法都是通过求导来求损失函数的最小值,那它们有什么区别呢。

   相同


  1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
  2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:

                             

   其中为第i组数据的independent variable,为第i组数据的dependent variable,为系数向量。


   不同
  1.实现方法和结果不同:最小二乘法是直接对
求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。

 


猜你喜欢

转载自blog.csdn.net/u013185349/article/details/62225294