跳到主要内容

通读笔记 — handbook-of-deep-learning-models

边读边记。行号 = library/handbook-of-deep-learning-models/text/ 下对应文件行号,短语均为原文实存短语。

书的底色

  • 六位作者(见 04-fm-biography.txt):Anuj Bhardwaj(Chandigarh大学教授,:3)、Vaibhav Chaudhari(Nutanix 工程师,:15)、Ankur Dumka(Women Institute of Technology 副教授,:26)、Arnav Pandey(刚高中毕业、已被 UCLA 录取的本科生,:36)、Er. Devarasetty Purna Sankar(Data Foundry 高级软件工程师,:45)、Parag Verma(AIGC 数据科学家,:56)。多作者合编,章节质量必然参差。
  • 前言(05-fm-preface.txt):书的工作标题是 "Let's WorkOut With Deep Learning Models"(:9);代码用 Keras(:16 "Utilizing the intuitive and widely used Keras API");路线:神经网络基础→CNN→迁移学习→优化→数据增强(:21-25)。
  • 结构:ch1 导论;ch2 经典 ML(18 节);ch3 神经网络+优化器(14 节);ch4 CNN(115k,全书最大);ch5 RNN;ch6 GAN;ch7 RBF 网络;ch8 自组织映射。ch2 前面还有一段引言混在 06 文件末尾(:1228 起),明确写着本章面向「social science and public policy problems」——与 DL 手册的定位脱节,是从别处搬来的材料。

ch1 Introduction(06-ch01-1-introduction-to-deep-learning.txt,1296 行)

  • 1.1:AI⊃ML⊃DL 层级(:183-217)。Narrow vs General AI(:42-55)。
  • 1.2 历史:Pitts & McCulloch 1940s(:223-225);Rosenblatt 感知机 1958(:229);Dartmouth 会议 1956(:278);贝叶斯网络 1960s(:284);决策树 1970s(:288);符号 AI/专家系统(:292);1980s 神经网络复兴+反向传播重新发现(:299);SVM 1990s(:306);集成方法 1990s(:310);AlexNet 2012 赢 ImageNet(:327,:389);RNN+LSTM 2014(:332);GAN 2014(:337);迁移学习 2014(:342);Hinton 2006 DBN/RBM 预训练(:376)。
  • 1.3 DL 的不同点:表示学习(:434)、深度(:469)、端到端(:506)、大数据与可扩展性(:538)、表示能力(:596)。深网络的挑战:梯度消失/爆炸,对策 ReLU、Adam、RMSprop、好的初始化(:498-504)。
  • 1.4 现代 ML 版图:可解释 AI XAI(:653,LIME :687)、AutoML(:714)、实时/在线学习(:766)、可解释与公平(:815)。
  • 1.5 行业应用六条(医疗/金融/零售/交通/制造/NLP,:867-924)——全是罗列,无机制。
  • 1.6 挑战(:926);1.7 前置知识(:975);1.8 后续章预告(:1042);1.9 装库(:1095);1.10 小结(:1162)。
  • 判断:这章是综述性导言,抄写感明显(同一段话反复出现" hierarchical representations"),无代码,无独有判断。可作全书「地图章」,但内容多半要靠我们自己重讲。

