勢函數法


勢函數主要用於確定分類面,其思想來源於物理。

 

1 勢函數法基本思想

  • 假設要划分屬於兩種類別$\omega_1$和$\omega_2$的模式樣本,這些樣本可看成是分布在$n$維模式空間中的點$x_k$。
  • 把屬於$\omega_1$的點比擬為某種能源點,在點上,電位達到峰值。
  • 隨着與該點距離的增大,電位分布迅速減小,即把樣本$x_k$附近空間$x$點上的電位分布,看成是一個勢函數$K(x, x_k)$。
  • 對於屬於$\omega_1$的樣本集群,其附近空間會形成一個"高地",這些樣本點所處的位置就是"山頭"。
  • 同理,用電位的幾何分布來看待屬於$\omega_2$的模式樣本,在其附近空間就形成"凹地"。
  • 只要在兩類電位分布之間選擇合適的等高線,就可以認為是模式分類的判別函數。

 

2. 判別函數的產生

  • 模式分類的判別函數可由分布在模式空間中的許多樣本向量$\{x_k,k=1,2,\cdots \text{且},x_k\in \omega_1\cup w_2\}$的勢函數產生。
  • 任意一個樣本所產生的勢函數以$K(x,x_k)$表征,則判別函數$d(x)$可由勢函數序列$K(x, x_1),K(x,x_2),\cdots$來構成,序列中的這些勢函數相應於在訓練過程中輸入機器的訓練模式樣本$x_1,x_2,\cdots$。
  • 在訓練狀態,模式樣本逐個輸入分類器,分類器就連續計算相應的勢函數,在第$k$步迭代時的積累位勢決定於在該步前所有的單獨勢函數的累加。
  • 以$K(x)$表示積累位勢函數,若加入的訓練樣本$x_{k+1}$是錯誤分類,則積累函數需要修改,若是正確分類,則不變。

 

3.判別函數產生逐步分析

    設初始勢函數$K_0(x) = 0$

    第一步:加入第一個訓練樣本$x_1$,

則有  

\[{K_1}(x) = \left\{ {\begin{array}{*{20}{c}}
{K(x,{x_1})}&{{\rm{if}}\;{x_1} \in {\omega _1}}\\
{ - K(x,{x_1})}&{{\rm{if}}\;{x_1} \in {\omega _2}}
\end{array}} \right.\]

這里第一步積累勢函數$K_1(x)$描述了加入第一個樣本時的邊界划分。當樣本屬於$\omega_1$時,勢函數為正;當樣本屬於$\omega_2$時,勢函數為負。

      第二步:加入第二個訓練樣本$x_2$,

則有

  1. 若$x_2\in \omega_1$且$K_1(x_2)>0$,或$x_2\in \omega_2$且$K_1(x_2)<0$,則分類正確,此時$K_2(x) = K_1(x)$,即積累勢函數不變。
  2. 若$x_2\in \omega_1$且$K_1(x——2)<0$,則\[K_2(x)=K_1(x)+K(x,x_2)=\pm K(x,x_1)+K(x,x_2)\]
  3. 若$x_2\in \omega_2$且$K_1(x_2)>0$,則

\[K_2(x)=K_1(x)-K(x,x_2)=\pm K(x,x_1)-K(x,x_2)\]

     以上(ii)、(iii)兩種情況屬於錯分。假如$x_2$處於$K_1(x)$定義的邊界的錯誤一側,則當$x\in \omega_1$時,積累位勢$K_2(x)$要加$K(x, x_2)$,當$x\in \omega_2$時,積累位勢$K_2(x)$要減$K(x, x_2)$。

      第$K$步:設$K_k(x)$為加入訓練樣本$x_1,x_2,\cdots,x_k$后的積累位勢,則加入第$(k+1)$個樣本時,$K_{k+1}(x)$決定如下:

1. 若$x_{k+1}\in \omega_1$且$K_k(x_{k+1})>0$,或$x_{k+1}\in \omega_2 $且$K_k(x_{k+1})<0$,則分類正確,此時$K_{k+1}(x) = K_k(x)$,即積累位勢不變。

2. 若$x_{k+1}\in \omega_1$且$K_k(x_{k+1})<0$,則$K_{k+1}(x)=K_k(x)+K(x,x_{k+1})$;

3. 若$x_{k+1}\in \omega_2$且$K_k(x_{k+1})>0$,則$K_{k+1}(x)=K_k(x)-K(x,x_{k+1})$.

     因此,積累位勢的迭代運算可寫成:$K_{k+1}(x)=K_k(x)+r_{k+1}K(x,x_{k+1})$,$r_{k+1}$為校正系數:     

\[{r_{k + 1}} = \left\{ {\begin{array}{*{20}{c}}
0&{if\;{x_{k + 1}} \in {\omega _1}\;{\rm{and}}\;{K_k}({x_{k + 1}}) > 0}\\
0&{if\;{x_{k + 1}} \in {\omega _2}\;{\rm{and}}\;{K_k}({x_{k + 1}}) < 0}\\
1&{if\;{x_{k + 1}} \in {\omega _1}\;{\rm{and}}\;{K_k}({x_{k + 1}}) < 0}\\
{ - 1}&{if\;{x_{k + 1}} \in {\omega _2}\;{\rm{and}}\;{K_k}({x_{k + 1}}) > 0}
\end{array}} \right.\]

      若從給定的訓練樣本集${x_1, x_2, \cdots, x_k, \cdots}$中去除不使積累位勢發生變化的樣本,即使$K_j(x_{j+1})>0$且$x_{j+1}\in \omega_1$,或$K_j(x_{j+1})<0$且$x_{j+1}\in \omega_2$的那些樣本,則可得一簡化的樣本序列$\{ {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}} \over x} _1},{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}} \over x} _2}, \ldots ,{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}} \over x} _j}, \ldots \} $,它們完全是校正錯誤的樣本。此時,上述迭代公式可歸納為:

