感知机

感知机

感知机是什么呢?

感知机是一个接受输入多个信号输出一个信号的模型,如图
在这里插入图片描述
x1w1+x2w2其中输出只有两个值一个是0一个是1,当x1w1+x2w2输出大于一个阈值的时候输出1,小于则输出0
在这里插入图片描述

感知机的实现

基于python实现逻辑电路
实现AND_gate
现在让我们考虑用感知机来解决简单的问题。这里首先以逻辑电路为题材来思考一下与门(AND gate)。与门是有两个输入和一个输出的门电路。
在这里插入图片描述

def AND(x1,x2):
    w1,w2,theta = 0.5,0.5,0.7
    tmp = x1*w1+x2*w2
    if tmp <=theta:
        return 0
    elif tmp>theta:
        return 1
if __name__ == '__main__':
    print(AND(0,0))
    print(AND(1, 0))
    print(AND(0, 1))
    print(AND(1, 1))

实现AND_no_gate

要表示与非门,可以用(w1,w2,θ)=(-0.5,-0.5,-0.7)这样的组合(其他的组合也是无限存在的)。实际上,只要把实现与门的参数值的符号取反,就可以实现与非门。

def AND_no(x1,x2):
    w1,w2,theta = -0.5,-0.5,-0.7
    tmp = x1*w1+x2*w2
    if tmp <=theta:
        return 0
    elif tmp>theta:
        return 1
if __name__ == '__main__':
    print(AND_no(0,0))
    print(AND_no(1, 0))
    print(AND_no(0, 1))
    print(AND_no(1, 1))

导入权重与偏置

刚才的与门的实现比较直接、容易理解,但是考虑到以后的事情,我们将其修改为另外一种实现形式。在此之前,首先把式的 θ 换成 -b,于是就可以用来表示感知机的行为。b 称为偏置,w1 和 w2 称为权重。

使用权重和偏置的实现
使用权重和偏置,可以像下面这样实现与门。

import numpy as np
def AND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.7
    y = np.sum(x*w)+b
    if y<=0:
        return 0
    else:
        return 1
def NAND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([-0.5,-0.5])
    b = 0.7
    y = np.sum(x*w)+b
    if y<=0:
        return 0
    else:
        return 1
def OR(x1, x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.2
    y = np.sum(w*x)+b
    if y<=0:
        return 0
    else:
        return 1
if __name__ == '__main__':
    print(AND(1,1))
    print(NAND(0,0))
    print(OR(1,1))

单层感知机的局限性

无法处理非线性问题如异或门
多层感知机实现异或门

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y

这样,异或门的实现就完成了。下面我们试着用感知机的表示方法(明确地显示神经元)来表示这个异或门,结果如图
在这里插入图片描述

  • 感知机是具有输入和输出的算法。
  • 给定一个输入后,将输出一个既定的值。
  • 感知机将权重和偏置设定为参数。
  • 使用感知机可以表示与门和或门等逻辑电路。
  • 异或门无法通过单层感知机来表示。
  • 使用2层感知机可以表示异或门。
  • 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
  • 多层感知机(在理论上)可以表示计算机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值