ch2 经典 ML(18 节,0724)

  • 2.1 Intuition(07):Arthur Samuel 1959 下棋造词(:17);Tom Mitchell 的 E/T/P 定义(:36);ML 适合的场景:规则太长/环境常变/数据太大(:52-66);社会科学应用四例:Potash 铅中毒风险随机森林(:115)、Carton 警察风险预测(:120)、Athey & Wager 处理效应(:125)、Voigt 警察语言分析(:130)。
  • 2.2(08):数据分析四类:description、detection、prediction、behavior change(因果)(:5-7)——社会科学口径。
  • 2.3(09):ML 八步流程(:19-58)。
  • 2.4(10):监督/无监督/弱监督/半监督(:14-56);F(X)=Y(:20)。
  • 2.5(11):回归 vs 分类算法两分(:14,:23);KNN/决策树/SVM/集成/ANN 通吃两类(:40-21);线性回归↔回归、逻辑回归↔二分类是专用的(:23-27)。
  • 2.6 线性回归(12):OLS 最小二乘(:52-56);y=β0+β1x1+...(:46);sklearn 例子输出 [12,14,16] (:98);优缺点(:100-143);正则化回归(:145);Lasso L1(:198,稀疏、可做特征选择 :208);Ridge L2(:245,不归零、治多重共线 :257)。
    • 硬伤①:2.6.4 的 Lasso 代码(:216-233)与 2.6.1 普通线性回归代码完全一样(import LinearRegression,没有 Lasso、没有 alpha),而散文却讲"we import the 'Lasso' class"(:235)。复制粘贴错误实锤。
  • 2.7 逻辑回归(13):logit(:28);sigmoid(:44);MLE/梯度下降训练(:53-57);阈值 0.5(:60);优缺点(:106-141)。
  • 2.8 SVM(14):最大化间隔 margin、支持向量(:7-9);核函数映到高维(:15);优缺点(:78 起,高维不贵、大数据贵)。
  • 2.9 KNN(15):lazy learner(:36);K 的取舍:小 K 过拟合、大 K 欠拟合(:40-42);欧氏/曼哈顿距离公式(:54-68);优缺点,高维受维数灾难(:160-162)。
  • 2.10 LDA(16):类内散度矩阵 Sw/类间 Sb(:24-31);特征值分解取前 k(:32-42);优缺点:高斯假设、类平衡假设(:1-9)。
  • 2.11 决策树(17):递归分裂;图 2.7 例子「过去一年就诊次数」阈值 4(:27-32);停止条件:最大深度/叶内最小样本(:35);优缺点:可解释但易过拟合(:83-114)。
  • 2.12 集成(18):bagging=并行+有放回抽样+投票/平均(:9-17);boosting=串行纠错+重加权(:18-25)。
  • 2.13 随机森林(19):bootstrap 采样(1000 实例例子,:28);每次分裂只用随机特征子集(:33);多数投票/平均(:38-43);变量重要性(:97);可并行(:3)。
  • 2.14 Extra Trees(20):与 RF 两点不同——不放回抽样(:33-37)、每个节点选随机分裂而非最优分裂(:38-44)。
    • 硬伤②:代码用 load_boston()(:60)——Boston Housing 数据集 2022 年起已从 sklearn 移除,今天照抄必报错。
  • 2.15 AdaBoost(21):八步:等权初始化→训弱学习器→算误差→给弱学习器定权→上调错分实例权重→迭代→加权组合→加权投票(:37-65);弱学习器=略好于随机(:41-44);变体 M1/M2(:72)。
  • 2.16 GBM(22):与 AdaBoost 的区别:不改样本分布,改拟合残差(:23-27);六步(:28-42);过拟合风险:迭代过多/学习率过大(:50-53)。
  • 2.17 评估(23):过拟合/欠拟合/偏差-方差权衡(:12-50);k 折交叉验证(:52-97);回归指标 MSE/RMSE/MAE/R2/调整 R2(:115-152);分类:TP/FP/TN/FN(:159-170);accuracy/precision/recall/specificity/F1(:178-219);AUC-ROC(:221);log loss(:226)。
  • 2.18 Summary(24):内部矛盾:小结把 2.2 的四类写成「descriptive, diagnostic, predictive, prescriptive」(:25-27),与 2.2 正文的「description, detection, prediction, behavior change」对不上。
  • 判断:ch2 整体是教科书式罗列,每节「定义→sklearn 代码→优缺点列表」,无一条完整推理链;含两处硬伤+一处内部矛盾+与书定位脱节的引言。这章在「作者判断与证据」里要如实标为草率层。

