Python 与基础模型回顾

\[ \begin{align}\begin{aligned}\newcommand{\ba}{\boldsymbol{a}} \newcommand{\bb}{\boldsymbol{b}} \newcommand{\be}{\boldsymbol{e}} \newcommand{\bw}{\boldsymbol{w}} \newcommand{\bx}{\boldsymbol{x}} \newcommand{\by}{\boldsymbol{y}} \newcommand{\bz}{\boldsymbol{z}} \newcommand{\bd}{\boldsymbol{d}} \newcommand{\bv}{\boldsymbol{v}} \newcommand{\bs}{\boldsymbol{s}}\\\newcommand{\btheta}{\boldsymbol{\theta}} \newcommand{\bbeta}{\boldsymbol{\beta}} \newcommand{\bgamma}{\boldsymbol{\gamma}} \newcommand{\bsigma}{\boldsymbol{\sigma}} \newcommand{\md}{\mbox{d}} \newcommand{\bmu}{\boldsymbol{\mu}} \newcommand{\bone}{\boldsymbol{1}} \newcommand{\trans}{^{\rm\scriptsize T}} \newcommand{\var}{\mathrm{var}}\\\newcommand{\bA}{\boldsymbol{A}} \newcommand{\bB}{\boldsymbol{B}} \newcommand{\bC}{\boldsymbol{C}} \newcommand{\bD}{\boldsymbol{D}} \newcommand{\bG}{\boldsymbol{G}} \newcommand{\bI}{\boldsymbol{I}} \newcommand{\bM}{\boldsymbol{M}} \newcommand{\bP}{\boldsymbol{P}} \newcommand{\bS}{\boldsymbol{S}} \newcommand{\bU}{\boldsymbol{U}} \newcommand{\bW}{\boldsymbol{W}} \newcommand{\bX}{\boldsymbol{X}} \newcommand{\bY}{\boldsymbol{Y}} \newcommand{\bZ}{\boldsymbol{Z}} \newcommand{\cotp}{\textcolor[RGB]{48,209,88}{TP}} \newcommand{\cotn}{\textcolor[RGB]{100,210,255}{TN}} \newcommand{\cofp}{\textcolor[RGB]{94,92,230}{FP}} \newcommand{\cofn}{\textcolor[RGB]{191,90,242}{FN}}\\\newcommand{\numcotp}{\textcolor[RGB]{48,209,88}{50}} \newcommand{\numcotn}{\textcolor[RGB]{100,210,255}{30}} \newcommand{\numcofp}{\textcolor[RGB]{94,92,230}{10}} \newcommand{\numcofn}{\textcolor[RGB]{191,90,242}{10}} \DeclareMathOperator*{\argmin}{arg\,min}\end{aligned}\end{align} \]

Python 与基础模型回顾#

学习目标与记号#

  深度学习实验依赖可靠的数据表示、数值计算和基础统计模型。本章以 PythonNumPy 为工具,回顾数组、广播和向量化,并通过线性回归、逻辑回归、损失函数与梯度优化建立“数据—模型—损失—优化—评估”的基本流程;学习目标是能够辨认张量维度、解释概率预测,并完成可复现且无数据泄漏的基础实验。

  1. 准确解释 Python 科学计算、数据表示与线性模型;

  2. 根据公式和张量维度分析概率分类,并识别常见实现错误;

  3. Python 实现或验证实验可复现性,通过受控实验解释结果。

  本章沿用统一记号:普通小写字母表示标量,粗体小写字母表示向量,粗体大写字母表示矩阵或高阶张量;样本编号写作下标;转置写作 \(\trans\)⁠。除非另有说明,单个向量均为列向量。若第 \(i\) 个样本的特征列向量为 \(\bx_i\in\mathbb{R}^{d}\)⁠,则由 \(n\) 个样本组成的特征矩阵统一写为 \(\bX=[\bx_1\trans;\ldots;\bx_n\trans]\in\mathbb{R}^{n\times d}\)⁠。方括号中的分号表示换到矩阵的下一行,因此 \(\bx_i\trans\)\(\bX\) 的第 \(i\) 行;后文凡是由多个列向量按行组成矩阵,都采用这种写法。本章各节的程序均应同时检查数值结果和数组维度。

核心推导与实现核验#

核心关系

\[\text{数据}\rightarrow\text{模型}\rightarrow\text{损失}\rightarrow\text{优化}\rightarrow\text{评估}.\]

  推导路径。 这条流程先把原始样本变成维度明确的数组,再定义从输入到预测的函数,以损失量化预测误差,用优化算法估计参数,最后只在独立数据上报告泛化性能。

评估原则

  测试集只能用于最终评价,不能参与模型、超参数或训练方案的选择。模型选择和调参应使用验证集;确定并冻结全部方案后,再使用测试集报告模型的最终性能。

数据规模

  根据 按行组成矩阵的记号⁠,若数据集有 \(n\) 个样本、每个样本有 \(d\) 个特征,则特征矩阵 \(\bX=[\bx_1\trans;\ldots;\bx_n\trans]\) 的大小为 \(n\times d\)⁠,标签向量 \(\by\) 包含 \(n\) 个标签。

常见误区

  把代码能运行当作模型正确、在训练集上调全部设置、以及混用样本轴和特征轴,都会产生难以察觉的错误。

动手检查

  把公式 \(\text{数据}\rightarrow\text{模型}\rightarrow\text{损失}\rightarrow\text{优化}\rightarrow\text{评估}\) 分解为可独立检查的中间量,使用简单数据手工计算结果,并检查输出是否满足模型必须具备的性质;如果已有可靠的程序库实现,还应将两者的结果进行比较。

数值稳定性与规模

  先检查公式中哪些运算可能造成数值过大、数值过小、除以零或矩阵求解不稳定,再采用相应的稳定计算方法,例如改写指数与对数运算、在分母中加入很小的正数、限制数值范围或分批处理数据。最后使用很大、很小或接近零的输入进行测试,确认程序不会产生无穷大或无效数值。

本章小结#

  1. 先确定数据与张量约定,再讨论模型。

  2. 损失函数用于指导模型训练,评价指标用于衡量模型在实际任务中的表现。

  3. 可复现、无泄漏的实验流程是后续章节的共同基础。