H-K算法即通过最小均方误差求解最优权向量的过程,相较感知器算法固定增量的迭代,H-K算法可以在模式线性不可分的情况下停止迭代。那么代价呢就是需要计算高维逆矩阵,?进行分析。
对于给定的N个n维模式,如果数据线性可分,则必存在w(n+1维)使得下列成立:
将属于ω2的模式乘以(-1),可得对于全部模式都有的条件。
设两类模式的训练样本总数为N,写成增广形式,则有不等式组:
Xw> 0一定成立
其中0是零向量!
那么H-K算法就是求解 成立的最小w,其中b为大于0的N维列向量。因为是一个超定方程,故方程没有唯一解,H-K算法的目的就是使用最小二乘法求解w的最小值。
采用梯度法,定义准则函数:
求的损失函数对w与b的偏导:
可得
这里X#称为X的伪逆,即只要求得b,就能解出w的值。
根据上述约束条件,在每次迭代中,b(k)的全部分量只能是正值。由J的准则函数式,J也是正值,因此,当取校正增量C为正值时,为保证每次迭代中的b(k)都是正值,应使偏导数为非正值。在此条件下,准则函数J的微分为:
满足如下条件:
由b的迭代式和微分,有:
将此式代入w=X#b,有:
令e(k) = X*w(k) – b(k)。
H-K算法的迭代过程如下:
设置初值b(1),所有分量均为正数,则:
w(1) = X#*b(1)
e(k) = X*w(k) – b(k)
w(k+1) = w(k) + X#*{C[Xw(k) – b(k) + |Xw(k) – b(k)|]}
= w(k) + CX#[e(k) + |e(k)|]
其中
X#e(k) = X#[Xw(k) – b(k)] = (XTX)-1XT[Xw(k) – b(k)]
= w(k) –X#b(k) = 0
因此
w(k+1) = w(k) + CX#|e(k)|
b(k+1) = b(k) + C[Xw(k) – b(k) + |Xw(k) – b(k)|]
= b(k) + C[e(k) + |e(k)|]
解答过程:
若e(k)>0,存在解,可以继续迭代逼近最优解。
若e(k)=0,得到最优解。
若e(k)全部分量全为0,无解
若e有的分量大于0,有的分量小于0 ,则在各分量都变成零,或者停止由负值转变成正值时,停止。