ch3 神经网络与优化(14 节,2639)

  • 3.1 基础(26):NN=受生物启发的数学模型,权重=突触强度(:6-11);线性代数+微积分是数学底座(:12-18);输入/隐藏/输出层(:58-85);输出层神经元数=问题类型决定(:79-85)。
  • 3.2 单元/激活/层(27):线性单元 f=wx+b 用于回归输出(:21-27);sigmoid 历史上常用、因梯度消失被替换(:84-85);ReLU=max(0,x),缓解梯度消失+稀疏激活(:122-128);leaky ReLU 治「dying ReLU」,α 典型 0.01(:166-172);softmax 输出概率分布、和为 1(:213-224);dense 层(:266);卷积层:滤波器/参数共享(:324-330);循环层 LSTM/GRU(:398);LSTM numpy 实现:遗忘门 f/输入门 i/输出门 o/候选 c_,c=fc+ic_,h=o*tanh(c)(:431-436)。
    • 3.2 的每个组件都配 numpy 手写实现,这一节反而是 ch3 里最扎实的。
  • 3.3 优化与 DL(28):五大挑战:高维参数空间/非凸(局部极小+鞍点)/梯度消失爆炸/计算量/超参(:13-39);「优化器最小化训练误差,DL 要的是泛化误差」(:49-53);经验风险 vs 风险,f 平滑 g 不平滑(:86-110);局部极小 f(x)=x·cos(πx)(:185-186);鞍点 f=x²−y²(:246-247);梯度消失:tanh 导数 1−tanh² 两端趋零(:295-299);ReLU 导数正侧恒 1(:303-306)。
  • 3.4 凸性(29):凸集/凸函数定义(:60-80);「DL 的非凸问题在局部极小附近呈现凸样性质」,引 Izmailov et al. 2018(:36-45);凸函数五性质:线段/二阶导非负/全局最小/Jensen 不等式/凸组合(:139-337)。
  • 3.5 约束(30):可行域、线性规划例子 x+y≤5 等(:61-76);等式/不等式约束(:273-288);可组合性(:345);拉格朗日乘子与 KKT(:360-391)。
    • 硬伤③:30 :200-203 linprog 输出「Project A: 50.0 hours / Project B: 4,950.0 hours」,而正文说总劳力只有 100 小时(:157)——代码把预算 5000 当成了工时上限,总工时约束根本没进代码。
    • 硬伤④:30 :264-265 cvxpy 例子输出「x = [2e-10, 3.0]」违反自己写的约束 sum(x)≤1(:240);真实最优是 [0,0]、值 0,不是 6.0。
    • 硬伤⑤:31 :7 print("Lagrange multiplier:", result.fun)——result.fun 是目标函数值,不是乘子(小 bug)。
  • 3.6 梯度下降(31):负梯度方向+学习率(:24-34);三种变体 batch/SGD/mini-batch(:47-50);batch 用全部数据、精度高但贵(:105-118);SGD 单样本、方差大、能逃局部极小(:120-126);mini-batch 实测数字可用:数据 y=3x₀+2x₁+噪声(:218),mini-batch 学到 [0.029, 3.062, 1.948] (:242),batch 学到 [−0.052, 3.111, 1.945] (:359)——真实数字,可当走查素材
    • 硬伤⑥:3.6.2 标题是 SGD,贴的代码却是 mini-batch GD(:168-240,mini_batch_gradient_descent,batch_size=10);3.6.3 标题是 mini-batch,贴的却是 batch GD 代码(:296-353)。 纯 SGD 代码全章从未出现。
  • 3.7 动量(32):速度 v_t=β·v_{t-1}+lr·gradient,x_t=x_{t-1}−v_t(:23-25);β 典型 0-1 之间(:30-31);同向梯度累积、震荡梯度抵消(:38-44);实现:initial_x=5.0,lr=0.1,momentum=0.9,20 轮(:77-80)。
  • 3.8 Nesterov(33):先按动量「前瞻」再算梯度 gradient=grad_fn(x−momentum×velocity)(:47);实现(:76-108)。
  • 3.9 AdaGrad(34):按参数历史梯度平方和 G 缩放学习率(:6-15);稀疏参数得大步长(:11-15);缺陷:G 只增不减,学习率随时间塌缩到不能动(:37-40)——这是 RMSprop 的动机。
  • 3.10 RMSprop(35):指数衰减平均 cache=decay·cache+(1−decay)·grad²(:60);防学习率衰减过快(:18-20);decay_rate=0.9(:78)。
  • 3.11 Adam(36):动量(一阶矩 m)+自适应学习率(二阶矩 v)+偏差修正(:16-22);β1=0.9、β2=0.999、ε=1e-8(:34-36)。
    • 硬伤⑦:Adam 示例代码(:105-106)把 gradients 也用 np.random.randn(1) 随机生成一次,循环里从不重算——优化器对着固定随机数「优化」,与 compute_loss 完全脱钩。能跑,但演示是坏的。
  • 3.12 L-BFGS(37):拟牛顿法,limited-memory 近似 Hessian 逆(:8-25);scipy minimize method='L-BFGS-B'(:77-78);适合参数量中等、目标平滑的问题(:26-29)。
  • 3.13 学习率调度(38):初始 lr、decay、退火(step/exponential)、plateau 降 lr、warmup(:34-62);toy 问题:LeNet+Fashion-MNIST(6 万张灰度图、10 类、每类 6 千,:74-76);实测结果:测试集 84.12%(39 :5)。
    • 硬伤⑧:标题是「学习率调度」,代码里没有任何调度器——固定 lr=0.001(:131);训练循环缩进错乱、Variable() 是废弃 API(:140);所以本节标题许诺的内容(调度)根本没演示。
  • 3.14 小结(39)。
  • 判断:ch3 前半(3.1-3.2)与优化器各节的「概念+手写实现」部分尚可;3.4-3.5 凸性/约束与 DL 几乎无关(教科书数学搬運),且含 3 处输出造假装错误;3.6/3.13 代码与节错位。整章「讲概念严谨度中等、代码工程纪律差」。

