Main Content

线性不可分向量

2 输入硬限制神经元无法对 5 个输入向量正确分类,因为它们是线性不可分的。

X 中的五个列向量中的每一个都定义了一个二元素输入向量,行向量 T 定义了向量的目标类别。使用 PLOTPV 绘制这些向量。

X = [ -0.5 -0.5 +0.3 -0.1 -0.8; ...
      -0.5 +0.5 -0.5 +1.0 +0.0 ];
T = [1 1 0 0 0];
plotpv(X,T);

感知器必须将 X 中的 5 个输入向量正确分类为由 T 定义的两个类别。因为这两种输入向量无法由一条直线分隔,感知器将无法进行上述分类。

在此处创建和配置初始感知器。(配置步骤通常是可选的,因为它由 ADAPT 和 TRAIN 自动执行。)

net = perceptron;
net = configure(net,X,T);

将神经元的最初分类尝试添加到绘图中。初始权重设置为零,因此任何输入都会生成相同的输出,而且分类线甚至不会出现在图上。

hold on
plotpv(X,T);
linehandle = plotpc(net.IW{1},net.b{1});

ADAPT 在基于输入和目标数据进行学习后,返回一个新网络、输出和误差。此循环允许网络重复自适应、绘制分类线,并在 25 次迭代后停止。

for a = 1:25
   [net,Y,E] = adapt(net,X,T);
   linehandle = plotpc(net.IW{1},net.b{1},linehandle);  drawnow;
end;

请注意,永远不会得到零误差。尽管经过训练,感知器尚未成为可接受的分类器。感知器的根本限制是只能对线性可分的数据进行分类。