感知器(神经元)
以下即为一个感知器
一个感知器有如下组成部分:
-
输入权值
一个感知器可以接收多个输入,每个输入上有一个权值,此外还有一个偏置项,就是上图中的w0。
-
激活函数
-
输出
感知器的输出由下面这个公式来计算
y = f(w*x+b)
任何线性分类或线性回归问题都可以用感知器来解决。
如二分类问题,可以用一条直线把分类0和分类1分开。
感知器的训练
将权重项和偏置项初始化为0,然后,利用下面的感知器规则迭代的修改wi和b,直到训练完成。
t为实际label,y为预测label,yita为学习率,xi为输入。
''' 把input_vec[x1,x2,x3...]和weights[w1,w2,w3,...]打包在一起
变成[(x1,w1),(x2,w2),(x3,w3),...]
然后利用map函数计算[x1*w1, x2*w2, x3*w3]
最后利用reduce求和,得到x1*w1+x2*w2+...+b,即是y
'''
def predict(self,input_vec):
#输入向量,输出感知器的计算结果
return self.activator(
reduce(lambda a, b: a + b,
list(map(lambda x_w: x_w[0] * x_w[1] ,
list(zip(input_vec, self.weights))) ) #[([1,0]),([1,0])]
, 0.0) + self.bias)
reduce() 函数会对参数序列中元素进行累积,返回一个计算结果。