ch4 CNN(41,2078 行,全书最大的一章)

  • 重大发现:本章主体是从 Dive into Deep Learning(d2l.ai)改编的——4.3 的代码直接 from d2l import torch as d2l(:630);4.2 的推导(H=U+ΣVX、平移不变、局部性、waldoness、TDNN、inductive biases)与 d2l 第 7 章逐段同构;连图注都写「Figure and caption adapted from Field (1987)」(:1089)。但章末参考文献(:2048-2079)没有引 d2l/Zhang et al.。我们书架上正好有 d2l(dive-into-deep-learning,CC BY-SA),可作 ② 类交叉佐证。
  • 参数量论证链(可当主走查):全连接 100 万像素→1000 隐维 = 10⁹ 参数(:141-143);1000×1000 图→1000×1000 隐层 = 10¹² 参数(:348-353);平移不变(权重与位置无关)→ 4×10⁶(:392-395);局部性 Δ<10 → 4Δ²,几百个参数(:429-448)。「卷积 = 用平移不变+局部性这两条先验换参数量」,inductive bias 概念在 :461-468。
  • 互相关走查:3×3 输入 × 2×2 核,图 4.3:0×0+1×1+3×2+4×3=19(:690-693);输出尺寸公式 o=n−k+1(:723-725);3×3 输入 2×2 核→2×2 输出(:727-736)。
  • 边缘检测走查(真实可复算):6×8 图中间 4 列黑,K=[[1,-1]],输出每行 [0,1,0,0,0,-1,0] (1=白→黑边,-1=黑→白边)(:879-932);转置图全 0(:944-951)——「核只认特定方向的边」。
  • 学核:Y 已知,nn.Conv2d(1,1,kernel_size=2,bias=False),MSELoss,SGD lr=0.1,10 epochs(:976-1019)。书未打印学到的核数值。
  • 互相关 vs 卷积:深度学习框架做的是不翻核的互相关,叫法上沿用「卷积」(:1037-1058)。
  • 感受野:2×2 核下输出元素感受野=输入 2×2;再叠一层 2×2,z 对原始输入的感受野=全部 9 个元素(:1071-1080);Hubel & Wiesel 视觉皮层(:1081-1085)。
  • padding:输出公式 ⌊(nh+2ph−kh)/sh⌋+1(:1197-1203);p=k−1 保持尺寸(:1219-1224);奇数核+对称填充的好处(:1253-1267);实测 kernel=3,padding=1,输入 8×8→输出 8×8(:1289-1290)。
  • stride:输出公式 ⌊(nh−kh+ph+sh)/sh⌋(:1364-1366);stride=2、kernel=3,8×8→4×4(:1399-1410)。
  • 多输入通道:图 4.8 走查——通道 1:1×1+2×2+4×3+5×4=37;通道 2:0×0+1×1+3×2+4×3=19;合计 56(:1501-1515)。
  • 多输出通道:每个输出通道一套 ci×kh×kw 核,越深通道越多、联合优化(:1590-1627)。
  • 1×1 卷积:不看空间、只混合通道;=在每个像素位置放一个全连接层;只需 co×ci 个权重(:1681-1729);用于降维/升维/信息融合,GoogLeNet/ResNet/MobileNet 在用(:1713-1716)。
  • 池化:无参数、逐通道(:1861-1866);max 选最强激活,avg 平滑(:1869-1878);走查:输入 [[0,1,2],[3,4,5],[6,7,8]],2×2 max→[[4,5],[7,8]],avg→[[2,3],[5,6]] (:1973-2001);图 4.10:max(0,1,3,4)=4(:1835-1838);max-pool 让「移动一格以内的模式」输出不变(:1915-1934)。
  • 许诺未兑现:4.1 开头预告会讲「现代架构(skip connections、残差块、批归一化)」(:86-90)和「下一章详讲流行 CNN 架构」(:95-98);4.7 小结声称「本章演示了图像分类用例、训练与评估」(:2039-2042)——三者全章都不存在。 全书也没有「下一章讲 CNN 架构」的章(第 5 章是 RNN)。
  • 引用错位:AlexNet 被归于「Hinton et al. (2012)」(:19),而 :2059 列出的那篇是 dropout 论文(《Improving neural networks by preventing co-adaptation》),不是 AlexNet(正确作者 Krizhevsky, Sutskever, Hinton)。
  • 小 bug:4.5.1 验证代码调用了 cross_correlation_multi_channel(X, K)(:1575),但上面定义的函数名是 cross_correlation(:1526)——照抄会 NameError。
  • 判断:ch4 是全书最好的一章(推导完整、数字扎实、有可复算的走查),但底子是 d2l 改编且未署名;小结与正文脱节说明是拼装稿。

