感知机与门电路

本文介绍单层感知机的原理与应用,包括数学表示、几何解释,并通过实例演示了如何使用单层感知机模拟逻辑门。同时指出单层感知机在处理非线性问题上的局限性,进而引入多层感知机的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:简述单层感知机特征及三种表示方式,并用单层感知机描述门电路,借由单层感知机无法处理非线性空间的问题,引出多层感知机。

单层感知机

感知机(preceptron)接收多个输入信号,输出一个信号。

如下图所示为有两个输入的感知机。其中,x1x_1x1x2x_2x2 为输入信号,yyy 为输出信号,w1、w2w_1、w_2w1w2 为权重,输入信号分别乘上各自权重,若两者总和超过某一阈值 θ\thetaθ,则输出1,类似于神经元被激活。
在这里插入图片描述

数学表示
y={0,w1x1+w2x2⩽θ1,w1x1+w2x2>θ y= \begin{cases}0 , w_1 x_1+w_2 x_2 \leqslant \theta \\ 1 , w_1 x_1+w_2 x_2>\theta\end{cases} y={0,w1x1+w2x2θ1,w1x1+w2x2>θ
权重 www 表示信号的重要程度;阈值 θ\thetaθ 表示神经元被激活的难易程度,若 θ\thetaθ 为 -50,则神经元被激活难度大,反之难度小。

另一种数学表示
y={0,w1x1+w2x2+b⩽01,w1x1+w2x2+b>0 y= \begin{cases}0 , w_1 x_1+w_2 x_2+b \leqslant 0 \\ 1 , w_1 x_1+w_2 x_2+b>0\end{cases} y={0,w1x1+w2x2+b01,w1x1+w2x2+b>0
较上式,令 b=−θb=-\thetab=θ,称为偏执。这种表示方法便于编程时借助矩阵运算。

几何表示:表示空间中的一条直线,无法表示曲线。由直线划分的空间称为线性空间,由曲线划分的空间表示非线性空间。



感知机 与 门电路

感知机能够表示与门、或门、非门。

与门

与门(AND gate)是有两个输入和一个输出的门电路,与门特点是全1则1,其余为0。下表为与门真值表,即输入和输出信号的对应表。

x1x_1x1x2x_2x2yyy
000
010
100
111

数学表示:
y={0,0.5x1+0.5x2⩽0.71,0.5x1+0.5x2>0.7 y= \begin{cases}0 ,0.5x_1+0.5x_2 \leqslant 0.7 \\ 1 , 0.5x_1+0.5x_2>0.7 \end{cases} y={0,0.5x1+0.5x20.71,0.5x1+0.5x2>0.7
几何表示:
在这里插入图片描述

Python 实现:

#数学表示1
def AND_gate(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = w1*x1 + w2*x2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1
    
# ===========================
# 数学表示2
import numpy as np
def AND_gate_1(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([0.5, 0.5, -0.7])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

与非门

和「与门」的输出相反。
y={0,−0.5x1−0.5x2⩽−0.71,−0.5x1−0.5x2>−0.7 y= \begin{cases}0 ,-0.5x_1-0.5x_2 \leqslant -0.7 \\ 1 , -0.5x_1-0.5x_2>-0.7 \end{cases} y={0,0.5x10.5x20.71,0.5x10.5x2>0.7
Python实现:

import numpy as np
def NAND_gate(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([-0.5, -0.5, 0.7])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

或门

有1则1,全0则0。
y={0,0.5x1+0.5x2⩽0.21,0.5x1+0.5x2>0.2 y= \begin{cases}0 ,0.5x_1+0.5x_2 \leqslant 0.2 \\ 1 , 0.5x_1+0.5x_2>0.2 \end{cases} y={0,0.5x1+0.5x20.21,0.5x1+0.5x2>0.2
Python 实现:

import numpy as np
def OR_gate(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([0.5, 0.5, -0.2])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

异或门

仅当 x1、x2x_1、x_2x1x2 中一方为1时,才会输出 1。

x1x_1x1x2x_2x2yyy
000
011
101
110

无法用一条直线划分两种标记,因为感知机不能表示空间曲线。
在这里插入图片描述

多层感知机

单层感知机无法表示非线性空间,但多层感知机(multi-layered perceptron)可以表示。

通过叠加与、非与、或门实现异或门,Python 实现如下:

def XOR(x1, x2):
    s1 = NAND_gate(x1, x2)
    s2 = OR_gate(x1, x2)
    y = AND_gate(s1, s2)
    return y

如下图所示为2层感知机,感知机总共由 3 层构成,但是因为拥有权重的层实质上只有 2 层(第 0 层和第 1 层之间,第 1 层和第 2 层之间),所以称为「2层感知机」。不过,若从 3 层结构来看,也可称为「3层感知机」。
在这里插入图片描述


参考书籍:
深度学习入门:基于Python的理论与实现 (斋藤康毅)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值