\[{K_{k + 1}}(x) = \sum\limits_{{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}}
\over x} }_j}} {{a_j}K(x,{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}}
\over x} }_j})} \]

其中         

\[{a_j} = \left\{ {\begin{array}{*{20}{c}}
{ + 1}&{for\;{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}}
\over x} }_j} \in {\omega _1}}\\
{ - 1}&{for\;{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\frown$}}
\over x} }_j} \in {\omega _2}}
\end{array}} \right.\]

也就是說,由$k+1$個訓練樣本產生的積累位勢,等於$\omega_1$類和$\omega_2$類兩者中的校正錯誤樣本的總位勢之差。

 

      從勢函數可以看出,積累位勢起着判別函數的作用:當$x_{k+1}$屬於$\omega_1$時,$K_k(x_{k+1})>0$;當$x_{k+1}$屬於$\omega_2$時,$K_k()x_{k+1}<0$,則積累位勢不做任何修改就可用作判別函數。

由於一個模式樣本的錯誤分類可造成積累位勢在訓練時的變化,因此勢函數算法提供了確定$\omega_1$和$\omega_2$兩類判別函數的迭代過程。判別函數表達式:取$d(x)=K(x)$,則有:$d_{k+1}(x)= d_k(x)+r_{k+1}K(x, x_{k+1})$.

 

4 構成勢函數的兩種方式:

    第一類勢函數和第二類勢函數 

     第一類勢函數

     可用對稱的有限多項式展開,即:

\[K(x,{x_k}) = \sum\limits_{i = 1}^m {{\phi _i}(x){\phi _i}({x_k})} \]

其中{}在模式定義域內為正交函數集。將這類勢函數代入判別函數,有:

\[{d_{k + 1}}(x) = {d_k}(x) + {r_{k + 1}}\sum\limits_{i = 1}^m {{\phi _i}({x_{k + 1}}){\phi _i}(x)}  = {d_k}(x) + \sum\limits_{i = 1}^m {{r_{k + 1}}{\phi _i}({x_{k + 1}}){\phi _i}(x)} \]

得迭代關系:

\[{d_{k + 1}}(x) = \sum\limits_{i = 1}^m {{C_i}(k + 1){\phi _i}(x)} \]

其中

\[{C_i}(k + 1) = {C_i}(k) + {r_{k + 1}}{\phi _i}({x_{k + 1}})\]

因此,積累位勢可寫成:

\[{K_{k + 1}}(x) = \sum\limits_{i = 1}^m {{C_i}(k + 1){\phi _i}(x)} \]

$Ci$可用迭代式求得。 

     第二類勢函數:

     選擇雙變量$x$和$x_k$的對稱函數作為勢函數,即$K(x, x_k) = K(x_k, x)$,並且它可展開成無窮級數,例如:

(a)  $K(x,{x_k}) = {e^{ - \alpha {{\left\| {x - {x_k}} \right\|}^2}}}$

(b)  $K(x,{x_k}) = \frac{1}{{1 + \alpha {{\left\| {x - {x_k}} \right\|}^2}}}$, $\alpha$是正常數

(c)  $K(x,{x_k}) = \left| {\frac{{\sin \alpha {{\left\| {x - {x_k}} \right\|}^2}}}{{\alpha {{\left\| {x - {x_k}} \right\|}^2}}}} \right|$

 

5.勢函數法

