\[ \begin{align}\begin{aligned}\newcommand{\ba}{\boldsymbol{a}}
\newcommand{\bb}{\boldsymbol{b}}
\newcommand{\be}{\boldsymbol{e}}
\newcommand{\bq}{\boldsymbol{q}}
\newcommand{\bk}{\boldsymbol{k}}
\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{\bzero}{\boldsymbol{0}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bh}{\boldsymbol{h}}
\newcommand{\bc}{\boldsymbol{c}}
\newcommand{\br}{\boldsymbol{r}}
\newcommand{\bQ}{\boldsymbol{Q}}
\newcommand{\bK}{\boldsymbol{K}}
\newcommand{\bV}{\boldsymbol{V}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bg}{\boldsymbol{g}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bq}{\boldsymbol{q}}
\newcommand{\bk}{\boldsymbol{k}}
\newcommand{\bJ}{\boldsymbol{J}}
\newcommand{\bp}{\boldsymbol{p}}
\newcommand{\bi}{\boldsymbol{i}}
\newcommand{\bo}{\boldsymbol{o}}
\newcommand{\bE}{\boldsymbol{E}}
\newcommand{\bH}{\boldsymbol{H}}
\newcommand{\bL}{\boldsymbol{L}}
\newcommand{\bu}{\boldsymbol{u}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\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} \]
用 NumPy 从零实现 FNN:参考答案
返回正文练习 · 返回答案索引
说明
以下答案与正文7道题逐题对应。推导题给出主要步骤;编程和实验题给出参考程序和检查方法,并说明结果适用于哪些条件。
\(\bX\) 为 \(5\times2\),\(\bW^{[1]}\) 为 \(3\times2\),\(\bb^{[1]}\) 为 \(3\times1\),\(\bZ^{[1]}\) 与 \(\bA^{[1]}\) 均为 \(5\times3\);\(\bW^{[2]}\) 为 \(1\times3\),\(\bb^{[2]}\) 为 \(1\times1\),\(\bZ^{[2]}\) 为 \(5\times1\)。参数量为 \(3(2)+3+1(3)+1=13\)。偏置在批量轴广播,但保存维度仍应与对应层神经元数一致。
第一层线性运算结果为 \((1,1)\trans\),故隐藏激活为 \((s,s)\trans\),其中 \(s=1/(1+e^{-1})\approx0.7311\)。第二层线性运算结果为 \(s-s=0\),预测概率为 \(1/2\)。当 \(y=1\) 时,交叉熵为 \(-\log(1/2)=\log2\approx0.6931\);用稳定形式计算也得到 \(\operatorname{logaddexp}(0,0)-0=\log2\)。
对每个样本,二元交叉熵关于输出层线性运算结果的导数为 \(a_i^{[2]}-y_i\),对批均值再除以 \(n\)。因此 \(\mathrm d\bW^{[2]}=(\mathrm d\bZ^{[2]})\trans\cdot\bA^{[1]}\)、\(\mathrm d\bb^{[2]}=\sum_i\mathrm d\bz_i^{[2]}\);\(\mathrm d\bZ^{[1]}=[\mathrm d\bZ^{[2]}\cdot\bW^{[2]}]\odot\bA^{[1]}\odot(1-\bA^{[1]})\);\(\mathrm d\bW^{[1]}=(\mathrm d\bZ^{[1]})\trans\cdot\bX\),偏置梯度沿批次轴求和后转为列向量。各梯度与对应参数同形。
若 \(\bw\neq\boldsymbol0\),方程 \(w_1x_1+w_2x_2+b=0\) 是直线;若 \(\bw=\boldsymbol0\),边界为空或整个平面,都不是非退化圆。正文的等概率集合 \(\lVert\bx\rVert_2=r\) 满足 \(x_1^2+x_2^2=r^2\),曲率非零,不能与一条直线完全相同。多个隐藏神经元经非线性变换后可组合出分段弯曲边界,宽度增加时能更细致地逼近连续径向函数。
两类模型在两套数据上复用相同划分、种子和更新次数,并分别在验证集选择阈值。逻辑回归通常足以处理线性数据且参数少、预测快;径向数据上 FNN 的非线性边界通常更有优势。表中报告测试指标均值与标准差、训练秒数、预热后的固定批量时间、单样本延迟、参数量和峰值内存;若 FNN 在线性数据上没有优势,这也是合理结果。
每个宽度使用同一划分、种子、初始化尺度、更新次数和学习率候选预算。宽度 2 可能表达不足,适中宽度可能改善径向拟合,过宽模型在有限样本上可能过拟合且成本上升。报告测试指标、训练时间、固定批量与单样本预测计时、实际参数量和峰值内存,并画性能—成本曲线;不能只挑单个最好种子。
各学习率从同一初始参数和批次顺序开始,更新次数相同。过小值可能在预算内尚未收敛,适中值下降较快,过大值可能振荡或产生非有限损失;失败运行也要报告。学习率不改变参数量或前向计算图,所以预测时间理论上相近;结果表仍应给出任务指标、训练秒数、固定批量与单样本延迟、参数量和峰值内存以核对计时波动。