模式识别分类器学习(二)

来源:互联网 发布:nomachi是什么软件 编辑:程序博客网 时间:2024/05/22 20:46

 接上次记的, 到几何分类器, 书里关于几何分类器的内容比较多,其中包括线性分类器和非线性分类器。线性分类器有:感知器算法、增量校正算法、LMSE分类算法、Fisher分类。非线性分类器有:势函数法。

我一看到这么多的几何分类器我就晕了,只看了感知器算法。所以我也只记下感知器算法。而神经网络,书中只介绍了三层BP神经网络,所以我也只记录BP神经网络。

 

三、几何分类器

假设有M类模式w1, w2, ..., wM。对于d维空间种的M个类别,就要给出M个判别函数:d1(X), d2(X), ...,d3(X)。若X属于第i类,则

di(X) > dj(X)     j = 1, 2, ...,M; i != j。

几何分类

 

1、感知器算法(奖罚)

采用判别函数最大值的方法来训练,即对于M个类别,就有M个判别函数。

设有M类样品w1, w2, ...,wM,并且在k此迭代时出现的样品X(k)∈wi,如果采用感知器算法,则M个类别函数

几何分类

都应加以计算。

①对于di[X(k)] > dj[X(k)],  j=1,2,...,M, j != i,则权矢量不必加以修正。

②若对于di[X(k)] <= dj[X(k)],则按下式修正权矢量

几何分类

C为一修正参数, 可以随便取, 例如: 1, 0.5

实验步骤:

训练学习:

①设各个权矢量的初始值为0,即W0 = W1 = W2 = ... = WM = 0, (WM(wm1, wm2, ..., wmn));

②把样品库中样品特征和各个W都扩展为增1形式(WM(wm1, wm2, ..., wmn, 1))。设i = 1,k = 1

③把第i类物品的第k个样品X(x1, x2,..., xn)代入每个判别函数di(X)。

④若存在di(X) < dj(X)     ,k = 1, 2, ..., M, i != j

几何分类

 把所有符合上面条件的

 Wj(X) = Wj(X) - C * X.

 Wi(X) = Wi(X) + C * X

  1. if (当前类没有下一个样品)
  2. {
  3.     if (没有下一类)
  4.         转⑤;
  5.     else
  6.     {
  7.         i++;
  8.         k = 1;
  9.         转③;
  10.     }
  11. }
  12. else
  13. {
  14.     k++;
  15.     转③;
  16. }

⑤i = 1, k = 1, 重复③直到每个Wi不再改变或到指定的重复次数

识别:

把待检测的样品扩展成增1矩阵,代入各判别函数,函数值最大的就是待检测样品所属分类。

几何识别,样品不需要太多。

 

四、神经网络分类器

人工神经元相当于一个多输入单输出的飞线性阈值器件。这里X1, X2, ..., Xn表示它的n个输入,W1, W2, ..., Wn表示权值。∑WiXi成为激活值。

O = f(∑WiXi - θ)

为这个人工神经元的输出,其中θ为这个人工神经元的阈值,如果输入的激活值大于这个阈值,则人工神经元被激活。

f称为激活函数.

比较常用的激活函数可归结为三种形式

1)阈值函数

BP神经网络

2)Sigmoid函数(S型函数,人工神经网络最常用的激活函数,a为Sigmoid函数的斜率参数,通过改变参数a, 可以获取不同斜率的Sigmoid函数。当斜率参数接近无穷大时,此函数转化为简单的阈值函数,但Sigmoid函数对应0到1的一个连续区域,而阈值函数是0,1两点。Sigmoid是可微的,阈值不可)

BP神经网络

3)分段线性函数

BP神经网络

神经网络结构主要分两大类,分层和相互连接型。

分层是将神经网络按功能分成若干层,一般有输入层,中间层,输出层。分层分三种:简单的前向网络,具有反馈的前向网络以及层内有相互连接的前向网络。BP网络是一个典型的前向网络。BP网络按有教师学习方式进行训练,当一对学习模式提供给网络后,其神经元的激活值将从输入层经各中间层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。按减少希望输出与实际输出误差的原则,从输出层经各中间层、最后回到输入层逐层修正各连接权,此为误差逆传播算法。BP网络学习过程主要由如下四部分组成。

①输入模式顺传播(输入模式由输入层经中间层向输出层传播计算)。

②输出误差逆传播(输出的误差由输出层经中间层传向输入层)。

③循环记忆训练(反复进行①②N次)

④学习结果判别(判定全局误差是否趋向极小值)

对每一个类别的每一个样品都进行如下训练。

(如果进行网络的第一次训练,要输入权值Wij, Wjt, 阈值θj, θt,学习系数α, β初始值。一般权值取(-1, 1),或 [-2.4 / F, 2.4 / F]之间的随机数,阈值取0.01-0.8,学习系数取0 < α, β < 1。)
1、输入模式顺传播

①确定输入向量(就是学习样品的特征)

BP神经网络

n是输入层单元数(特征数)

②确定期望输出向量(就是输出的特征吧,我也不了解得很清楚,如果你向它输出数字,那你可以定它为数字的二进制形式的每一位)

BP神经网络

q是输出层单元数

③计算中间层各神经元的激活值sj;

BP神经网络

Wij是输入层至中间层的连接权,xi是样品每个特征值,p是中间层单元数,θ j为中间层每个单元的阈值。

激活函数用S型函数

BP神经网络

④计算中间层j单元的输出值。

BP神经网络

θ j也会在学习过程中不断被修正

⑤计算输出层第t个单元的激活值ot

BP神经网络

⑥计算输出层第t个单元的实际输出值ct

 

BP神经网络

Wjt是中间层至输出层的权值,θ t是输出层单元阈值,f是s形激活函数,q是输出层单元数

2. 输出误差的逆传播

①输出层的校正误差为

BP神经网络

t=1, 2, ..., q(q是输出层单元数),yt是希望输出,ct是实际输出,f'是对输出层函数的导数。

②中间层的校正误差为

BP神经网络

j=1, 2, ..., p(p中间层单元数)

③对于输出层至中间层连接权和输出层阈值的校正量

BP神经网络

α是学习系数

④中间层至输入层的校正量为

BP神经网络

β是学习系数
注意:

(1)网络的层数。三层网络已经可以实现多维的映射,即能逼近任何有理函数。这实际上给了一个设计BP网络的基本原则。想增加精度的方法可以通过增加中间层中的神经元树木来获得,代替增加层数。一般情况下先考虑增加中间层的神经元数。

(2)中间层的神经元数。增加中间层神经元数可以提高精度,但增加多少?比较实际的做法是令中间层的神经元数设置为输入层的两倍,然后适当+上一些余量。

(3)初值的选择。如果进行网络的第一次训练,要输入权值Wij, Wjt, 阈值θj, θt,学习系数α, β初始值。一般权值取(-1, 1),或 [-2.4 / F, 2.4 / F]之间的随机数,阈值取0.01-0.8,学习系数取0 < α, β < 1。

 

哎~终于写完分类了........我在差不多写完的时候不小心按了QQ的一个按钮,把我快要写完的网页弹到别的网址去,害我重写了一次!!!!!痛苦啊!不过写完了,心情还不错,如果有错误的地方,请指出,谢谢。

 

转载请留言并注明啊,写个东西不容易呢,谢谢。

原创粉丝点击