實例1:用第一類勢函數的算法進行分類

  1. 選擇合適的正交函數集{}

選擇Hermite多項式,其正交域為(-∞, +∞),其一維形式是

其正交性:

其中,Hk(x)前面的乘式為正交歸一化因子,為計算簡便可省略。因此,Hermite多項式前面幾項的表達式為

H0(x)=1,        H1(x)=2x,        H2(x)=4x2-2,

H3(x)=8x3-12x,        H4(x)=16x4-48x2+12

  1. 建立二維的正交函數集

二維的正交函數集可由任意一對一維的正交函數組成,這里取四項最低階的二維的正交函數

  1. 生成勢函數

按第一類勢函數定義,得到勢函數

其中

  1. 通過訓練樣本逐步計算累積位勢K(x)

給定訓練樣本:ω1類為x=(1 0)T, x=(0 -1)T

ω2類為x=(-1 0)T, x=(0 1)T

累積位勢K(x)的迭代算法如下

第一步:取x=(1 0)T∈ω1,故

K1(x)=K(x, x)=1+4x1·1+4x2·0+16x1x2·1·0=1+4x1

第二步:取x=(0 -1)T∈ω1,故K1(x)=1+4·0=1

因K1(x)>0且x∈ω1,故K2(x)=K1(x)=1+4x1

第三步:取x=(-1 0)T∈ω2,故K2(x)=1+4·(-1)=-3

因K2(x)<0且x∈ω2,故K3(x)=K2(x)=1+4x1

第四步:取x=(0 1)T∈ω2,故K3(x)=1+4·0=1

因K3(x)>0且x∈ω2

故K4(x)=K3(x)-K(x,x)=1+4x1-(1+4x2)=4x1-4x2

將全部訓練樣本重復迭代一次,得

第五步:取x=x=(1 0)T∈ω1,K4(x)=4

故K5(x)=K4(x)=4x1-4x2

第六步:取x=x=(0 -1)T∈ω1,K5(x)=4

故K6(x)=K5(x)=4x1-4x2

第七步:取x=x=(-1 0)T∈ω2,K6(x)=-4

故K7(x)=K6(x)=4x1-4x2

第八步:取x=x=(0 1)T∈ω2,K7(x)=-4

故K8(x)=K7(x)=4x1-4x2

以上對全部訓練樣本都能正確分類,因此算法收斂於判別函數

d(x)= 4x1-4x2

 

實例2:用第二類勢函數的算法進行分類

 

 

選擇指數型勢函數,取α=1,在二維情況下勢函數為

這里:ω1類為x=(0 0)T, x=(2 0)T

ω2類為x=(1 1)T, x=(1 -1)T

可以看出,這兩類模式是線性不可分的。算法步驟如下:

第一步:取x=(0 0)T∈ω1,則

K1(x)=K(x,x)=

第二步:取x=(2 0)T∈ω1

因K1(x)=e-(4+0)=e-4>0,

故K2(x)=K1(x)=

第三步:取x=(1 1)T∈ω2

因K2(x)=e-(1+1)=e-2>0,

故K3(x)=K2(x)-K(x,x)=

第四步:取x=(1 -1)T∈ω2

因K3(x) =e-(1+1)-e-(0+4)=e-2-e-4>0,

故K4(x)=K3(x)-K(x,x)

=

需對全部訓練樣本重復迭代一次

第五步:取x=x=(0 0)T∈ω1,K4(x)=e0-e-2-e-2=1-2e-2>0

故K5(x)=K4(x)

第六步:取x=x=(2 0)T∈ω1,K5(x)=e-4-e-2-e-2=e-4-2e-2<0

故K6(x)=K5(x)+K(x,x)

=

第七步:取x=x=(1 1)T∈ω2,K6(x)=e-2-e0-e-4+e-2=2e-2-e-4-1<0

故K7(x)=K6(x)

第八步:取x=x=(1 -1)T∈ω2,K7(x)=e-2-e-4-e0+e-2=2e-2-e-4-1<0

故K8(x)=K7(x)

第九步:取x=x=(0 0)T∈ω1,K8(x)=e0-e-2-e-2+e-4=1+e-4-2e-2>0

故K9(x)=K8(x)

第十步:取x=x=(2 0)T∈ω1,K9(x)=e-4-e-2-e-2+e0=1+e-4-2e-2>0

故K10(x)=K9(x)

經過上述迭代,全部模式都已正確分類,因此算法收斂於判別函數

勢函數分類算法評價:

1.用第二類勢函數,當訓練樣本維數和數目都較高時,需要計算和存儲的指數項較多。

2. 正因為勢函數由許多新項組成,因此有很強的分類能力。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM