感知机(又称神经元)由 Frank Rosenblatt 于 1957 年提出,虽历史悠久但仍是学习神经网络与深度学习的基础。其核心思想是现代多层神经网络的起源,掌握感知机构造有助于理解深度学习的底层逻辑。

1. 感知机是什么

感知机接收多个输入信号,输出 1(传递信号)或 0(不传递信号)的二元结果,信号流动特性类似电流,但其取值仅两种状态。

接收两个输入信号的感知机中,输入信号 x1、x2 经权重 w1、w2 加权后求和,若总和超过阈值 θ,神经元激活并输出 1,否则输出 0,其中权重反映信号重要性,θ 为激活界限值。如下图所示。

感知机中各输入信号的权重(w1,w2)控制其重要性,权重越大对应信号越重要。

2. 感知机的简单应用

2.1 逻辑与

"与门"是一种二输入单输出的门电路,其真值表为:当且仅当两个输入均为 1 时输出 1,否则输出 0,逻辑与的真值表如下图所示。

2.2逻辑或

“或门”是只要有一个输入信号是1,输出就为1,输入信号全 0 时输出 为0 的逻辑电路。逻辑或的真值表如下图所示。

2.3 逻辑与非

与非门就是颠倒了与门的输出,其真值表如下图所示。

3. 感知机的实现

3.1 简单实现

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)) #0
    print(AND(1, 0)) #0
    print(AND(0, 1)) #0
    print(AND(1, 1)) #1

3.2 使用权重和偏置的实现

刚才与门的实现比较直接、容易理解,但是考虑到以后的事情,将其修改为另外一种实现形式。将theta换成b,得到如下表达式:

其中b称为偏置,w1和w2称为权重。感知机会计算输入信号和权重的乘积,然后加上偏置,如果这个值大于0则输出1,否则输出0。

AND代码


import numpy as np
def AND(x1,x2):
    #输入特征
    x=np.array([x1,x2])
    w=np.array([0.5,0.5])
    b=-0.7
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    elif tmp>0:
        return 1
if __name__=='__main__':
    print(AND(0,0)) #0
    print(AND(1,0)) #0
    print(AND(0,1)) #0
    print(AND(1, 1))  # 1

NAND代码

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

if __name__=='__main__':
    print(NAND(0,0)) #1
    print(NAND(1,0)) #1
    print(NAND(0,1)) #1
    print(NAND(1, 1))  # 0

OR门代码

import numpy as np

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + np.array(b)
    if tmp <= 0:
        return 0
    else:
        return 1


if __name__=='__main__':
    print(OR(0,0)) #0
    print(OR(1,0)) #1
    print(OR(0,1)) #1
    print(OR(1, 1))  # 1

小结:权重 w1、w2 控制输入信号重要性,偏置 b 调整神经元激活难易度(如 b=-0.1 时加权和超 0.1 激活,b=-20.0 时需超 20.0)。与门、与非门、或门的感知机构造相同,仅权重和偏置取值不同。

4. 感知机的局限
感知机的核心瓶颈在于线性模型的先天缺陷和单层网络的结构限制。其局限性推动了神经网络的发展。
5. 多层感知机
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network)除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

输出层

输入层

隐层

一O1

O1

M

XN

1

image.png


从上图可以看到,多层感知机层与层之间是全连接的。多层感知机包括三层:
●输入层:接收原始特征(如图片像素、文本向量),节点数等于特征维度。
●隐藏层:位于输入层和输出层之间,可包含一层或多层神经元。隐藏层神经元通过权重矩阵与前一层连接,是特征变换的核心
●输出层:根据任务类型输出结果(如二分类输出 1 个节点,多分类输出 Softmax 层)

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