感知机的局限性

一、异或门

1.1 异或门电路的真值表

XOR门电路

注意,门电路的输入只能是0或者1
异或:拒绝其他的意思

只有在两个输入不同的情况下,输出才会是1

输入1输入2真值表
000
011
101
110

1.2 问题的提出

感知机可以实现基本的三种门电路。但是无法实现异或电路

1.3 以可视化的思想来思考

基本的三种门电路都可以通过一条直线来分割坐标区域来实现
请添加图片描述

对于异或门电路来说,想通过一条直线来实现该电路是不可能的事情。

二、线性和非线性

2.1 感知机的局限性

只能表示由一条直线分割开来的线性空间

2.2 该知识点在机器学习的领域很常见

三、多层感知机

组合使用就可以用来表示非线性空间

3.1 通过已有的门电路组合来实现异或电路门

# 使用矩阵的方式来计算不同线路之和
import numpy as np


# 与门
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7

    temp = np.sum(x * w) + b
    if temp <= 0:
        print('the out is 0')
    else:
        print('the out is 1')


# 与非门
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7

    temp = np.sum(x * w) + b
    if temp <= 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

    temp = np.sum(x * w) + b
    if temp <= 0:
        return 0
    else:
        return 1


# 异或门
def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    AND(s1, s2)


# 测试
XOR(0, 0)
XOR(0, 1)
XOR(1, 0)
XOR(1, 1)

D:\ANACONDA\envs\pytorch\python.exe C:/Users/Administrator/Desktop/Code/learn_pytorch/first_demo.py
the out is 0
the out is 1
the out is 1
the out is 0

Process finished with exit code 0

3.2 编码过程中出现的问题

无法正常显示异或门的输出

  • 解决:输入的值是不对的,逻辑电路门的输入只能是0或者1
  • 所以在每个普通的门电路中输入的浮点数当然是不正确的

善于debug,善于改代码,才能成功
编码的过程中才是真正的锻炼人的时候

四、其他

4.1 思考

通过不同门电路层的叠加使用,可以使普通的门电路更加灵活

4.2 感知机的命名

虽然感知机是由3层组成的,但是实际过程中有权重的只有2层,所以

所以对于感知机我们以他实际有权重的层数来命名

这个感知机我们就叫他二层感知机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值