究竟什么是感知器

StackOverflow 文档

感知器模型的核心是用于二进制分类的最简单的监督学习算法之一。它是一种线性分类器 ,即一种分类算法,它基于将一组权重与特征向量组合的线性预测函数进行预测。更直观的思考方式就像只有一个神经元神经网络 ****

它的工作方式非常简单。它得到一个输入值 x 的向量,其中每个元素都是我们数据集的一个特征。

一个例子:

假设我们想要分类对象是自行车还是汽车。为了这个例子,我们假设我们要选择 2 个特征。物体的高度和宽度。在那种情况下, x = [x1,x2] 其中 x1 是高度, x2 是宽度。

然后,一旦我们得到输入向量 x,我们希望将该向量中的每个元素与权重相乘。通常,重量值越高,特征越重要。例如,如果我们使用颜色作为特征 x3 并且有一辆红色自行车和一辆红色汽车,感知器将为它设置一个非常低的重量,以便颜色不会影响最终预测。

好吧,所以我们将 2 个向量 xw 相乘,然后我们得到了一个向量。现在我们需要总结这个向量的元素。一个聪明的方式来做到这一点,而不是简单的乘法 X 通过 w ^ 我们可以乘 X重量在那里牛逼代表转置。我们可以想象矢量的转置作为矢量的旋转版本。有关详细信息,请阅读维基百科页面 。基本上通过采用向量 w 的转置,我们得到 Nx1 向量而不是 1xN 。因此,如果我们现在将输入向量乘以 1xN 的大小 ****** 使用这个 Nx1 权重向量,我们将得到 1x1 向量(或简单的单个值),它将等于 x1 * w1 + x2 * w2 + … + xn * wn 。完成后,我们现在有了预测。但还有最后一件事。该预测可能不是简单的 1 或 -1,以便能够对新样本进行分类。所以我们可以做的只是简单地说:如果我们的预测大于 0,那么我们说样本属于 1 类,否则如果预测小于 0,我们说样本属于 -1 类。这称为阶跃函数

但是我们如何获得正确的权重以便我们做出正确的预测呢?换句话说,我们如何训练我们的感知器模型?

在感知器的情况下,我们不需要花哨的数学方程来训练我们的模型。我们的权重可以通过以下等式进行调整:

Δw= eta *(y - 预测)* x(i)

其中 x(i) 是我们的特征(x1 例如表示重量 1,x2 表示 w2,依此类推……)。

还注意到有一个名为 eta 的变量是学习率。你可以把学习率想象成我们想要改变权重的程度。良好的学习率导致快速学习算法。过高的 eta 值会导致每个时期的错误数量增加,导致模型做出非常糟糕的预测并且永远不会收敛。学习率太低可能导致模型花费太多时间来收敛。 (通常,为感知器模型设置 eta 的值为 0.1,但它可能因情况而异)。

最后你们中的一些人可能已经注意到第一个输入是常量(1)并乘以 w0。究竟是什么呢?为了获得良好的预测,我们需要添加偏差。这就是常数。

为了修改偏差项的权重,我们使用与我们对其他权重相同的等式,但在这种情况下,我们不将它乘以输入(因为输入是常数 1,所以我们不必):

Δw= eta *(y - 预测)

这就是简单的感知器模型的工作原理! 一旦我们训练了我们的权重,我们就可以给它新的数据并进行预测。

注意:

Perceptron 模型有一个重要的缺点! 如果数据不是线性可分的 ,它将永远不会收敛(ei 找到完美的权重) ,这意味着能够通过直线将要素空间中的 2 个类分开。因此,为了避免添加固定数量的迭代是一个好习惯,这样模型就不会停留在调整永远不会完美调整的权重上。