什么是感知器学习算法?

What is the perceptron learning algorithm?

在感知器中,一层的神经网络,更新权重和偏差的算法是什么?我知道有多种算法,但是否有一种易于在代码中实现的标准算法?

标准算法是gradient descent using back-propagation。算法是这样的:

  1. 猜猜初始权重和偏差。
  2. 计算 "forward pass",其中您使用权重和偏差计算估计值 y_hat
  3. 计算损失,即真实值 y 与您从第 2 步计算出的估计值 y_hat 之间的差值。
  4. 计算关于每个权重和偏差的损失梯度。该梯度将采用小浮点数的形式。此步骤称为 "backward pass" 并将名称命名为 "back propagation",其中损失的梯度向后推。
  5. 通过添加梯度更新权重和偏差。

在您重复步骤 2 到 5 一定次数(称为时期)后,您将有望获得最佳权重和偏差。

感知器是一个线性的二元分类器。它通常使用增量规则进行训练:

w <- initialize randomly (e.g. uniformly in [-1, 1])
learning_rate <- 0.42  # something in (0, 1)
for epoch in range(42):
    y <- perceptron_classification(x)
    w <- w - learning_rate * (y - target) * x

如果您想查看一个有效的(经过测试的)最小实现,请查看我的存储库:https://github.com/MartinThoma/algorithms/tree/master/perceptron

我认为,我应该提供一些 material 您可以从中开始并快速端到端地理解算法的内容,而不是仅仅在这里陈述算法。

考虑这本书:Neural Networks: A Systematic Introduction,但 Raúl Rojas。

Perceptron Learning,参考Section 4.2

对于执行学习的 space 的非常好的概述、意图、算法、收敛和可视化。我建议先看第三章再看第四章