关于感知器算法的这种伪代码的怀疑

时间:2017-09-23 04:21:47

标签: algorithm machine-learning perceptron

enter image description here

我正在尝试实现上面的感知器算法。但我有两个问题:

  1. 为什么我们只更新一次w (weight)变量?每个w不应该有单独的Xi个变量吗?另外,不确定w = 0d在初始化中的数学意义。

  2. 的数学含义是什么?
    yi(< xi,w >+b)
    
  3. 我知道括号内的含义是什么,但不确定yi()部分。

1 个答案:

答案 0 :(得分:1)

(2)您可以将'yi'视为依赖于w,xi和b的函数。 让我们假设一个简单的例子,y是一个分隔两个不同类的行。在这种情况下,y可以表示为y = wx + b。现在,如果你使用 w = 0,x = 1,b = 0,然后y = 0.

对于您的给定算法,当y的输出小于或等于0时,您需要更新权重 w

所以,如果仔细观察,你不会更新 w 一次,因为它位于for循环内的if语句中。

对于您的算法,对于t的每次迭代,基于 n 输入x的数量,您将获得 n 输出y的数量。这里'i'用于将输入索引为xi,输出为yi。

所以,长话短说,输入x的 n 数量,当相应输入x的输出y将更少时,您只需要更新 w 大于或等于零(对于t的每次迭代)。

(1)我已经提到 w 没有更新一次。

假设您知道任何大于(&lt;)的输出值都是正确的答案。因此,如果您得到的输出小于或等于零,则算法中存在错误,您需要修复它。这是您的算法通过在输出与所需输出不匹配时更新 w 所做的事情。

此处 w 表示为向量,并将其初始化为零。