从逻辑电路到神经网络:用Python和NumPy手把手复现感知机(附完整代码)
在人工智能的浩瀚星空中,感知机犹如第一颗被点亮的星辰。1957年,Frank Rosenblatt提出的这个简单模型,不仅打开了机器学习的大门,更揭示了生物神经元计算的基本原理。今天,当我们用Python重现这段历史时,实际上是在进行一场跨越60年的对话——用现代工具解构经典思想。
本文将带您从电子工程的角度出发,通过构建与门、或门等基础逻辑电路,逐步深入到感知机的数学本质。不同于单纯的概念讲解,我们更关注如何用代码将理论转化为可运行的模型。您将亲手实现:
- 用NumPy向量化运算模拟神经元激活过程
- 通过权重和偏置的调整实现不同逻辑功能
- 可视化决策边界来直观理解线性可分性
1. 环境准备与基础概念
在开始编码之前,我们需要明确几个核心概念。感知机本质上是一个二分类器,其工作原理可以用一个生活场景类比:假设你在决定是否出门野餐,会综合考虑天气(x₁)、心情(x₂)等因素,给每个因素赋予不同重要性(w₁, w₂),最后当总分超过某个标准(θ)时就做出决定。
技术实现上需要以下准备:
python复制import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Perceptron # 用于对比验证
关键数学表达:
code复制输出 = 1 if w·x + b > 0 else 0
其中·表示向量点积,b是偏置项(即阈值的负数)。这种表示法与现代神经网络完全一致,体现了感知机的历史延续性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实现基础逻辑门电路
2.1 与门(AND Gate)实现
让我们从最基础的与门开始。根据真值表,只有当两个输入都为1时输出才为1。用NumPy实现时,可以充分利用其广播特性:
python复制def AND_gate(x1, x2):
# 手动设置的权重参数
weights = np.array([0.5, 0.5])
bias = -0.7
weighted_sum = np.sum(weights * np.array([x1, x2])) + bias
ret
