第一周:神经网络基础——从感知机到多层网络
模块四 · 第 1/4 周 预计 3.5 小时本周目标
从最简单的单个神经元开始,用 NumPy 实现前向传播。理解权重、偏置、激活函数。最终实现一个能学习 XOR 问题的 2 层网络。
本周里程碑:用 NumPy 实现一个能学习 XOR 的 2 层网络——不需要任何深度学习框架。
1. 核心概念讲解
1.1 什么是「神经网络」?——一堆旋钮
把神经网络想象成一个调音台:
输入(声音)→ 经过一大堆旋钮(参数/权重)→ 输出(调制后的声音)。训练就是「根据输出和目标差多少,反方向微调每个旋钮」。
一个神经元做的事非常简单:
输入: x₁, x₂, x₃ (比如三个数字)
权重: w₁, w₂, w₃ (每个输入的重要性)
偏置: b (阈值)
计算: z = x₁·w₁ + x₂·w₂ + x₃·w₃ + b
输出: a = activation(z) (比如 ReLU(z) = max(0, z))
就是一个加权求和 + 一个非线性函数。 无数个这种东西叠在一起,就能学会极其复杂的模式。


1.2 激活函数:给网络注入「非线性」
如果没有激活函数,多层网络等价于一层(全是矩阵乘法,可以合并)。激活函数打破了这种线性,让网络能学任意复杂的函数。
| 激活函数 | 公式 | 特点 |
|---|---|---|
| ReLU | f(x) = max(0, x) | 最常用,简单高效,但负数直接归零 |
| Sigmoid | f(x) = 1/(1+e⁻ˣ) | 输出0~1,适合概率,但梯度易消失 |
| Tanh | f(x) = (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) | 输出-1~1,比Sigmoid好,但仍有梯度问题 |
1.3 前向传播:数据流过网络
2. 动手实践
实现一个迷你神经网络
创建 neural_net_numpy.py:
import numpy as np
class MiniNeuralNet:
def __init__(self, input_size, hidden_size, output_size):
# 随机初始化权重(小的随机值)
self.W1 = np.random.randn(input_size, hidden_size) * 0.01
self.b1 = np.zeros((1, hidden_size))
self.W2 = np.random.randn(hidden_size, output_size) * 0.01
self.b2 = np.zeros((1, output_size))
def relu(self, x):
return np.maximum(0, x)
def forward(self, X):
"""前向传播:X → h → ŷ"""
# 第一层
self.z1 = X @ self.W1 + self.b1 # 矩阵乘法
self.h = self.relu(self.z1) # 激活函数
# 第二层(输出层)
self.z2 = self.h @ self.W2 + self.b2
self.y_hat = self.z2 # 回归问题不用激活
return self.y_hat
# 测试:2个输入 → 3个隐藏神经元 → 1个输出
net = MiniNeuralNet(input_size=2, hidden_size=3, output_size=1)
# XOR 数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]]) # XOR 真值表
# 前向传播
predictions = net.forward(X)
print("预测值:")
print(predictions)
print("(现在还是随机的——下周学反向传播才能训练)")
数学就这么多
前向传播 = 矩阵乘法 + ReLU。就这两步,重复很多层。如果你能看懂 X @ W + b,你已经理解了神经网络 80% 的计算过程。
3. 三视角复盘
神经网络 = 大量矩阵乘法 + 非线性激活函数。前向传播从输入算到输出。参数量巨大(GPT-3 有 1750 亿个参数),但核心运算就是矩阵乘法——这就是为什么 GPU(擅长矩阵乘法)对 AI 如此重要。
理解神经网络原理让你能判断「要不要微调」「用什么模型」「成本估计」。你不知道怎么造发动机,但知道它怎么工作,才能做出明智的买车决策。同理,不需要自己训练 GPT-4,但理解了架构才知道该用 RAG 还是微调。
怎么给孩子讲神经网络?「你看过一个很长的多米诺骨牌吗?推倒第一个,它撞倒后面的,后面的继续撞。神经网络也是这样——信息从一头流进去,经过很多层传递,从另一头流出来。每一层都对信息做一点点改变,最后就变成了完全不同的东西。」
延伸资源
3Blue1Brown - Neural Networks
如果只看一套神经网络的视频教程,看这个。用动画把每个概念讲得清清楚楚。
下周预告
下周学「学习」本身——反向传播。你会亲手写出梯度下降算法,看 Loss 曲线一点点下降。这是整个 AI 学习中最让人兴奋的时刻。