关于感知器算法伪代码的疑问
Doubts regarding this pseudocode for the perceptron algorithm
我正在尝试实现上面的感知器算法。但我有两个问题:
为什么我们只更新 w (weight)
变量一次?每个 Xi
不应该有单独的 w
变量吗?另外,不确定 w = 0d
在初始化中的数学含义。
- 的数学意义是什么
yi(< xi,w >+b)
我知道括号内的意思,但不确定 yi()
部分。
(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。
所以,长话短说,在 n 个输入 x 中,你只需要在输出 y 时更新 w 个对于相应的输入 x 将小于或等于零(对于 t 的每次迭代)。
(1) 我已经提到了 w 没有更新一次。
假设您知道任何大于 (<) 0 的输出值都是正确答案。因此,如果你得到一个小于或等于零的输出,那么你的算法就有错误,你需要修复它。当输出与所需的不匹配时,这就是您的算法通过更新 w 所做的。
这里w表示为一个向量,它被初始化为零。
我正在尝试实现上面的感知器算法。但我有两个问题:
为什么我们只更新
w (weight)
变量一次?每个Xi
不应该有单独的w
变量吗?另外,不确定w = 0d
在初始化中的数学含义。- 的数学意义是什么
yi(< xi,w >+b)
我知道括号内的意思,但不确定 yi()
部分。
(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。
所以,长话短说,在 n 个输入 x 中,你只需要在输出 y 时更新 w 个对于相应的输入 x 将小于或等于零(对于 t 的每次迭代)。
(1) 我已经提到了 w 没有更新一次。
假设您知道任何大于 (<) 0 的输出值都是正确答案。因此,如果你得到一个小于或等于零的输出,那么你的算法就有错误,你需要修复它。当输出与所需的不匹配时,这就是您的算法通过更新 w 所做的。
这里w表示为一个向量,它被初始化为零。