ch5 RNN(42,672 行)

  • 5.1 顺序数据八例(图像描述/语音合成/音乐/时序/视频/翻译/对话/机器人,:9-40);「transformer 已在部分应用上超过 RNN」书里有明说(:54-56)。
  • 5.2 RNN 机制:循环连接、按时间展开、参数跨时间步共享(:83-108);h(t)=当前输入+上一步隐状态(:162-168);股票预测例子输入=成交量/开盘价等(:175-178)。
  • 5.3 RNN 七条局限:长期依赖难/超长序列/训练难并行/梯度爆炸/复杂模式/无显式记忆/计算低效(:196-230)。
  • 5.4 LSTM:三门(输入/遗忘/输出)+cell state(:246-266);股价序列 [100, 110, 108, 120, 115] 的走查示例(:281-303);三个信息流组件:上一 cell state(长期记忆)/上一隐状态(短期记忆)/当前输入(:304-320)。
  • 5.5 架构:遗忘门 f(t)=sigmoid([X(t),h(t−1)]),0=忘 1=留(:347-356);输入门 sigmoid×tanh 逐元素相乘得候选值 C̃t(:368-391);cell state 更新式 C(t)=(C(t−1)⊗f(t))+(i(t)⊗C̃t)(:411)——全章最核心一行;输出门 sigmoid([C(t),h(t−1)])×tanh(C(t))(:421-438)。
    • 小瑕疵:5.5.1 首句说遗忘门决定「previous hidden state」忘什么(:340),实际作用对象是 cell state(:355-356)——措辞自相矛盾。
  • 5.6 文本生成用例:Macbeth 文本,50 字符窗口,LSTM(300)×2+Dropout(0.2),softmax,adam,10 epochs,batch 128,argmax 生成 50 字符(:497-555)。
    • 代码后跟着一段「修改建议」说「epochs=1 可能不够」(:566-568)——但代码里写的是 epochs=10,评的是另一个版本的代码;「I would suggest」口吻是聊天腔。
  • 5.7:LSTM 仍有梯度爆炸,梯度裁剪应对(:577-581);提到 Theano(:583,已停维护多年)。
  • 判断:ch5 概念讲解完整、公式正确,是可读的一章;但引用堆砌严重——参考文献全是「主题擦边」论文(滑坡位移/太阳辐照/燃料电池),5.1 把「CNN 能处理变长序列」挂在 Krizhevsky 2012 上(:50-53),明显不支撑。

