\[ \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 实现和验证完整训练流程。
准确解释层与参数、前向传播与后向传播;
根据每层的输入数量和激活函数选择合理的参数初始化方法,并解释初始化尺度为什么需要与激活函数相匹配;
根据公式和张量维度分析优化,并识别常见实现错误;
用 Python 实现或验证分类评估,通过受控实验解释结果。
本章沿用统一记号:普通小写字母表示标量,粗体小写字母表示向量,粗体大写字母表示矩阵或高阶张量;层编号写作上标 \([l]\),样本或时间编号写作下标;转置写作 \(\trans\)。除非另有说明,批量样本按行存放。本章各节的程序均应同时检查数值结果和数组维度。
核心推导与实现核验
核心关系
\[\ba^{[l]}=g^{[l]}(\bW^{[l]}\cdot\ba^{[l-1]}+\bb^{[l]}).\]
推导路径。 每层先做仿射变换再做非线性变换;根据复合函数的链式法则,从输出层开始进行后向传播以计算各层的误差信号,并由输入激活与误差信号的外积得到权重梯度。
关键条件
若所有隐藏层都用恒等激活,多层仿射映射的复合仍是一个仿射映射,因此增加线性层不会扩大可表示的函数类。
数据规模
对于单个样本,若第 \(l-1\) 层有 \(d^{[l-1]}\) 个神经元,第 \(l\) 层有 \(d^{[l]}\) 个神经元,则权重 \(\bW^{[l]}\) 的大小为 \(d^{[l]}\times d^{[l-1]}\),偏置 \(\bb^{[l]}\) 包含 \(d^{[l]}\) 个元素。
常见误区
只观察训练损失无法判断泛化;层编号、样本编号与迭代编号混写会直接导致推导和代码维度错误。
数值稳定性与规模
二分类损失应直接根据输出层的线性运算结果计算,以减少数值溢出和对零取对数的风险。权重初始化可参考 网络模型参数的初始化:根据每层的输入数量选择合适的初始数值范围,并使初始化尺度与激活函数相匹配。训练过程中应记录各层激活值和梯度的大小,以便发现梯度消失或梯度爆炸。如果梯度过大,应先检查后向传播公式、张量维度和学习率是否正确;确认这些方面没有问题后,再考虑使用梯度裁剪等技术限制梯度的整体大小。
本章小结
层编号写作上标 \([l]\),样本编号写作下标。
非线性激活使多层网络超越单一仿射映射。
推导、实现与评估都应持续检查维度和数据边界。