模式识别

神经网络用于面部识别等应用程序。

这些应用程序使用模式识别

这类分类可以用一个来完成感知器

感知器可用于将数据分为两部分。

感知器也被称为线性二元分类器

模式分类

想象一下在具有分散 xy 点的空间中的一条直线(线性图)。

如何对线上方和线下的点进行分类?

感知器可以被训练来识别线上的点,而无需知道线的公式。

Perceptron



如何对感知器进行编程

为了对感知器进行编程,我们可以使用一个简单的 JavaScript 程序,该程序将:

  1. 创建一个简单的绘图仪
  2. 创建 500 个随机 xy 点
  3. 显示 xy 点
  4. 创建线函数:f(x)
  5. 显示线路
  6. 计算所需的答案
  7. 显示想要的答案

创建一个简单的绘图仪

创建一个简单的绘图仪对象的描述见AI画布篇

示例

const plotter = new XYPlotter("myCanvas");
plotter.transformXY();

const xMax = plotter.xMax;
const yMax = plotter.yMax;
const xMin = plotter.xMin;
const yMin = plotter.yMin;

创建随机 XY 点

根据需要创建任意多个 xy 点。

让 x 值是随机的(在 0 和最大值之间)。

让 y 值是随机的(在 0 和最大值之间)。

在绘图仪中显示点:

示例

const numPoints = 500;
const xPoints = [];
const yPoints = [];
for (let i = 0; i < numPoints; i++) {
  xPoints[i] = Math.random() * xMax;
  yPoints[i] = Math.random() * yMax;
}

亲自试一试 »


创建线函数

在绘图仪中显示该线:

示例

function f(x) {
  return x * 1.2 + 50;
}

亲自试一试 »


计算正确答案

根据线函数计算正确答案:

y = x * 1.2 + 50。

如果 y 在线上,则所需答案为 1;如果 y 在线下,则所需答案为 0。

将所需的答案存储在数组中 (desired[])。

示例

let desired = [];
for (let i = 0; i < numPoints; i++) {
  desired[i] = 0;
  if (yPoints[i] > f(xPoints[i])) {desired[i] = 1;}
}

显示正确答案

对于每个点,如果desired[i] = 1则显示黑点,否则显示蓝点。

示例

for (let i = 0; i < numPoints; i++) {
  let color = "blue";
  if (desired[i]) color = "black";
  plotter.plotPoint(xPoints[i], yPoints[i], color);
}

亲自试一试 »


如何训练感知器

在下一章中,您将学习如何使用正确答案来:

训练感知器预测未知输入值的输出值。