感知器01

感知器(举例:“与”门)

感知器原理

什么是神经⽹络?⼀开始,我将解释⼀种被称为“感知器”的⼈⼯神经元。感知器在20世 纪五、六⼗年代由科学家Frank Rosenblatt发明,其受到Warren McCulloch和Walter Pitts早 期著作的影响。今天,使⽤其它⼈⼯神经元模型更为普遍——主要使⽤的是⼀种叫做S型神经元的神经元模型。
⼀个感知器接受⼏个⼆进制输⼊,x1,x2,…,并产⽣⼀个⼆进制输 出:

(感知器模型)在这里插入图片描述

⽰例中的感知器有三个输⼊,x1,x2,x3。通常可以有更多或更少输⼊。Rosenblatt提议⼀个 简单的规则来计算输出。他引⼊权重,w1,w2,…,表⽰相应输⼊对于输出重要性的实数。神经 元的输出,0或者1,则由分配权重后的总和∑j wjxj⼩于或者⼤于⼀些阈值决定。和权重⼀样, 阈值是⼀个实数,⼀个神经元的参数。⽤更精确的代数形式:(将它程之为激活函数)——————这里的j从1开始

在这里插入图片描述

若用偏置b=-threshold代替,那么感知器的规则可重写为:

在这里插入图片描述

同样的,(这里有点技巧)将偏执b看作:输入信号X0(即X0=b),权重为1的信号,即b=X0*1.那么此时这个感知器的模型可改为:——————这里的j从0开始

y=output

在这里插入图片描述

权重更新

更新公式

Wj=Wj+△Wj

△Wj=η*(y-y_hat)Xj

  • η为学习率(更新幅度)

  • y为真实值

  • y_hat为预测值

  • Xj为输入

更新步骤
  1. 对权重初始化(0或很小的值)

  2. 对训练集中的每一个样本进行迭代,计算出输出值

  3. 根据输出值与真实值调整权重

  4. 循环步骤2,知道达到指定次数或完全收敛

【注】

  1. 线性可分,感知器一定能收敛(预测出)
    比如在二维空间下:
    在这里插入图片描述

  2. 线性不可分,感知器永远不可能收敛(预测)

实例说明(“与“门)

代码



import numpy as np

from datetime import datetime

import random


#定义数据集

X=np.array([[1,0,0],[1,0,1],[1,1,0],[1,1,1]])

#定义标签

y=np.array([0,0,0,1])

#定义权重

w=np.zeros(3)

#定义学习率

eta=0.1



for epoch in range(7):

    for x,target in zip(X,y):

        #计算静输入

        z=np.dot(w,x)     #dot实现对应相乘

        #根据静输入计算分类值

        y_hat=1 if z>=0 else 0

        #根据预测值与真实值,进行权重调整

       w+=eta*(target - y_hat)*x

        #这里使用了矢量化计算,相当于计算了以下操作

            # w[0]+=eta*(target - y_hat)*x[0]

            # w[1]+=eta*(target - y_hat)*x[1]

            # w[2]+=eta*(target - y_hat)*x[2]
         
       print (target,y_hat)

       print(w)


代码参数说明

实现“与”门:

数据集:【x0,x1,x2】标签:y
[1,0,0]0
[1,0,1]0
[1,1,0]0
[1,1,1]1

初始权重:(0,0,0)
学习率:0.1
真实值(标签):y
学习后输出(分类值):y_hat

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值