🔗 三个感知机组装成 XOR
单个感知机做不了 XOR,但把三个组合起来就行:
NAND(负权重 -0.5):两个 1 时输出 0,其他输出 1
OR(正权重):天气好或有朋友有空 → 输出 1
AND:上面两个结果都输出 1 → 最终输出 1(出门)
这相当于:(天气不好或朋友没空)且(天气好或有朋友有空)才出门 = 天气和朋友状态不同才出门。
点击输入圆圈试试:
输入
(点击切换)
(点击切换)
x₁
☁️ 不好
x₂
🚫 没空
→
隐藏层
NAND
—
OR
—
→
输出
AND
—
NAND: w₁=-0.5, w₂=-0.5, b=0.6 · OR: w₁=0.5, w₂=0.5, b=-0.3 · AND: w₁=0.5, w₂=0.5, b=-0.8
真值表验证
点击输入圆圈切换 x₁、x₂,验证所有四种输入组合:
(x₁=0, x₂=0)
NAND: — OR: — AND→—
期望: 0
(x₁=0, x₂=1)
NAND: — OR: — AND→—
期望: 1
(x₁=1, x₂=0)
NAND: — OR: — AND→—
期望: 1
(x₁=1, x₂=1)
NAND: — OR: — AND→—
期望: 0
📄 Python 代码
# 两层神经网络实现 XOR
# 隐藏层:NAND + OR
def nand(x1, x2):
return 1 if -0.5*x1 + -0.5*x2 + 0.6 > 0 else 0
def or_gate(x1, x2):
return 1 if 0.5*x1 + 0.5*x2 + -0.3 > 0 else 0
# 输出层:AND
def xor(x1, x2):
s1 = nand(x1, x2)
s2 = or_gate(x1, x2)
return 1 if 0.5*s1 + 0.5*s2 + -0.8 > 0 else 0
# 当前输入:x₁=0, x₂=0 → 输出: 0
💡 这就是神经网络的核心思想
单个感知机能力有限(线性),但组合成多层网络后就能解决复杂问题(非线性)。
你刚才搭建的其实就是一个两层神经网络——隐藏层(NAND+OR) → 输出层(AND),跟现代深度学习网络是同一个原理,只是规模大了几百万倍。