我正在通过一位教授提供的示例来理解感知器学习算法。这是我的理解。能有人检查一下我的理解是否正确吗?
假设我有以下输入
x1 x2 result(y)
1 3 +1
-1 -2 -1
1 -1 1
-2 1 -1
现在我使用下面的算法来获取权重
w0=0
1)y1(w0x1)<=0
因此 w1=w0+y1*x1=[1,3]
2)y2(w1,x2)<=0
因此 w2=w1+y2*x2=[3,-1]
3)y3(w2,x2)>=0
因此无需迭代
4)y4(w2,x4)<=0
因此 w3=w2+y4*x4=[5,-2]
因此现在我的权重是
x1 x2 result(y) weights
1 3 +1 [1,3]
-1 -2 -1 [3,-1]
1 -1 1 [3,-1]
-2 1 -1 [5,2]
我的理解正确吗?还是我在选择权重时犯了错误,或者在进行迭代时犯了错误?
回答:
看起来你做的是正确的,但有一些评论需要注意:
-
你提到最初的w0 = 0,这不太合理,因为你后来将其加到维度为2的向量上。我猜你是指w0 = [0, 0]。
-
供参考:
-
更一般的感知器学习算法不会直接加减分类错误的实例,而是对其进行缩放并乘以某个0 < α ≤ 1。你上面的算法使用了α = 1。
-
通常会在感知器输入前人为地添加一个常数1项。因此,如果原始输入是维度为2的向量,你将处理维度为3的向量,其中每个向量的第一个项目是1。
-