想象你走进一家生产“预测结果”的智能工厂:一箱箱原料从西门送进来,经过几道加工工序,成品的包装从东门送出去。这家工厂的特别之处在于,所有工序都是预先调校好的——每箱原料该加多少比例、该放什么底料、哪些原料必须打回重做,都由一套固定流程决定。原料从入口流到出口的这趟单向旅程,就是神经网络的前向传播。 在神经网络里,原料是输入特征,比如预测房价时的面积、楼层、地段评分;工序是隐藏层里的一个个神经元;成品是输出层的预测值。每一道工序都做两件事:先把上一站送来的信号按配方称重混合(加权求和)、加固定底料(偏置),再交给质检员把关(激活函数)。数据一层层流过去,最后从出口得到预测答案。这个看似简单的过程,却是整个深度学习大厦的地基——搞懂了前向传播,你才算真正知道“神经网络在算什么”。
前向传播是神经网络最基础的计算过程,是你理解反向传播、调试模型、阅读论文的最小语言单元。学会它,你就能看懂模型如何从一堆数字变出一个预测结果。
可视化演示
通过逐层前向传播动画、神经元计算细节和激活函数对比三个维度,动态展示神经网络数据从输入到输出的计算流程,直观理解加权求和与非线性变换。
本节配有交互动效(进入视口后自动加载,约 3KB)。
逐层前向传播 数据从输入层逐层加权求和 每层经激活函数非线性变换 a^(l)=f(W^(l)·a^(l-1)+b^(l))
前向传播概述
想象你站在那家工厂的参观通道上:原料从西门进来,被传送带送进第一道工序,加工完的半成品自动落入下一道工序的入口,直到东门出现包装好的成品。你顺着传送带走一遍,全程只看加工过程、不调任何机器——这趟单向参观,就是“前向传播”的完整缩影。
在神经网络里,“传送带”是层与层之间的连接。一个网络通常有输入层、若干隐藏层、输出层。每一层神经元做两件固定的事:先把上一层送来的信号做加权求和并加偏置(线性变换),再送入激活函数做非线性变换。数据从输入层出发,一层层算下去,最后在输出层得到预测值。这个从输入到输出的单向计算过程,就叫前向传播。
前向传播为什么是基础?因为反向传播要靠它“铺路”——梯度需要沿着前向传播走过的路径原路返回,才能逐层更新权重。换句话说,没有前向传播算出的结果,后面所有的学习和调参都无从谈起。它也是模型推理(预测)阶段唯一会执行的步骤,模型上线后每来一条新数据,都要跑一次前向传播。
整个前向传播就像一次完整的工厂参观:每道工序只关心自己收到的半成品,加工完就往下一道送,最终在出口看到成品。理解了这个大框架,接下来我们逐一拆开每道工序的细节。
- 预测值符号$\hat{y}$ 是模型输出的预测值,读作 “y hat“,带小帽子的 y 表示”估计出来的答案”,区别于真实答案 y。它就是流水线东门出来的成品。
- 输入向量$\mathbf{x}$ 是输入特征向量,粗体表示一整套数据,比如房价预测里的面积、楼层、地段评分,相当于一次入场的全部原料清单。
- 权重矩阵$\mathbf{W}_1$、$\mathbf{W}_2$ 是第一层、第二层的权重矩阵。每一行相当于一张配方的编号,整个矩阵就是一本配方册,记录每个输入对每个神经元的影响比例。
- 偏置向量$\mathbf{b}_1$、$\mathbf{b}_2$ 是偏置向量,相当于每道工序的固定底料,不随原料变化,负责平移整体的激活位置。
- 激活函数$f(\cdot)$ 是激活函数,像质检员,把线性变换的结果做非线性筛选,之后才传给下一层。
- 计算顺序从内往外算——先算 $\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1$,过 $f$,再算第二层,最后再激活得到 $\hat{y}$。就像流水线先走第一道工序,再走第二道工序,顺序不能乱。
输入层与特征
参观的第一站是原料登记处。一箱苹果送进工厂,工人先按“大小、颜色、甜度”逐项测量,填成一张标准化的清单。这张清单就是原料的“数字身份证”——它不加工任何东西,但接下来的每一道工序都靠它来配料。
输入层就是这个登记处。它的节点数等于特征数量,每个节点只负责承载一个特征值。比如预测房价:面积 85 平方米、房龄 10 年、距地铁站 500 米,三个特征拼成一个三维向量,原样传给下一层。输入层本身不参与计算,它的全部职责是把原始数据整理成网络能消费的格式。
这里的关键是“特征如何变成数字”。表格数据本身是数字,直接拼成向量即可;图片要展平成像素值向量;文本要先经分词、映射成词向量。无论哪种数据,最终都会以向量的形式进入网络。向量里的每个位置对应一个特征,顺序一旦定下来,整个训练过程中都不能随意更换,否则配方的含义就乱套了。
原料清单登记完毕,下一站就是配料车间——每个特征都要按比例称重,这就是加权求和。
- 向量符号$\mathbf{x}$ 粗体表示这是一整个向量,不是单个数字,代表整张原料清单。
- 单个特征$x_i$ 是第 $i$ 个特征的值,比如第一个位置装“面积=85”,第二个位置装“房龄=10”。
- 特征总数$n$ 是特征总数,决定输入层的节点个数。特征越多,输入层越宽,第一层权重矩阵的列数也越大。
- 转置符号$^{\top}$ 表示转置,把行向量写成列向量,纯粹为了矩阵运算方便,不改变数据本质。
加权求和运算
配料车间里,师傅拿出一本配方册,说:“这锅料,面积占比 60%,房龄占比 30%,距地铁站占比 10%。”他把每一项原料乘上对应的比例,倒进大桶里搅拌均匀。这个步骤,就是神经网络里最核心的加权求和。
在单个神经元里,每个输入特征 $x_i$ 都配有一个权重 $w_i$,两者相乘后全部累加,得到的结果叫“净输入” $z$。权重可正可负:正权重意味着这个特征对结果起促进作用——面积越大房价越高;负权重意味着抑制作用——房龄越老房价越低。权重的绝对值越大,这个特征在决策中的话语权就越强。
一个神经元就是一张配方,一层的神经元就是一组配方。上一层的 $n$ 个特征送到每个神经元,各自按自己的权重称重、求和,于是 $n$ 个输入变成 $h$ 个净输入($h$ 为本层神经元数)。注意,这一整个环节全都是线性运算——乘和加,没有弯弯绕绕。如果到此为止,网络再深也只是个线性模型,这就要等质检环节来补足了。
师傅拌好料,正准备下锅,忽然想起老师傅的叮嘱:不管这锅料怎么配,起锅前都必须放一勺盐——下一站,加底料。
- 净输入$z$ 是加权求和的结果,叫“净输入”,是神经元的原始冲动,还没经过任何筛选。
- 权重$w_i$ 是第 $i$ 个特征对应的权重,配方比例,可正可负,绝对值越大影响越强。
- 求和号$\sum_{i=1}^{n}$ 表示从第 1 个连加到第 $n$ 个,把所有“特征×权重”的乘积累加成一桶混合料。
偏置相加作用
老师傅的配方册扉页写着一句话:“不管这锅料怎么配,起锅前必须先放一勺盐。”这勺盐不是针对任何原料的,它的用量是固定的,与原料多少无关。没有这勺盐,汤的味道会缺少一个基准;有了它,咸淡才能灵活调节。神经网络里的偏置 $b$,就是这勺盐。
偏置是一个不乘任何输入的常数,直接加到加权和上:$z = \sum w_i x_i + b$。它的数学作用是让线性函数不必强制经过原点。没有偏置时,输入全为 0 则输出必为 0,决策边界会被死死钉在原点附近;有了偏置,神经元可以“抬起来”或“压下去”,从而适应各种数据分布。
在实现上,偏置通常是每个神经元一个数值,整层拼成一个偏置向量。它和权重一起组成这一层的全部可学习参数。训练时,反向传播会同时更新权重和偏置——但请注意,前向传播阶段偏置只是被动地参与加法,它不会自己发生变化。这也是初学者最容易忽略的地方:偏置是参数,但不是前向传播阶段要更新的东西。
底料放好了,混合料可以下锅了。但下锅前还有一道工序——质检员要按标准把关,这就是激活函数。
- 加权和$\sum_{i=1}^{n} w_i x_i$ 是上一节算出的原料混合液,配方称重后的半成品。
- 偏置$b$ 是偏置常数,不随输入变化,固定底料。它在每个神经元里各有一个值,合起来就是偏置向量。
- 整体意义整个式子 $z = \sum w_i x_i + b$ 是神经元收到的完整信号,下一步就要交给质检员了。
激活函数筛选
质检员老张站在传送带旁,手里握着一把尺子,规则只有一条:数值为负的一律打回,数值为正的原样放行。这就是世界上用得最多的激活函数——ReLU:$a = \max(0, z)$。它简单粗暴,却撑起了深度学习的大半个江山。
如果每层只做加权求和加偏置,那么无论堆多少层,整个网络数学上仍然只是一个线性函数——就像工厂每一道工序都只是“翻炒一下”,做不出形状复杂的产品。激活函数的使命,就是往网络里注入非线性。有了非线性,神经元才能在输入空间中刻出弯弯曲曲的边界,去拟合真实世界的复杂关系。
常见激活函数各有性格:ReLU 负数清零、正数保留,计算最快但可能让神经元“死亡”;Sigmoid 把任意实数压缩到 0 到 1,适合做概率输出;Tanh 压到 -1 到 1,中心对称,梯度更平稳。隐藏层默认首选 ReLU,输出层则根据任务另选。激活函数的作用也可以理解为“筛选”:它不改变信号的方向,只决定哪些信号更有资格流向下游。
质检通过后,半成品被送上下一道传送带。这一道工序的出口,恰好是下一道工序的入口——流水线就这样一层层延伸下去。
- 输出$a$ 是激活后的输出,也是这一层真正传给下一层的信号,相当于质检合格的半成品。
- 比较运算$\max(0, z)$ 把 $z$ 和 0 比大小,取较大的那个——正数留下,负数变 0。
- 非线性本质max 操作看似简单,却是分段线性函数。许多个分段线性组合起来,就能逼近任意形状的曲线。
层间维度变换
流水线上,苹果进去,果泥出来;果泥加了配方,变成混合酱;混合酱灌装成瓶,变成成品。半成品的形态每经过一道工序就变一次。神经网络里也一样:每一层的输出向量,就是下一层的输入向量,而且维度可能发生变化——这取决于权重矩阵的形状。
假设输入维度是 3(三个特征),第一隐藏层有 5 个神经元,那么权重矩阵 $\mathbf{W}_1$ 的形状是 5×3:5 行代表 5 个神经元(5 张配方),3 列代表 3 个输入特征。输入向量乘上这个矩阵,得到维度为 5 的输出向量 $\mathbf{h}$。如果输出层有 1 个神经元,第二层权重 $\mathbf{W}_2$ 就是 1×5,最终输出 1 维预测值。
这个“维度逐层变化”的机制,让网络可以像漏斗一样先变宽再收窄,或者反过来。理解它最有用的场景是调试代码:当你看到 "matrix multiplication dimension mismatch" 的报错,99% 是因为权重矩阵的形状和输入维度对不上。记住一个口诀:前层输出维度 = 后层权重矩阵的行数,后层权重矩阵的列数 = 上一层节点数。
半成品终于走到了出厂质检线。接下来的问题是:这瓶果酱到底算合格还是优等?输出层负责给出最终判断。
- 隐藏层输出$\mathbf{h}$ 是隐藏层的输出向量,维度等于本层神经元数,相当于半成品的新形态。
- 输出层计算$\mathbf{y} = \mathbf{W}_2 \mathbf{h} + \mathbf{b}_2$ 把隐藏层结果再做一次线性变换。注意这里先不写激活,最终用不用要看出厂质检任务。
- 首尾相接第一个式子末尾的 $\mathbf{h}$ 就是第二个式子开头的 $\mathbf{h}$,两个式子靠它连接,像传送带咬合的齿轮。
输出层与预测
出厂质检线上,工人最后看一眼成品,贴上标签:这一瓶是“优等品”,那一瓶是“合格品”。输出层做的正是这件事。不过,任务不同,贴标签的方式也不同:预测房价是回归任务,输出层直接报一个连续数字,比如“385 万”;判断图片里是猫还是狗是分类任务,输出层输出每个类别的概率,所有概率加起来等于 1。
分类任务最常用 Softmax 作为输出层的“贴标签方式”。Softmax 先给每个类别的原始打分 $z_i$ 做指数变换,把可能为负的分数变成正数,再除以所有类别分数之和,让它们归一化成概率。这样,分数最高的类别概率最大,而且各概率之间是竞争关系——一个类别的概率升高,其他类别的概率必然下降。
为什么不用简单地“取最大值”?因为 Softmax 不仅给出“谁是冠军”,还保留了“冠军领先多少”的置信度:0.93 的猫概率和 0.51 的猫概率,对业务决策的意义完全不同。而且 Softmax 处处可导,方便反向传播更新参数。它是前向传播的最后一步,也是整个模型的“门面”——用户看到的最终预测,就是从这一步出来的。
出厂标签贴好了,一件产品的旅程到此结束。但工厂的经营之道远不止一条流水线——如果有一百箱原料同时进来,该怎么处理?答案是:把流水线升级成批量生产线。
- 第 i 类概率$P(y=i)$ 是模型认为样本属于第 $i$ 个类别的概率,比如 P(是猫)=0.93。
- 原始打分$z_i$ 是输出层给第 $i$ 个类别的原始打分(logit),可以是任意实数,正负都行。
- 指数变换$e^{z_i}$ 把任意实数变成正数,放大打分差距:打分高的指数后涨得更多。
- 归一化分母$\sum_{j=1}^{K} e^{z_j}$ 是所有类别打分指数后的总和,用它做除法,把每个分数压到 0~1 之间且总和为 1。
矩阵批量加速
一家工厂如果一次只加工一箱苹果,再好的配方也撑不起大规模生产。聪明的做法是让生产线同时处理一百箱:所有箱子排队进场,一起称重、一起拌料、一起质检。前向传播里的矩阵运算,就是这条批量生产线。
前面讲的加权求和是针对单个样本的。把 $N$ 个样本拼成一个矩阵 $\mathbf{X}$(每行一个样本),一层计算就写成 $\mathbf{Z} = \mathbf{W}\mathbf{X}^{\top} + \mathbf{b}$。这样一来,原本要写 $N$ 次循环的加权求和,变成一次矩阵乘法。别小看这个“打包”,现代深度学习能处理海量数据,靠的正是 GPU 把矩阵乘法拆成成千上万个并行单元同时计算。
从代码角度看,矩阵运算只是“将很多次加权求和组织在一起”,数学本质没有变。PyTorch 里的 x @ w.T + b、NumPy 里的 x.dot(w.T) + b,背后都是这套逻辑。理解矩阵形状是读写神经网络代码的第一道门槛:输入 $(N, d)$ 乘权重转置 $(d, h)$,得到 $(N, h)$——$N$ 个样本在 $h$ 个神经元上的净输入,一次性全部算完。
批量生产线让效率飙升千倍,前向传播也因此有了处理亿级数据的底气。回顾整条流水线:原料登记、按配方称重、加固定底料、质检筛选、逐层传递、出厂贴标签——每一步都环环相扣。这篇讲透了前向传播,接下来你就能自信地走向反向传播,看看工厂是如何根据产品反馈来修改配方的。
---
- 批量输入$\mathbf{X}$ 是批量输入矩阵,$N$ 行 $d$ 列,每行是一个样本的特征向量,一百箱原料排好队。
- 权重转置$\mathbf{W}^{\top}$ 是权重矩阵的转置,把“每个神经元的配方列”翻转为“每个特征对应的权重行”,让矩阵乘法形状匹配。
- 批量结果$\mathbf{Z}$ 是批量净输入矩阵,$N$ 行 $h$ 列,每行是一个样本在 $h$ 个神经元上得到的加权求和结果。
- 广播相加$\mathbf{b}$ 是偏置向量,加到矩阵的每一行上——底料自动落入每一箱原料,这叫广播机制。
AI 应用场景
图像分类推理
阶段:模型推理(前向传播)
解决的问题:传统图像识别需要人工设计“什么是猫”的规则——毛色、耳朵形状、瞳孔角度,任何规则都无法覆盖现实中千变万化的照片角度、光线和遮挡。人工规则方案既笨重又脆弱。
具体案例:一家安防公司的摄像头抓拍一张照片,训练好的 CNN 模型权重被冻结,图片像素展平后向量进入输入层,经过若干卷积层和全连接层的前向传播,输出层用 Softmax 给出 P(猫)=0.93、P(狗)=0.06、P(其他)=0.01,系统据此触发“猫出没”告警。整个过程只需几十毫秒,完全依赖前向传播。
银行信贷风控
阶段:在线预测(前向传播)
解决的问题:贷款申请需要秒级判断违约概率,传统评分卡靠人工设定各个特征的权重和阈值,面对大量复杂特征组合时调整成本极高,且难以捕捉非线性关系。
具体案例:用户提交申请,系统把收入、负债率、历史逾期次数、职业稳定性等 20 个特征拼成向量。数据经过一个有 ReLU 隐藏层的网络前向传播,输出层用 Sigmoid 得出违约概率 0.22。风控部门据此将用户划入“低风险”档,自动审批通过。每一笔贷款的判断都是一次前向传播。
推荐系统点击率预估
阶段:在线推理(前向传播)
解决的问题:信息流推荐需要在几百个候选内容里快速选出用户最可能点击的,传统协同过滤只利用交互计数,无法利用用户和内容的丰富特征。
具体案例:用户画像特征(年龄、活跃时段、历史点击类目)与候选内容特征(作者、题材、热度)拼接成向量,送入深层网络。前向传播输出点击概率,推荐系统按概率排序,只把 Top 20 展示给用户。由于矩阵批量加速,几千个候选可以打包成矩阵一次完成前向传播。
Python 演示
import numpy as np def relu(x): return np.maximum(0.0, x) def softmax(x): e = np.exp(x - np.max(x, axis=1, keepdims=True)) return e / np.sum(e, axis=1, keepdims=True) class SimpleNet: def __init__(self, in_dim=4, hidden_dim=5, out_dim=3): self.w1 = np.random.randn(in_dim, hidden_dim) * 0.5 self.b1 = np.zeros(hidden_dim) self.w2 = np.random.randn(hidden_dim, out_dim) * 0.5 self.b2 = np.zeros(out_dim) self.gc_count = 0 def forward(self, x): self.gc_count += 1 z1 = x @ self.w1 + self.b1 h = relu(z1) z2 = h @ self.w2 + self.b2 return softmax(z2) if __name__ == "__main__": np.random.seed(7) net = SimpleNet() x_batch = np.array([[0.5, 1.2, -0.8, 2.0], [-1.0, 0.3, 1.5, 0.7]]) y_pred = net.forward(x_batch) print("预测概率:") print(y_pred) print("每行概率和为:", y_pred.sum(axis=1)) print("前向传播调用次数:", net.gc_count)
np.random.seed(7)固定随机种子,让权重初始化结果可复现,方便对比运行结果。self.w1 = np.random.randn(in_dim, hidden_dim) * 0.5初始化第一层权重矩阵,形状为 4×5,小数值防止激活值过大。z1 = x @ self.w1 + self.b1批量前向传播的加权求和,@是矩阵乘法,一次算完所有样本。h = relu(z1)隐藏层过 ReLU 激活:负数清零,正数保留。np.maximum(0.0, x)实现 ReLU 的核心比较运算,返回逐元素的最大值。np.exp(x - np.max(x, axis=1, keepdims=True))Softmax 先减去每行最大值再取指数,防止数值溢出。e / np.sum(e, axis=1, keepdims=True)归一化,让每行概率之和等于 1。self.gc_count += 1用计数器记录前向传播的调用次数,方便调试模型被调用了几次。
常见误区
误区我觉得一个特征的权重绝对值最大,就说明这个特征对预测结果最重要,调参时只需要盯着权重最大的特征看。
正解权重绝对值大确实代表该特征的“名义影响力”强,但实际影响力还要看输入特征本身的数值范围。如果特征 A 的权重是 10 但取值永远在 0~0.01 之间,特征 B 的权重是 0.5 但取值在 0~1000 之间,实际贡献反而是 B 更大。正确做法是结合输入分布或使用特征重要性工具评估,不能只看权重。这就像称重配方里盐的比例最大,但如果每锅料只有一克,那勺盐的绝对量其实很小。
为何常见:人脑天然倾向用“一个数字的大小”排序,忽略了权重是与输入相乘后共同决定结果的,两者必须成对看。
误区既然加权求和已经算得很复杂了,激活函数只是额外加一步筛选,去掉它网络还能算得更快。
正解没有激活函数,每一层都只是线性变换,多层线性函数的复合仍然是线性函数。也就是说,无论堆多少层,整个网络的表达能力都和一层的线性模型一样,别说识别猫狗,连 XOR 这种简单的非线性分类都做不了。激活函数是网络“变深就有用”的根本原因,就像没有质检员的流水线,工序再多也只是把原料反复翻炒,做不出形态复杂的成品。
为何常见:初学者看到的公式里激活函数只是一步 max 或 sigmoid,感觉像“附加操作”,没有意识到它是网络表达能力的决定性组件。
误区偏置只是一个常数加法,加不加差别不大,省掉它还能减少一些参数。
正解没有偏置,神经元的加权和为零时输出必然为零,决策边界被强制经过原点。对于不经过原点的数据分布,模型需要更多神经元才能勉强拟合,训练更慢、效果更差。偏置像那勺固定底料,虽然不起眼,却决定了整锅汤的咸淡基准。实践中几乎不会去掉偏置,因为它只增加少量参数却大幅提升拟合灵活性。
为何常见:偏置在公式里只有一个 b,参数数量远少于权重矩阵,容易被当成“不重要的小角色”。
误区看到 Z = XWᵀ + b 这种公式,觉得矩阵运算是一种神秘的高级数学技巧,跟前面讲的加权求和是两套不同的东西。
正解矩阵乘法本质上就是“很多次加权求和的打包”。单个神经元的加权求和是 $z = \sum w_i x_i$,一行矩阵乘法不过是把这一堆乘加一次性算完,多行则是多个样本同时算。深度学习的真正突破之一,就是发现这种打包能让 GPU 并行加速。它不是新算法,而是同一算法的“批量流水线版本”。
为何常见:矩阵公式看起来符号多、维度要匹配,视觉上比求和公式唬人,容易让人误以为背后有额外的新数学。
面试题
Q1. 神经网络前向传播中,数据流动的正确方向是?
- A.输出层、隐藏层、输入层逆向流动
- B.输入层、隐藏层、输出层顺流而下← 正确答案
- C.输入层和输出层同时向中间汇聚
- D.只在输入层内循环计算
答案:B。前向传播就是数据从输入层进入,逐层经过隐藏层,最后从输出层产出的单向流动,像工厂原料从第一道工序流到最后一道。逆向流动是反向传播在更新权重时做的事,方向正好相反。
Q2. 在单个神经元的计算中,偏置 b 的主要作用是?
- A.放大所有输入特征的数值
- B.让线性结果平移,拟合更灵活← 正确答案
- C.让多个样本的得分互相抵消
- D.只对输出层神经元生效
答案:B。偏置是不随输入变化的常数,直接加到加权和上,让决策边界不必经过原点,可以上下平移,就像固定底料调整整锅汤的咸淡。它不对输入做缩放,也不是样本间的抵消,而且每一层都有偏置。
Q3. 以下哪个是 ReLU 激活函数的定义?
- A.f(z) = 1 / (1 + e⁻ᶻ)
- B.f(z) = tanh(z)
- C.f(z) = max(0, z)← 正确答案
- D.f(z) = z 对所有 z 恒成立
答案:C。ReLU 把负数清零、正数保留,即 f(z) = max(0, z)。A 是 Sigmoid,B 是 Tanh,D 是恒等映射(等于没有激活函数)。ReLU 因为计算简单、梯度消失轻,成为隐藏层最常用的激活函数。
Q4. 隐藏层必须搭配非线性激活函数,最重要的原因是?
- A.让数值不超过浮点数上限
- B.让权重在训练中自动变小
- C.提升每一层的计算速度
- D.防止多层网络退化为线性模型← 正确答案
答案:D。没有非线性激活,多层线性变换复合后仍然是线性函数,堆再多层也只是一层的效果,无法拟合复杂边界。激活函数注入非线性,网络才真正“变深”。它不是为了防溢出、降权重或提速。
Q5. 输入维度为 4、隐藏层神经元数为 5 时,第一层权重矩阵 W₁ 的形状是?
- A.5 行 4 列
- B.4 行 5 列← 正确答案
- C.4 行 1 列
- D.5 行 1 列
答案:B。权重矩阵形状是“本层神经元数 × 上一层节点数”,即 5×4。矩阵乘法中每行是一个神经元的配方,4 列对应 4 个输入特征。选成 4×5 会把输入和输出的乘法维度弄反。
Q6. Softmax 输出层最核心的作用是?
- A.让模型的预测结果总是整数
- B.把原始打分变成和为 1 的概率分布← 正确答案
- C.把负数全部变成正数并保留原值
- D.对多个类别的得分取平均值
答案:B。Softmax 先对打分做指数变换转成正数,再除以所有类别的指数之和,使得输出是一个概率分布:每类概率在 0 到 1 之间,所有概率加起来等于 1。它保留类别间的竞争关系和置信度,而不是取整、取平均或单纯取正。
Q7. 对 N 个样本做批量前向传播,输入矩阵 X 形状为 (N, d),权重矩阵 W 形状为 (h, d),则本层净输入 Z 的形状是?
- A.(N, d)
- B.(d, h)
- C.(N, h)← 正确答案
- D.(h, h)
答案:C。批量前向传播计算 Z = XWᵀ + b,(N, d) 与 (d, h) 相乘得到 (N, h),即 N 个样本在 h 个神经元上的净输入。这是矩阵批量加速的核心形状关系,理解它才能避免代码里的维度报错。
Q8. 以下哪些是神经网络中常见的激活函数?
- A.ReLU 激活函数← 正确答案
- B.Sigmoid 激活函数← 正确答案
- C.Softmax 输出层函数← 正确答案
- D.均值滤波图像算法
答案:ABC。ReLU 和 Sigmoid 是最常用的隐藏层激活函数,Softmax 常用于分类输出层做概率归一化。均值滤波是图像处理里的去噪算法,不属于神经网络激活函数。
Q9. 关于前向传播的说法,正确的有?
- A.它是反向传播计算梯度的前提← 正确答案
- B.权重更新发生在前向传播阶段
- C.每一层都包含加权求和与激活计算← 正确答案
- D.前向传播能直接获得损失函数值
答案:AC。前向传播搭好计算路径,反向传播才沿路径回传梯度更新权重,所以 A 对、B 错。隐藏层每层都做加权求和、加偏置、过激活,C 对。损失函数要在拿到预测值和真实标签后另外计算,不属于前向传播本身,D 错。
Q10. 完成一次图像分类的前向传播,需要经过哪些运算?
- A.输入特征与权重矩阵相乘← 正确答案
- B.逐层加上偏置向量求和← 正确答案
- C.激活函数引入非线性变换← 正确答案
- D.直接利用梯度更新全部权重
答案:ABC。前向传播的核心链路就是“加权求和 → 加偏置 → 激活 → 下一层”,对应 A、B、C。权重更新是反向传播和优化器的职责,前向传播阶段权重只参与计算、不发生变化,所以 D 错。