把神经网络想象成一系列按层级组织的计算站点。前向传播过程就是你的输入数据通过这些站点所经历的路径,它从输入层开始,经过所有中间层(隐层),最终抵达输出层以产生一个结果。这是一个单向通道:信息严格地向前流动,从输入到输出,不会回溯(至少在我们当前讨论的前馈网络中是这样)。层层计算基本原则是一个层的输出会作为下一个层的输入。让我们追踪这条路径:输入层: 这实际上不是一个计算层。它只是接收你的初始数据,这些数据通常表示为一个向量 $x$。向量 $x$ 也可以被认为是输入层的“激活值”,有时记作 $a^{[0]}$。第一个隐层: 这个层(我们称之为第1层)的每个神经元都接收来自输入层的激活值 ($a^{[0]}$)。在第1层的每个神经元 $j$ 中,发生两件事:计算输入的加权和加上一个偏置:$z_j^{[1]} = \sum_i w_{ji}^{[1]} a_i^{[0]} + b_j^{[1]}$。对这个和应用一个激活函数 $g$:$a_j^{[1]} = g(z_j^{[1]})$。 这个层中所有激活值 $a_j^{[1]}$ 的集合构成了激活向量 $a^{[1]}$,它成为下一个层的输入。后续隐层: 对于任何额外的隐层(第2层、第3层等),这个过程都会重复。对于任意层 $l$,每个神经元都基于前一个层(即 $l-1$ 层)的激活值 $a^{[l-1]}$ 计算其加权和 $z_j^{[l]}$,然后应用激活函数 $g$ 来得到它自己的激活值 $a_j^{[l]}$。向量 $a^{[l]}$ 随后向前传递。 $$z_j^{[l]} = \sum_i w_{ji}^{[l]} a_i^{[l-1]} + b_j^{[l]}$$ $$a_j^{[l]} = g(z_j^{[l]})$$输出层: 最终层执行相同的计算(加权和与激活),但其输出 $a^{[L]}$(其中 $L$ 是最后一层)代表了网络的最终预测结果,通常记作 $\hat{y}$。这个层中激活函数的选择通常取决于问题类型(例如,二分类问题用 Sigmoid,多分类问题用 Softmax,回归问题则不用激活函数)。在神经网络中,前向传播是一种顺序处理,其中层 $l-1$ 的输出成为层 $l$ 的输入,并持续到最终输出的产生。流动可视化考虑一个包含输入层、一个隐层和一个输出层的简单网络。信息严格地从左向右流动。digraph G { rankdir=LR; splines=line; nodesep=0.3; ranksep=0.5; node [shape=circle, style=filled, margin=0.1, width=0.4, height=0.4, fontname="Helvetica", fontsize=10]; edge [arrowsize=0.7]; subgraph cluster_0 { label="输入层 (第0层)"; color="#dee2e6"; style="filled"; bgcolor="#e9ecef"; node [fillcolor="#74c0fc"]; x1 [label="x₁"]; x2 [label="x₂"]; } subgraph cluster_1 { label="隐层 (第1层)"; color="#dee2e6"; style="filled"; bgcolor="#e9ecef"; node [fillcolor="#96f2d7"]; h1 [label="a₁⁽¹⁾"]; h2 [label="a₂⁽¹⁾"]; h3 [label="a₃⁽¹⁾"]; } subgraph cluster_2 { label="输出层 (第2层)"; color="#dee2e6"; style="filled"; bgcolor="#e9ecef"; node [fillcolor="#ffc078"]; o1 [label="ŷ = a₁⁽²⁾"]; } x1 -> h1; x1 -> h2; x1 -> h3; x2 -> h1; x2 -> h2; x2 -> h3; h1 -> o1; h2 -> o1; h3 -> o1; {rank=same; x1; x2;} {rank=same; h1; h2; h3;} {rank=same; o1;} }一个简单的前馈网络呈现信息的流动。输入 $x_1, x_2$(激活值 $a^{[0]}$)由隐层处理以产生激活值 $a^{[1]}$,然后这些激活值再由输出层处理以产生最终预测 $\hat{y}$(激活值 $a^{[2]}$)。图中的每根箭头都代表一个权重,它连接着一个层中神经元的输出与下一个层中神经元的输入计算。整个过程包括计算从第1层到最终层 $L$ 的每一层 $l$ 的值 $z^{[l]}$ 和 $a^{[l]}$。结果 $a^{[L]}$ 就是网络针对给定输入 $x$ 所生成的预测 $\hat{y}$。接下来的章节将详细说明每一层中线性变换 ($z$) 和激活函数应用 ($a$) 所涉及的具体计算,并逐步介绍如何使用矩阵运算来提高效率。