P2-2.2 Sigma(Σ)与重复计算¶
Section ID:
P2-2.2Version:v2026.09.08
Sigma(Σ)是将多个值相加的计算压缩写出的记法。
Sigma 看起来可能陌生,但核心很简单。它表示:把多个值重复地相加。在 AI 文档里,当解释很多数据的总和、平均值(mean)、损失和(loss sum)、批次级(batch-level)计算时,它会经常出现。
重复范围与相加的项¶
| 标准 | 为什么重要 |
|---|---|
| Sigma 是在要求重复“同样形状的加法”的压缩记法 | 它让你把陌生符号重新读成计算结构。 |
| 索引是区分“当前加的是第几个对象”的名字 | 它让你不会丢掉重复位置。 |
| Sigma 在 AI 文档里常见,是因为许多数据会被聚合成总和、平均值和损失 | 它展示了为什么统计和损失聚合会共用同一种记法。 |
Sigma 的组成¶
Sigma 记法同时写出重复范围和每次相加的项。
这一行里包含了四个信息。
- 大符号 \(\sum\):要求你相加
- 下方 \(i=1\):从哪里开始重复
- 上方 \(n\):重复到哪里结束
- 右边 \(x_i\):每次要加什么
像这样拆开看之后,sigma 就不再像是突然出现的困难符号,而更像是一句把重复加法简短写下来的句子。
- 从
i = 1开始。 - 重复到
i = n为止。 - 每一次都把
x_i加进去。
所以,sigma 并不只是表示“和”这个结果的符号,它也是把“聚合什么、按什么顺序、在什么范围内聚合”一起写出来的记法。这个视角在回想代码里的循环时也很有用。
但这并不意味着 sigma 和代码循环完全相同。数学记法会把计算结构压缩展示,而代码会把它展开成真实执行步骤。
展开一个简单的 Sigma 式¶
读 sigma 最好的方式,就是把一个短式子直接展开。
这个式子表示:当 i 从 1 变到 3 时,把 i 本身相加。
所以它可以展开成下面这样。
如果看一种更接近 AI 文档的形式,会是下面这样。
如果 \(x_1=2\)、\(x_2=4\)、\(x_3=6\),就会算成这样。
如果再继续算平均值,就会变成下面这样。
索引与循环¶
在 sigma 里,i 就是索引(index)。索引是告诉你“现在看到的是第几个对象”的名字。
这里每个部分可以这样读。
i:表示重复位置的索引1:起始位置n:结束位置x_i:第i个值Σ:告诉你去改变i并把值加起来的记号
在代码里,大致会像下面这样。
包含四个值的列表 values。 打印总和 10。
示例运行结果:
公式中的 i 和代码中的 value 并不完全相同,但它们的连接点在于:二者都指向重复过程中当前正在处理的对象。
总和与平均值¶
平均值(mean)是理解 sigma 的很好例子。把所有值加起来,再除以个数,就得到平均值。
如果写成 sigma,就会压缩成下面这样。
这个式子可以这样读。
- 让
i从 1 变到n,把所有x_i加起来。 - 再把这个和除以
n。
在代码里,可以写成下面这样。
包含四个值的列表 values。 打印平均值 2.5。
示例运行结果:
如果用 NumPy 数组,还可以更短。
包含四个值的 NumPy 数组 values。 打印平均值 2.5。
示例运行结果:
这里的 values.mean() 会在内部执行平均值计算。它没有直接把 sigma 写出来,但“收集很多值并对其计算”的结构并没有变。
样本损失与平均损失¶
在机器学习中,损失(loss)会用数字表示模型输出和参考值之间的差距。如果只有一个数据点,那么只需要算一次损失。
但在真实学习里,数据通常有很多个。对每个数据点,都有一个 prediction 和 target,对每个数据点,也都会产生一个 loss。
如果把整个损失简单相加,就会变成下面这样。
写成 sigma 就变成下面这样。
平均损失(mean loss)就是再把这个和除以数据个数。
在代码里可以这样看。
预测列表 predictions 和答案列表 targets。 打印样本损失的平均值。
示例运行结果:
这个例子把真实深度学习训练代码简化了。关键在于:因为数据很多,所以同一个计算会被重复,而重复的结果会被求和或求平均。
批次损失聚合¶
在深度学习里,通常不是一条一条地处理数据,而是按一个批次(batch)去处理很多数据。一个 batch 里有许多样本(sample),模型会对每个样本生成一个输出。这里,batch 是很多输入的组合,prediction 是对每个输入产生的模型输出,loss 是每个输出和参考值之间的差距,mean_loss 则是这个 batch 中所有损失的平均值。
即使在这里,sigma 的视角也不会变。你仍然是在看 batch 里的每个样本,分别算出每个样本的损失,然后把这些损失求和或求平均。
循环与数组运算¶
前面三个样本的平方误差分别约为 0.04、0.01、0.25,平均值为 (0.04 + 0.01 + 0.25) / 3 = 0.1。NumPy 在数组的每个位置执行减法和平方,再用 mean() 求平均。
输入是预测数组 predictions 和答案数组 targets,输出是平均损失。
示例运行结果:
循环虽然不可见,但重复计算并没有消失。数组计算只是把表达方式改成了“一次处理很多值”。
检查清单¶
- 你能把 sigma 解释为“压缩重复加法的记法”吗?
- 你能区分索引、起始位置、结束位置和被加的项吗?
- 你能用 sigma 和代码两种方式解释平均值吗?
- 你能说明对很多数据的损失进行求和或求平均的流程吗?
- 你能说明循环和数组计算都能与 sigma 记法对应吗?
- 当 sigma 出现时,你能用“到底在加什么、加多少次?”去把它展开吗?
- 你能说明为什么 sigma 会帮助之后阅读统计、损失计算、批次计算和优化吗?
- 你能把一个简单的 sigma 式按项展开并算出总和或平均值吗?
- 你能用 sigma 和代码把平均值、损失、批次计算连接成同一种聚合结构吗?
来源与参考资料¶
- Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong, Mathematics for Machine Learning, Cambridge University Press, 2020, 确认日期:2026-07-19.
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press, 2016, 确认日期:2026-07-19.
- Charles R. Harris et al., Array Programming with NumPy, Nature, 2020, 确认日期:2026-07-19.
- NumPy Developers, numpy.sum, NumPy User Guide, 确认日期:2026-07-19. 这个官方参考资料说明了数组元素求和与按轴求和。
- NumPy Developers, numpy.mean, NumPy User Guide, 确认日期:2026-07-19. 这个官方参考资料支持平均值计算和
mean()示例。