感知器算法实验.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
感知器算法实验.pdf 本实验的主要目的是了解线性分类器的分类原理,掌握感知器算法和BP算法,并通过实验对输入数据进行分类。 一、实验目的: 1. 理解线性分类器的分类原理。 2. 掌握感知器算法,利用它对输入的数据进行分类。 3. 理解BP算法,使用BP算法对输入数据进行分类。 二、实验原理: 1. 感知器算法: 感知器算法是通过训练模式的迭代和学习算法,产生线性可分的模式判别函数。它通过对训练模式样本集的“学习”得出判别函数的系数解。在本次实验中,我们主要是采用硬限幅函数进行分类。 感知器的训练算法如下: 设输入矢量 X = [x1, x2, …, xn],加权矢量 W = [w1, w2, …, wn],则神经元的输出可通过下式来计算: y = σ(W^T * X) (1) 这里对于训练结束我们判断的依据是实际输出值与理想预期值之间误差的均方值最小。定义 εk = yk -Tk,这里的Tk是理想输出值。则可以推出: Ek = ∑(yk - Tk)^2 (2) 可证存在最佳的加权矢量 W*,使 Ek 达到最小。解得: W* = (XTX)^-1 * XT * d (3) 式(3)给出了求最佳加权矢量的方法,但是需要做大量的统计计算,并且需要解决高阶矩阵求逆的问题,这些都是非常困难的。于是我们给出一种递推求解的方法: W(k+1) = W(k) + α * Ek * X(k) (4) 2. BP 算法: 由于硬限幅函数是非可微函数,不能实现多层神经网络的一种有效的 LMS学习算法。而BP算法中所用到的是 Sigmoid型函数,它既具有完成分类所需的非线性特性,又具有实现LMS算法所需的可微特性。采用 S型函数的神经元的输入和输出之间的关系为: f(u) = 1 / (1 + e^(-u)) (5) 采用了 S型函数就可将用于单神经元的 LMS学习算法适当推广,得到一种适用于前向多层神经网络的有效学习算法。 我们现在研究一个采用 S型函数的前向三层神经网络来说明其原理。对于训练样本 p,它的输入是 N维矢量 X,X = [x1, x2, …, xn],网络的第一、二、三层分别包括 J、K、M 个神经元,它的总输出是一个 M维矢量,Y = [y1, y2, …, ym]。第 i 层到第 i+1 层之间的权重系数用 wij 来表示。可设前向三层神经网络输出各个分量的理想值是 pid,i=0,1,…,M-1,而这些分量的实际值是 yi,i=0,1,…,M-1,理想值和实际值之间的误差是 εi = yi - pid,i=0,1,…,M-1。各输出误差的平方和可以表示为: E = ∑(yi - pid)^2 (6) 现在我们希望改变网络中的各个加权系数 wij,使得 E 尽可能的减小。为此我们可以采取最陡下降算法的公式来调整权重系数 wij。公式如下: Δwij = -α * ∂E/∂wij (7) 其中 α 是学习的步幅,它应随学习过程而变化。 对于通用神经层,它的各个输出 Oli 和各个输入 xli 之间的关系可以表示为: Oli = f(∑(wij * xli)) (8) 如果设 wij = wlil,then: Oli = f(∑(wij * xli)) (9) 经推倒可得权系数调整的递推公式如下: wij(k+1) = wij(k) + Δwij(k) (10) wij(k+1) = wij(k) - α * ∂E/∂wij(k) (11) 对于输出层: wij(k+1) = wij(k) - α * ∂E/∂wij(k) (12) 本实验的结果表明,感知器算法和BP算法都是有效的分类算法,可以对输入数据进行分类。但是,BP算法的学习过程中需要解决高阶矩阵求逆的问题,这些都是非常困难的。
- 粉丝: 72
- 资源: 5万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助