人工智能课内实验报告(四)
班级: 姓名: 学号:
实验题目:
神经网络分类器
实验目的
通过编写神经网络分类器,掌握神经网络的分类方法; 掌握BP 算法及其具体应用。
实验内容
本次实验是对在和不在正弦函数曲线上的两类点进行分类。所使用的算法是神经网络中的BP 算法。
实验原理及算法描述
线性分类器不能解决非线性问题,因此必须使用非线性分类器解决非线性问题。 非线性分类常采用神经网络算法,本次实验中使用的是BP 算法。
BP (Back Propagation) 神经网络是一种神经网络学习算法。其由输入层、隐层、输出层组成的阶层型神经网络,隐层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight )。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。 算法描述: 输入层:
单元i 的输入:x ;
i
单元数量:d ; 单元i 的输出:x ;
i
单元i 的激活函数:线性函数; 隐层: 单元j 的输入:netj ; 单元数量:nH ;
d
net j =∑ωji x i +ωj 0=ωt j x
i =1
x =(x 0, x 1,...., x d ) t , x 0=1
ωj =(ωj 0, ωj 1,...., ωjd ) t
单元j 的输出:
y j =f (net j ) ;
单元j 的激活函数:非线性函数; 输出层:
单元k 的输入:
net k ;
单元数量:c ;
net k =∑ωkj y j +ωk 0=ωk t y
j =1
n H
y =(y 0, y 1,...., y n H ) t , y 0=1
ωk =(ωk 0, ωk 1,...., ωkn ) t
H
单元k 的输出:z
k
=f (net k )
单元k 的激活函数:非线性函数 两层神经网络图如下:
分析:
(1)给定隐层单元及输出层单元的激活函数,一个神经网络就可以实现一个对输入特征向量x 的非线性映射。因此,神经网络本质上是一个非线性函数。 (2)给定隐层单元及输出层单元的激活函数,该非线性函数所对应的映射关系完全由权系数决定。不同的权系数对应不同的非线性映射。
(3)神经网络学习的目的,就是根据已知的训练样本,确定神经网络的权系数。这一过程称为训练过程。在训练过程结束后,对于新样本x ,根据神经网络的输出进行判决。
(4)对于C 类分类问题,神经网络的输出为z
k
(x ), k =1,..., c 。神经网络的判决
规则为:如果z (x ) ≥z (x ), l =1,..., c , l ≠k ,则判x 属于wk 。
k l
(5)令g (x ) =z (x ), k =1,..., c ,可以看出神经网络实际上实现了C 个非线性k k 的鉴别函数,并根据鉴别函数的取值进行分类。
(6)神经网络的训练目标:调整权系数w ,即所有的wkj 及wij ,使得对于训练集中的每一个训练样本(x,t),网络的输出尽可能满足:
⎛z 1(x ) ⎫⎛t 1⎫z (x ) = ... ⎪= ... ⎪=t
⎪ ⎪ z (x ) ⎪ t ⎪⎝c ⎭⎝c ⎭
(7)优化准则:对于样本集D ,使下述误差函数取得最小值:
J (ω) =∑J x (ω)
x ∈D
1c 2
J x (ω) =∑(t k -z k (x ) )
2k =1权系数的调整:
∂J
ωkj ←ωkj -η
∂ωkj
∂J
=δk y j ,δk =-(t k -z k )f ' (net k ) ∂ωkj
c
∂J ∂J
ωji ←ωji -η=δj x i ,δj =f '(net j ) ∑δk ωkj
∂ωji ∂ωji k =1
BP 算法描述:
对于给定的样本集D={(x,t)},初始化网络结构d*nH*c。初始化权系数w ,学习效率η、阈值θ。
随机从D 中取出一个样本(x,t),根据该样本更新权系数w :
∂J
ωkj ←ωkj -η
∂ωkj
∂J
ωji ←ωji -η
∂ωji
计算∆J
=J (ωpre ) -J (ω) ,如果∆J
w 为最
优。否则转第2步继续进行循环。
实验结果
运行程序
选择初始参数,输入正弦函数参数:
采样文件输出至当前目录下的initSample.dat 文件中,第一列为x 坐标,第二列为y 坐标,第三列为t 值,在正弦曲线上为1,不在为-1:
再选择训练样本,屏幕上输出最优权值,第一行wkj 为隐层到输出层的权值,第二、三行wij 为输入层到隐层的权值: TestSample.dat 如下:
其中第三列大于0的点在曲线上,小于0的点不在曲线上。
结果分析:
通过测试,测试样本中92%的数据测试正确,有8%的数据判错。
实验总结
通过本次实验,我对神经网络分类器的原理有了更加深刻的体会。
人工智能课内实验报告(四)
班级: 姓名: 学号:
实验题目:
神经网络分类器
实验目的
通过编写神经网络分类器,掌握神经网络的分类方法; 掌握BP 算法及其具体应用。
实验内容
本次实验是对在和不在正弦函数曲线上的两类点进行分类。所使用的算法是神经网络中的BP 算法。
实验原理及算法描述
线性分类器不能解决非线性问题,因此必须使用非线性分类器解决非线性问题。 非线性分类常采用神经网络算法,本次实验中使用的是BP 算法。
BP (Back Propagation) 神经网络是一种神经网络学习算法。其由输入层、隐层、输出层组成的阶层型神经网络,隐层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight )。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。 算法描述: 输入层:
单元i 的输入:x ;
i
单元数量:d ; 单元i 的输出:x ;
i
单元i 的激活函数:线性函数; 隐层: 单元j 的输入:netj ; 单元数量:nH ;
d
net j =∑ωji x i +ωj 0=ωt j x
i =1
x =(x 0, x 1,...., x d ) t , x 0=1
ωj =(ωj 0, ωj 1,...., ωjd ) t
单元j 的输出:
y j =f (net j ) ;
单元j 的激活函数:非线性函数; 输出层:
单元k 的输入:
net k ;
单元数量:c ;
net k =∑ωkj y j +ωk 0=ωk t y
j =1
n H
y =(y 0, y 1,...., y n H ) t , y 0=1
ωk =(ωk 0, ωk 1,...., ωkn ) t
H
单元k 的输出:z
k
=f (net k )
单元k 的激活函数:非线性函数 两层神经网络图如下:
分析:
(1)给定隐层单元及输出层单元的激活函数,一个神经网络就可以实现一个对输入特征向量x 的非线性映射。因此,神经网络本质上是一个非线性函数。 (2)给定隐层单元及输出层单元的激活函数,该非线性函数所对应的映射关系完全由权系数决定。不同的权系数对应不同的非线性映射。
(3)神经网络学习的目的,就是根据已知的训练样本,确定神经网络的权系数。这一过程称为训练过程。在训练过程结束后,对于新样本x ,根据神经网络的输出进行判决。
(4)对于C 类分类问题,神经网络的输出为z
k
(x ), k =1,..., c 。神经网络的判决
规则为:如果z (x ) ≥z (x ), l =1,..., c , l ≠k ,则判x 属于wk 。
k l
(5)令g (x ) =z (x ), k =1,..., c ,可以看出神经网络实际上实现了C 个非线性k k 的鉴别函数,并根据鉴别函数的取值进行分类。
(6)神经网络的训练目标:调整权系数w ,即所有的wkj 及wij ,使得对于训练集中的每一个训练样本(x,t),网络的输出尽可能满足:
⎛z 1(x ) ⎫⎛t 1⎫z (x ) = ... ⎪= ... ⎪=t
⎪ ⎪ z (x ) ⎪ t ⎪⎝c ⎭⎝c ⎭
(7)优化准则:对于样本集D ,使下述误差函数取得最小值:
J (ω) =∑J x (ω)
x ∈D
1c 2
J x (ω) =∑(t k -z k (x ) )
2k =1权系数的调整:
∂J
ωkj ←ωkj -η
∂ωkj
∂J
=δk y j ,δk =-(t k -z k )f ' (net k ) ∂ωkj
c
∂J ∂J
ωji ←ωji -η=δj x i ,δj =f '(net j ) ∑δk ωkj
∂ωji ∂ωji k =1
BP 算法描述:
对于给定的样本集D={(x,t)},初始化网络结构d*nH*c。初始化权系数w ,学习效率η、阈值θ。
随机从D 中取出一个样本(x,t),根据该样本更新权系数w :
∂J
ωkj ←ωkj -η
∂ωkj
∂J
ωji ←ωji -η
∂ωji
计算∆J
=J (ωpre ) -J (ω) ,如果∆J
w 为最
优。否则转第2步继续进行循环。
实验结果
运行程序
选择初始参数,输入正弦函数参数:
采样文件输出至当前目录下的initSample.dat 文件中,第一列为x 坐标,第二列为y 坐标,第三列为t 值,在正弦曲线上为1,不在为-1:
再选择训练样本,屏幕上输出最优权值,第一行wkj 为隐层到输出层的权值,第二、三行wij 为输入层到隐层的权值: TestSample.dat 如下:
其中第三列大于0的点在曲线上,小于0的点不在曲线上。
结果分析:
通过测试,测试样本中92%的数据测试正确,有8%的数据判错。
实验总结
通过本次实验,我对神经网络分类器的原理有了更加深刻的体会。