ch6 GAN(43,1539 行)

  • 6.1 机制(d2l 改编):生成 vs 判别(:5-22);GAN=生成器 G(噪声 z→假数据)+判别器 D(真/假二分类)(:42-64);「数据生成器好=与真数据不可区分」,类比统计学的双样本检验(:69-74);D 损失 min{−y·logD(x)−(1−y)·log(1−D(x))}(:129);G 损失 min −log(1−D(G(z)))(:150);非饱和技巧:G 太强时改用 min −log D(G(z))(:157-164)
  • 6.3 应用八条(:204-238)、6.4 挑战(模式坍塌/训练不稳定/评估难/超参敏感,:240-279)、6.5 变体七种(cGAN/DCGAN/WGAN/Progressive/CycleGAN/StarGAN/StyleGAN,:281-321)——罗列层。
  • 6.7 MNIST 全流程(Keras):归一化到 [−1,1] (:418);展平 28×28→784(:448-451);生成器 latent_dim=100→Dense(7·7·128)→Reshape→两次 Conv2DTranspose→tanh 输出(:473-502);判别器 Dense512→256→sigmoid(:580-586);Adam(0.0002, 0.5) 两个超参值是 GAN 圈经典配方(:607);combined 模型冻结 D 只训 G(:615);训练:交替训 D(真图标签 1/假图标签 0)与 G(噪声→目标 1)(:778-814);图 6.3 损失曲线、图 6.4 第 0 轮=噪声、图 6.5 十轮后成形。
  • 6.8 DCGAN(PyTorch,d2l 改编):Pokemon 数据集直接从 d2l-ai/d2l-en GitHub 下载(:980-981),用 d2l.get_dataloader_workers()/d2l.show_images/d2l.Animator(:1031,:1049,:1388);生成器块=转置卷积(k4,s2,p1)+BN+ReLU;16×16→32×32 的走查(:1102-1120);1×1→4×4(strides=1,padding=0)(:1138-1155);判别器块=卷积(k4,s2,p1)+BN+LeakyReLU,16→8(:1299-1310);权重初始化 N(0,0.02),Adam betas=[0.5,0.999] (:1377-1387)。
  • 实锤①::953-954「A full implementation of the DCGAN is beyond the scope of a single response.」——聊天机器人口吻原文留在书里。
  • 实锤②::1435-1437「the ‘update_D’ and ‘update_G’ functions are not provided in the code snippet you shared」——又是聊天腔,且训练代码真的缺这两个函数,照抄跑不通。
  • 引用错位三连:GAN 的引用给了 Zhang et al. 2019(那是 Self-Attention GAN,:32,:1539);「GAN 首创论文 Goodfellow (2014)」引用的却是《On distinguishability criteria》(:43,:1515),不是 NIPS 2014 那篇;DCGAN 补引「Lee et al. (2009)」(:955,:1524)是卷积 DBN 论文,无关。
  • 图注错位:图 6.5 标题写「after 1,000 epochs」,正文说是 10,000 轮(:898-909)。
  • 参数自相矛盾:6.7.9 说 epochs=10000、sample_period=200(:695-697),6.7.11 又定义 epochs=20000、sample_interval=1000(:773-775)——两套代码版本混在一起。
  • 判断:ch6 结构最像「手册」:损失函数讲清了、两个全流程用例(MNIST/Dataset)都在;但拼装痕迹最重(d2l+Keras 教程+聊天输出),引用纪律全书最差。

