神经网络的基本结构是什么?前向传播是怎么工作的?
简化版
神经网络 由一层层神经元(节点) 组成:输入层接收特征,隐藏层逐层提取和变换特征,输出层给出预测。每个神经元做的事很简单——把上一层传来的输入加权求和再加偏置(z = Σwᵢxᵢ + b),然后过一个非线性激活函数(如 ReLU)得到输出,传给下一层。前向传播(Forward Propagation) 就是数据从输入层出发,逐层做「加权求和 + 激活」一直算到输出层得到预测的过程。多层与非线性显著扩展函数表示能力,但可表达不等于一定能优化或泛化——这是神经网络强大的根本。训练时再用反向传播算梯度、更新权重。
详细版
基本结构:
输入层 → 隐藏层1 → 隐藏层2 → ... → 输出层
x (提取特征) (预测)
单个神经元的计算:
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b (加权求和 + 偏置)
a = σ(z) (非线性激活)
- 权重 w:连接强度(要学的参数);偏置 b:调整阈值。
- 激活函数 σ:引入非线性(ReLU、sigmoid、tanh…)。
前向传播(逐层计算):
第 l 层:z⁽ˡ⁾ = W⁽ˡ⁾a⁽ˡ⁻¹⁾ + b⁽ˡ⁾, a⁽ˡ⁾ = σ(z⁽ˡ⁾)
从输入 a⁽⁰⁾=x 一路算到输出层,得到预测 ŷ
为什么强大: 多层 + 非线性 → 万能近似(在紧致域、合适激活和足够容量等条件下可任意精度逼近连续函数)。若无非线性激活,多层会塌缩成一层线性变换。
完整版教学
一、从单个神经元说起——一个「加权求和 + 激活」的单元
神经网络的最小单元是神经元(节点),它模仿生物神经元「多个输入、加权整合、超过阈值就激活」的思路,做两件事:
① 加权求和:z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
② 非线性激活:a = σ(z)
- 输入 x:上一层传来的信号。
- 权重 w:每个输入的重要性/连接强度,是要学习的参数。
- 偏置 b:一个可调的基准(相当于阈值),也是要学的。
- 激活函数 σ:对加权和做非线性变换(如 ReLU、sigmoid)。
一个神经元就是「把输入按权重整合,再非线性地决定输出多少」。单个神经元是仿射变换加激活;只有选 sigmoid 并按二分类训练时才对应逻辑回归单元。
二、把神经元组织成层——网络结构
很多神经元按层排列,层层相连,构成神经网络:
- 输入层:表示输入张量;工程里还可能包含嵌入、归一化或数据变换,不能机械理解成一个标量特征一个节点。
- 隐藏层:一层或多层,每层的神经元接收上一层所有输出、做「加权求和+激活」,逐层把原始特征变换成更抽象、更有用的表示。层数多(深)就是「深度」学习。
- 输出层:给出最终预测——回归输出一个数值,二分类用 sigmoid 输出概率,多分类用 softmax 输出各类概率。
「全连接(Dense)层」指某层每个神经元和上一层所有神经元都相连。层与层之间的连接权重构成权重矩阵 W。
三、前向传播:数据从输入流到输出
前向传播(Forward Propagation) 是网络做预测的过程——数据从输入层出发,逐层计算,一直流到输出层:
输入:a⁽⁰⁾ = x
第 l 层:
z⁽ˡ⁾ = W⁽ˡ⁾ · a⁽ˡ⁻¹⁾ + b⁽ˡ⁾ (本层加权求和,矩阵形式)
a⁽ˡ⁾ = σ(z⁽ˡ⁾) (本层激活输出)
一层接一层,直到输出层得到预测 ŷ = a⁽ᴸ⁾
用矩阵表示:每一层就是「权重矩阵乘上一层输出,加偏置,再过激活函数」。整个前向传播就是这个操作从第一层到最后一层的连续套用——本质是一串线性变换 + 非线性激活的复合。
四、为什么需要非线性激活——否则深也白深
这是极其重要的一点。假设去掉激活函数(或用线性激活),每层就只是 z = Wa + b 的线性变换。多个线性变换叠加,结果还是一个线性变换:
无激活时:a² = W²(W¹x + b¹) + b² = (W²W¹)x + (...) = W'x + b'
也就是说,没有非线性激活,无论堆多少层,整个网络都等价于一层线性模型,表达能力和逻辑回归一样,深度毫无意义。
非线性激活函数打破了这个塌缩——每层的非线性让网络能层层组合出复杂的非线性函数。正是「多层 + 非线性」让神经网络成为万能近似器(Universal Approximator):理论上足够宽/深的网络在紧致域、合适激活和足够容量等条件下可任意精度逼近连续函数。这是神经网络强大的根本原因。
五、参数怎么来的——训练概览
前向传播只是「用当前权重做预测」,但权重一开始是随机初始化的、预测是错的。训练要做的是:
- 前向传播:算出预测 ŷ。
- 算损失:用损失函数衡量 ŷ 和真实 y 的差距(回归用 MSE、分类用交叉熵)。
- 反向传播:从损失出发,用链式法则算出损失对每个权重的梯度(详见反向传播专题)。
- 更新权重:用优化器(如 SGD、Adam)沿负梯度更新权重,让损失下降。
- 重复多轮,直到收敛。
前向传播(预测)和反向传播(学习)交替进行,网络就越学越准。
六、手算一次前向传播,并核对矩阵形状
设输入 x=[2,-1]ᵀ,单个神经元权重 w=[0.5,1]、偏置 b=0.2。则 z=0.5×2+1×(-1)+0.2=0.2,经过 ReLU 得 a=0.2。这个例子说明偏置是在每个输出单元上广播,而不是给每个输入连接各配一个偏置。
批输入 A: [B, D_in]
权重 W: [D_out, D_in]
偏置 b: [D_out]
Z = A W^T + b: [B, D_out]
若 D_in=2,D_out=3,该全连接层有 3×2+3=9 个参数。前向传播只定义当前参数下的预测;损失、反向传播和优化器共同构成训练过程,三者不能混为一谈。
易错点:万能近似定理谈的是“存在某组参数能逼近”,不保证训练算法找得到,也不保证测试集上泛化。
七、常见误区与追问
- 误区:网络只要足够深就能自动学好任何任务。 容量、优化、数据覆盖和归纳偏置都会限制实际效果。
- 误区:没有隐藏层就不可能做分类。 线性可分任务可由线性或逻辑回归直接完成。
- 追问:偏置为什么重要? 它允许超平面平移;没有偏置时许多决策边界被迫经过原点。
- 追问:训练与推理的前向传播完全相同吗? Dropout、BatchNorm 等层的行为会随 train/eval 模式变化。
- 追问:为什么矩阵实现比逐神经元循环快? 矩阵乘可调用高度优化的并行内核,并提高数据复用和硬件利用率。
八、加强记忆
神经网络由输入层→隐藏层→输出层的神经元构成,每个神经元做**「加权求和+偏置 z=Σwx+b → 非线性激活 a=σ(z)」。前向传播是数据从输入逐层做「Wa+b 再激活」一直算到输出得到预测的过程(本质是线性变换与非线性激活的复合)。关键:必须有非线性激活——否则多层塌缩成一层线性模型**、深度无意义;有了非线性,「多层+非线性」让网络成为万能近似器在紧致域、合适激活和足够容量等条件下可任意精度逼近连续函数。训练靠前向传播算预测→损失→反向传播算梯度→优化器更新权重循环。权重 w、偏置 b 是学出来的参数,激活函数引入非线性是网络强大的根本。