第 16 章练习与答案
全部数值为虚构教学设定。先在纸上算,再运行代码核对。

🌈 关于《AI 零基础 36 讲》课后训练
📚 与正式讲解配套学习
本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI
使用逐步进入编程、模型训练和大模型应用开发。
✍️ 先独立作答,再核对答案
训练围绕本章知识安排概念判断、结果分析或动手任务,并提供参考答案与解释。建议先读完对应的正式文章,再独立作答;遇到困难时回看相关例子,最后核对答案。
💻 代码题请亲手运行
观察程序输出,确认自己能解释结果、发现错误并完成修复。做完一道题,也要弄清答案为什么成立。
练习
- 对 10、20、30 计算均值、按 N 为分母的方差和标准差,并写出单位。
- A 组 18、20、22 的
var(ddof=0)与var(ddof=1)各是多少?为什么不同? - 假设公平骰子,事件"点数大于 4"的概率是多少?投三次是否一定出现一次?
- 对
L(w)=(w-3)²+1,计算 w=1、3、5 时的损失与导数,判断局部调整方向。 - 从 w=1 出发,以学习率 0.25 更新两次,写出每次的新参数与损失。
- 从 w=9 出发,学习率 0.5 与 1.0 各会怎样?如果导数为零,是否对所有函数都能断定最低点?
参考答案
1. 单位不能漏
均值为 20 分钟,方差为 200/3,约 66.67 分钟平方,标准差约 8.16 分钟。方差在描述分散程度,不评价学习效果。
python
import numpy as np
values = np.array([10, 20, 30])
print(round(values.mean(), 2), round(values.var(ddof=0), 2), round(values.std(ddof=0), 2))
输出为 20.0 66.67 8.16。
2. 分母不同
平方差之和为 8。除以 N=3 得到约 2.67,除以 N-1=2 得到 4。本章描述这三条记录时使用前者;在通常的抽样假设下估计总体方差时常使用后者。
3. 概率和次数
事件包含 5、6 两个结果,概率为 2/6=1/3。投三次不保证刚好出现一次,也可能一次都没有。这里假设每次投掷遵循同一个公平骰子模型。
4. 导数正负
| w | 损失 | 导数 | 局部降低损失的方向 |
|---|---|---|---|
| 1 | 5 | -4 | 增大 w |
| 3 | 1 | 0 | 已是本函数最低点 |
| 5 | 5 | 4 | 减小 w |
这里的"局部"对应足够小的移动,大步跨过底部后损失可能增加。
5. 逐步重算
第一步导数为 -4,参数变为 1-0.25×(-4)=2,损失为 2。第二步导数为 -2,参数变为 2-0.25×(-2)=2.5,损失为 1.25。
python
from examples.math_core import descent
print([(row["w"], row["loss"]) for row in descent(1, 0.25, 2)])
实际输出为 [(1.0, 5.0), (2.0, 2.0), (2.5, 1.25)]。
6. 走一步与来回跳
学习率 0.5 使第一步直接到 w=3,之后留在最低点。学习率 1.0 使参数在 9 与 -3 之间振荡,损失保持 37。
python
from examples.math_core import descent
for rate in [0.5, 1.0]:
print(rate, [(row["w"], row["loss"]) for row in descent(9, rate, 2)])
实际输出如下。
text
0.5 [(9.0, 37.0), (3.0, 1.0), (3.0, 1.0)]
1.0 [(9.0, 37.0), (-3.0, 37.0), (9.0, 37.0)]
导数为零还可能对应最大值或其他平坦位置。需要结合函数形状判断,本章的最低点由非负平方项确认。