ch7 RBF 网络(44,908 行)

  • 定位:Broomhead & Lowe 1988 提出的 RBF 网络;单隐层+高斯激活;通用逼近器(:5-31);卖点:收敛快、结构简单、可解释(中心=原型点)。
  • 架构:输入层→高斯隐层→线性输出层;隐神经元只对「靠近自己中心」的输入强响应(:100-144);σ 控制高斯宽度(:163-169)。
  • 训练三步走(本章核心机制):① k-means 定中心(无监督);② σ=d/√(2M),d=中心间最大距离,M=隐神经元数(:219-226);③ 输出权重解线性方程 GW=T,用 (GᵀG)⁻¹Gᵀ(Y)(:254-263,:704-709)——输出层训练就是一次线性回归,没有反向传播。 这与 MLP「全靠梯度下降」是两条不同的训练哲学,是 RBF 章最有讲头的一点。
  • RBF vs MLP 五条对比(:298-334):MLP 适合高维深层特征;RBF 快、稳健、可解释、适合低维直接相关。
  • 用例:UCI Bank Marketing 数据集预测定期存款订阅(:336-368);bank-full.csv,7 个数值列保留+其余 LabelEncoder(:422-429);test_size=0.33(:471);K_cent=8 个神经元(:583);G 矩阵元素 exp(−dist²/(2σ)²)(:665);预测后 0.5 阈值化(:780-781);结论:RBF 与 MLP 同为 88% 准确率,但 RBF 训练便宜得多(:814-818)——书里唯一一处「同题对比两个架构」的实测数字
  • 瑕疵:用例开头说「参考前面给出的 RBFNet 类」(:351-352),但全章没有 RBFNet 类;步骤 5(:543-552)与步骤 7(:611-620)重复算 σ,且步骤 5 有变量名 bug(Cent/cent、numpy/np、j 迭代范围错);7.1.1 的公式排版成 e^(−‖X−Center‖/σ)(无平方,:157-161)与代码的 exp(−dist²/(2σ)²) 不一致——以代码版为准。
  • 判断:ch7 是「被时代抛下但机制讲得最完整」的一章;引用依旧是主题擦边(生物气/柴油发动机/航天器导航)。

