作业一:在一个10类的模式识别问题中,有3类单独满足多类情况1,其余的类别满足多类情况2。
问该模式识别问题所需判别函数的最少数目是多少?答案:将10类问题可看作4类满足多类情况1的问题,可将3类单独满足多类情况1的类找出来,剩下的7类全部划到4类中剩下的一个子类中。
再在此子类中,运用多类情况2的判别法则进行分类,此时需要7*(7-1)/2=21个判别函数。
故共需要4+21=25个判别函数。
作业二:一个三类问题,其判别函数如下:d1(x)=-x1, d2(x)=x1+x2-1, d3(x)=x1-x2-11.设这些函数是在多类情况1条件下确定的,绘出其判别界面和每一个模式类别的区域。
2.设为多类情况2,并使:d12(x)= d1(x), d13(x)= d2(x), d23(x)=d3(x)。
绘出其判别界面和多类情况2的区域。
3. 设d1(x), d2(x)和d3(x)是在多类情况3的条件下确定的,绘出其判别界面和每类的区域。
答案:123作业三:两类模式,每类包括5个3维不同的模式,且良好分布。
如果它们是线性可分的,问权向量至少需要几个系数分量?假如要建立二次的多项式判别函数,又至少需要几个系数分量?(设模式的良好分布不因模式变化而改变。
)答案:如果它们是线性可分的,则至少需要4个系数分量;如果要建立二次的多项式判别函数,则至少需要1025 C 个系数分量。
作业四:用感知器算法求下列模式分类的解向量w :ω1: {(0 0 0)T, (1 0 0)T, (1 0 1)T, (1 1 0)T}ω2: {(0 0 1)T, (0 1 1)T, (0 1 0)T, (1 1 1)T}答案:将属于ω2的训练样本乘以(-1),并写成增广向量的形式。
x①=(0 0 0 1)T,x②=(1 0 0 1)T,x③=(1 0 1 1)T,x④=(1 1 0 1)Tx⑤=(0 0 -1 -1)T,x⑥=(0 -1 -1 -1)T,x⑦=(0 -1 0 -1)T,x⑧=(-1 -1 -1 -1)T第一轮迭代:取C=1,w(1)=(0 0 0 0)T因w T(1)x①=(0 0 0 0)(0 0 0 1)T=0≯0,故w(2)=w(1)+x①=(0 0 0 1) 因w T(2)x②=(0 0 0 1)(1 0 0 1)T =1>0,故w(3)=w(2)=(0 0 0 1)T因w T(3)x③=(0 0 0 1)(1 0 1 1)T=1>0,故w(4)=w(3)=(0 0 0 1)T因w T(4)x④=(0 0 0 1)(1 1 0 1)T=1>0,故w(5)=w(4)=(0 0 0 1)T因w T(5)x⑤=(0 0 0 1)(0 0 -1 -1)T=-1≯0,故w(6)=w(5)+x⑤=(0 0 -1 0)T因w T(6)x⑥=(0 0 -1 0)(0 -1 -1 -1)T=1>0,故w(7)=w(6)=(0 0 -1 0)T 因w T(7)x⑦=(0 0 -1 0)(0 -1 0 -1)T=0≯0,故w(8)=w(7)+x⑦=(0 -1 -1 -1)T因w T(8)x⑧=(0 -1 -1 -1)(-1 -1 -1 -1)T=3>0,故w(9)=w(8)=(0 -1 -1 -1)T因为只有对全部模式都能正确判别的权向量才是正确的解,因此需进行第二轮迭代。
第二轮迭代:因w T(9)x①=(0 -1 -1 -1)(0 0 0 1)T=-1≯0,故w(10)=w(9)+x① =(0 -1 -1 0)T因w T(10)x②=(0 -1 -1 0)(1 0 0 1)T=0≯0,故w(11)=w(10)+x② =(1 -1 -1 1)T因w T(11)x③=(1 -1 -1 1)(1 0 1 1)T=1>0,故w(12)=w(11) =(1 -1 -1 1)T因w T(12)x④=(1 -1 -1 1)(1 1 0 1)T=1>0,故w(13)=w(12) =(1 -1 -1 1)T因w T(13)x⑤=(1 -1 -1 1)(0 0 -1 -1)T=0≯0,故w(14)=w(13)+x⑤ =(1 -1 -20)T因w T(14)x⑥=(1 -1 -2 0)(0 -1 -1 -1)T=3>0,故w(15)=w(14) =(1 -1 -2 0)T因w T(15)x⑧=(1 -1 -2 0)(0 -1 0 -1)T=1>0,故w(16)=w(15) =(1 -1 -2 0)T因w T(16)x⑦=(1 -1 -2 0)(-1 -1 -1 -1)T=2>0,故w(17)=w(16) =(1 -1 -2 0)T因为只有对全部模式都能正确判别的权向量才是正确的解,因此需进行第三轮迭代。
第三轮迭代:w(25)=(2 -2 -2 0);因为只有对全部模式都能正确判别的权向量才是正确的解,因此需进行第四轮迭代。
第四轮迭代: w(33)=(2 -2 -2 1)因为只有对全部模式都能正确判别的权向量才是正确的解,因此需进行第五轮迭代。
第五轮迭代: w(41)=(2 -2 -2 1)因为该轮迭代的权向量对全部模式都能正确判别。
所以权向量即为(2 -2 -2 1),相应的判别函数为123()2221d x x x x =--+ 作业五:编写求解上述问题的感知器算法程序。
程序源码: #include <iostream> using namespace std;int scale; //每个样本的维数,最多支持十维 int W1_N,W2_N; //第一类的个数以及第二类的个数double W1[1000],W2[1000];//第一、二类的所有样本的增广向量 int C;//初始的算法中的C 值double W[10];//初始的算法中的W 向量 int main() {cin>>scale>>W1_N>>W2_N;for(int i=0;i<W1_N*(scale+1);i++){cin>>W1[i];if(i%(scale+1)==2) //转化成增广向量W1[++i]=1;}for(int i=0;i<W2_N*(scale+1);i++){cin>>W2[i];W2[i]=-1*W2[i];if(i%(scale+1)==2) //转化成增广向量W2[++i]=-1;}scale=scale+1;cin>>C;for(int i=0;i<scale;i++)cin>>W[i];bool flag=false;while(!flag){bool flag1=true;for(int i=0;i<W1_N;i++){doubletmp=0.0;for(int j=0;j<scale;j++)tmp+=W1[i*scale+j]*W[j];if(tmp<=0){flag1=false;for(int j=0;j<scale;j++)W[j]=W[j]+W1[i*scale+j];}}for(int i=0;i<W2_N;i++){doubletmp=0.0;for(int j=0;j<scale;j++)tmp+=W2[i*scale+j]*W[j];if(tmp<=0){flag1=false;for(int j=0;j<scale;j++)W[j]=W[j]+W2[i*scale+j];}}if(flag1)flag=true;}cout<<”最后的权向量为:”<<endl;cout<<W[0];for(int i=1;i<scale;i++)cout<<" "<<W[i];cout<<endl;return 0;}程序运行截图:作业六:用多类感知器算法求下列模式的判别函数: ω1: (-1 -1)T ω2: (0 0)Tω3: (1 1)T将模式样本写成增广形式:x ①=(-1-1 1)T ,x ②=(00 1)T ,x ③=(1 1 1)T 取初始值w 1(1)=w 2(1)=w 3(1)=(0 0 0)T ,C=1。
第一轮迭代(k=1):以x ①=(-1 -1 1)T 作为训练样本。
d 1(1)=)1(1T w x ①=(0 0 0)(-1 -1 1)T =0 d 2(1)=)1(2T w x ①=(0 0 0)(-1 -1 1)T =0 d 3(1)=)1(3Twx ①=(0 0 0)(-1 -1 1)T =0因d 1(1)≯d 2(1),d 1(1)≯d 3(1),故w 1(2)=w 1(1)+x ①=(-1 -1 1)T w 2(2)=w 2(1)-x ①=(11 -1)T w 3(2)=w 3(1)-x ①=(11 -1)T第二轮迭代(k=2):以x ②=(0 0 1)T 作为训练样本d 1(2)=)2(1T w x ②=(-1 -1 1)(0 0 1)T =1 d 2(2)=)2(2T w x ②=(1 1 -1)(0 0 1)T =-1 d 3(2)=)2(3Twx ②=(11 -1)(0 0 1)T=-1因d 2(2)≯d 1(2),d 2(2)≯d 3(2),故w 1(3)=w 1(2)-x ②=(-1 -1 0)T w 2(3)=w 2(2)+x ②=(1 1 0)T w 3(3)=w 3(2)-x ②=(1 1 -2)T第三轮迭代(k=3):以x ③=(1 1 1)T 作为训练样本d 1(3)=)3(1T w x ③=(-1 -1 0)(1 1 1)T =-2d 2(3)=)3(2T w x ③=(1 1 0)(1 1 1)T =2 d 3(3)=)3(3Twx ③=(1 1 -2)(1 1 1)T=0因d 3(3)≯d 2(3),故 w 1(4)=w 1(3) =(-1 -1 0)T w 2(4)=w 2(3)-x ③=(0 0 -1)T w 3(4)=w 3(3)+x ③=(2 2 -1)T第四轮迭代(k=4):以x ①=(-1 -1 1)T 作为训练样本d 1(4)=)4(1T w x ①=(-1 -1 0)(-1 -1 1)T =2 d 2(4)=)4(2T w x ①=(0 0 -1)(-1 -1 1)T =-1 d 3(4)=)4(3Twx ①=(2 2 -1)(-1 -1 1)T=-5因d 1(4)>d 2(4),d 1(4)>d 3(4),故 w 1(5)=w 1(4) =(-1 -1 0)T w 2(5)=w 2(4) =(0 0 -1)T w 3(5)=w 3(4) =(2 2 -1)T第五轮迭代(k=5):以x ②=(0 0 1)T 作为训练样本d 1(5)=)5(1T w x ②=(-1 -1 0)(0 0 1)T =0 d 2(5)=)5(2T w x ②=(0 0 -1)(00 1)T =-1d 3(5)=)5(3T wx ②=(2 2 -1)(00 1)T=-1因d 2(5) ≯d 1(5),d 2(5) ≯d 3(5),故w 1(6)=w 1(5)-x ②=(-1 -1 -1) w 2(6)=w 2(5)+x ②=(0 0 0) w 3(6)=w 3(5)-x ②=(2 2 -2)第六轮迭代(k=6):以x ③=(1 1 1)T 作为训练样本d 1(6)=)6(1T w x ③=(-1 -1 -1)(1 1 1)T =-3 d 2(6)=)6(2T w x ③=(0 0 0)(1 1 1)T =0 d 3(6)=)6(3Twx ③=(2 2 -2)(1 1 1)T=2因d 3(6)>d 1(6),d 3(6)>d 2(6),故w 1(7)=w 1(6) w 2(7)=w 2(6) w 3(7)=w 3(6)第七轮迭代(k=7):以x ①=(-1 -1 1)T 作为训练样本d 1(7)=)7(1T w x ①=(-1 -1 -1)(-1 -1 1)T =1 d 2(7)=)7(2T w x ①=(0 0 0)(-1 -1 1)T =0 d 3(7)=)7(3Twx ①=(2 2-2)(-1 -1 1)T=-6因d 1(7)>d 2(7),d 1(7)>d 3(7),分类结果正确,故权向量不变。