感知器的一个公式:
当 wx+b>0 , f(x)=1,否则f(x)=0
- x输入的向量
- w:是权重
- w*x是点积
- b是偏置(与权重类似,偏置可以认为是激励函数的偏移量,或者给神经元一个基础活跃等级。)
对权重的调整公式,此处使用了梯度下降的方法: w=w+i*(t-count)*x
- i是一个常数,i越小感知器学习越精确,当然耗费时间也最长
- t:本应该得到的值
- count:实际计算得到的值
- x:同上
对偏置调整的公式: b=b+i(t-count)*
这次我们使用python来实现与和或
1 | #因为与和或计算需要输入两个数,所以这里设置两个权重 |
对感知器公式实现的函数:
1 | def count(x,y): |
对权重和偏置不断矫正的函数:
1 | def update_all(r,x,y): |
最后就是输入学习的资料和确认计算结果:
1 | def main(): |
这里我们先进行与的计算:
这里我前面代码写错了,所以说下面所有的结果会不一样…
进行25次学习的结果:
1 | (0.4, 0.6, 0.8) |
这里我们明显发现结果是错误的,提升到50次:
1 | (0.4, 0.6, 0.8) |
结果正确了,并且权重和偏置都稳定到一个值,是不是感觉很神奇
或运算也是相同的,这里我们将偏置改为b=0.4:
25次:
1 | (0.4, 0.6, 0.4) |
50次:
1 | (0.4, 0.6, 0.4) |