ch8 自组织映射 SOM(45,789 行)

  • 定位:Kohonen 图,无监督竞争学习;网格上每个神经元一个权重向量=输入空间里的原型点;两大原则:竞争(选 BMU)+合作(邻居一起动)(:30-48,:86-94)。
  • 权重更新式:W(t+1)=W(t)+η(t)·h(c,b)·(x−W(t))(:120);学习率与邻域随时间衰减:σ(t)=σ0·exp(−t/λ)(:343)、L(t)=L0·exp(−t/λ)(:441)、影响函数 θ(t)=exp(−dist²/2σ(t)²)(:449)。
  • 完整数值走查(书里做得最细的一次):3 特征输入、3×3 网格 9 个输出节点;输入 X=[0.7, 0.6, 0.9] (:218);对每个节点算欧氏距离,节点 3 距离最小 0.4 → BMU(:291-306);更新 BMU 权重 [0.39, 0.42, 0.45],学习率 0.5:W_new = 0.39+0.5×(0.7−0.39)=0.545;0.42+0.5×0.18=0.51;0.45+0.5×0.45=0.675(:405-435)——每一步都带真数字,可整段搬进我们的主走查。
  • 半径经验值:标准化数据 σ≈4,[0,1] 数据 σ≈1;10×10 网格 σ≈5,100×100 σ≈50(:365-370)。
  • 用例:信用卡欺诈(MiniSom,10×10,sigma=1.0,lr=0.5)(:616-630);U 矩阵可视化+按类别打标记,白色区域=潜在欺诈(:667-710);win_map 取出欺诈节点→inverse_transform→分析(:713-747)。
  • 硬伤⑨:用例的数据集描述张冠李戴——「Credit_Card_Applications.csv」被安上了 Kaggle creditcard.csv 的统计(284,807 笔、492 欺诈、0.172%、V1..V28 主成分、Time/Amount,:510-526),而代码和可视化讲的是「客户申请获批与否」(红圈=未获批,:707-708);另一处 sc.inverse_transform 但前面定义的变量叫 scaler(:733);文本说「train_random…迭代 100 次」代码却是 train_batch(...,1000)(:652-656)。
  • 8.5 开头是市场报告式废话(「市场将达 333.9 亿美元」,:460-462)。
  • 判断:ch8 的 8.4 节数值走查是全书教学质量最高的片段;但用例层错误最多。SOM/RBF 两章与前面 CNN/RNN/GAN 的关系:SOM 是 RBF 的「无监督亲戚」——两者都用「中心点+距离响应」的原型思想,RBF 拿来做监督回归,SOM 拿来做无监督可视化。

全书读完后的总判断(供大纲用)

  1. 书的真实结构:导论(ch1)→ 经典 ML 工具箱(ch2)→ 神经网络与优化器(ch3)→ 四大架构(CNN/RNN/GAN)+两个「前深学习时代」架构(RBF/SOM)(ch4-8)。
  2. 重组主线(我们自己的讲法,与《深度学习高手笔记》的「进化链」对照):本书各章其实是互相独立的「模型卡片」;我们要立的主线是「约束即智能」:每换一代架构,都是往网络里注入一种新先验(空间平移不变→时间递归→对抗博弈→距离原型→拓扑保持),先验越贴合数据,需要的数据和算力越少——用 ch4 的参数量论证链(10¹²→4×10⁶→几百)当全书的锚点数字。
  3. 质量分层(要如实写):严谨可引——ch4(CNN,d2l 改编但推导完整)、ch6 的 6.1/6.7/6.8(GAN 损失与两个用例)、ch7 的训练三步、ch8 的 8.4 走查;草率要标——ch2 全章(三处硬伤+内部矛盾+跑题引言)、ch3 的 3.4-3.5(跑题数学+造假输出)、3.6/3.13 代码错位、ch5 引用堆砌、ch6 聊天腔与引用错位、ch8 用例张冠李戴。
  4. 未覆盖:Transformer 只在 ch5 一句带过(:54-56);没有任何 LLM/注意力内容;没有 PyTorch/Keras 之外的工程化;无评估之外的部署;RBF/SOM 在现代 DL 实践中已边缘化——这些进 notCovered。

下一步

写 notes/01-outline.md,然后逐章写正文。