跳到主要内容

阅读笔记 — Python深度学习(第2版) Chollet

逐章笔记:机制、关键数字、值得引的段落(text/xx.txt:行号 + 可搜短语)。 跳过导航章:01-版权、02-版权声明、04-致谢、06-关于封面、07-目录(乱码/导航)。 前言(03-fm)、关于本书(05-fm) 可读,供总纲「谁在什么时候写的」用。

前言 / 关于本书(03-fm, 05-fm)

  • 作者自述:2015-03 发布 Keras 第 1 版,本来给自己做实验用(03-fm.txt:17「2015 年 3 月,我发布了 Keras」)。
  • 第 1 版英文 2017-12 出版,销量超 5 万册,译成 12 种语言(03-fm.txt:26「销量超过 5 万册」)。
  • 第 2 版 2019 年末动笔,约 75% 是新内容,篇幅多 1/3(03-fm.txt:33「约有 75% 是新内容」)。
  • 代码用 Keras + TensorFlow 2,「截至 2021 年 Keras 和 TensorFlow 2 的最佳实践」(05-fm.txt:10「截至 2021 年」)——版本时效锚点。
  • 作者信条:「我坚信深度学习中没有难以理解的内容」(03-fm.txt:36)。
  • 类比:深度学习普及像 90 年代末 Web 开发(03-fm.txt:13「20 世纪90 年代末 Web 开发」)。

第1章 什么是深度学习(08-ch01.txt)

  • AI/ML/DL 三层包含关系;1956 达特茅斯研讨会提案(:33「1956 年明确成为一个研究领域」)。
  • 符号主义 AI:50 年代到 80 年代末主流范式,专家系统热潮顶峰(:50「符号主义人工智能」)。
  • 图灵 1950《计算机器与智能》引用「洛夫莱斯伯爵夫人的异议」(:77)。
  • 机器学习定义:「在预先定义的可能性空间中,利用反馈信号的指引,在输入数据中寻找有用的表示和规则」(:167)。假设空间 hypothesis space(:165)。
  • 表示的例子:RGB vs HSV;坐标变换黑白点分类(:120-146)。
  • 「深度」= 连续的表示层数,不是「更深层次的理解」(:174「并不是说这种方法能够获取更深层次的理解」)。现代模型数十上百层;浅层学习一两层(:178-181)。
  • 神经网络名字来自神经生物学,但「深度学习模型并不是大脑模型」(:185)——作者明确让忘掉生物学类比。
  • 三张图理解:权重参数化层(:222);损失函数=距离值(:244「损失函数」别名目标/代价函数);优化器实现反向传播(:249)。
  • 训练循环描述:随机初始化 → 每处理一个示例权重微调、损失减小(:271-276「训练循环」)。
  • 进展清单(:283-297);「不要相信短期炒作」:1967 Minsky「一代人的时间内……基本解决」、1970「3 到 8 年」(:314-316);两次 AI 冬天:60 年代符号主义、80 年代专家系统(1985 年各公司年花 10 亿美元+:323);「我们可能正在见证……第三次循环」(:326)。金句「不要相信短期炒作,但一定要相信长期愿景」(:352)。
  • 简史:朴素贝叶斯(18 世纪贝叶斯定理)、logistic 回归是「现代机器学习的 Hello World」且是分类不是回归(:375-377);1989 LeCun LeNet 美国邮政署读邮编(:388-390);SVM/核方法:决策边界、间隔最大化、核技巧(:396-417);决策树/随机森林(「几乎总是第二好的算法」:433)/梯度提升机 2014 取代随机森林成 Kaggle 最爱(:434)。
  • 2012 转折:ILSVRC 140 万张图 1000 类;2011 获胜 74.3% top-5 → 2012 AlexNet 83.6% → 2015 96.4% 被认为已解决(:462-469)。
  • 深度学习有何不同:特征工程完全自动化(:483-491);共同学习所有层 vs 贪婪逐层(:496-501);两个基本特征(:502-504)。
  • 现状:Kaggle 顶级团队用 Keras 或梯度提升树(XGBoost/LightGBM)(:511-513);2020 调查 scikit-learn 82.8%、TF 50.5%、Keras 50.5%、XGBoost 48.4%、PyTorch 30.9%(:549-557)。
  • 为什么是现在:硬件(1990-2010 CPU 快 5000 倍:601;NVIDIA Titan RTX 16 teraFLOPS=1990 年最快超算 500 倍:612-614;TPU v3 420 teraFLOPS:619;pod 1024 卡 100 petaFLOPS:621);数据(ImageNet 140 万:637);算法(梯度传播问题:647;2009-2010 更好激活函数/初始化/RMSprop+Adam:651-655;2014-2016 批量规范化、残差连接、深度可分离卷积:657)。
  • 投资:2011 <10 亿美元 → 2015 50 亿 → 2017 160 亿美元(:699-701);从业者几百人→几万人(:708)。
  • 普及:Theano→TensorFlow 自动微分;Keras 让深度学习像拼乐高(:716-719)。
  • 会持续吗:简单/可扩展/通用可复用三性质(:728-738);S 型曲线,作者认为已进入后半部分(:743-747);第 1 版预测 2017-2018 Transformer 崛起被验证(:744)。

第2章 神经网络的数学基础(09-ch02.txt)

  • 方法论宣言:避免数学符号,「对数学运算而言,最精确无误的描述就是它的可执行代码」(:13-14)。
  • MNIST:28×28 灰度,10 类,60000 训练+10000 测试,NIST 80 年代收集(:25-28);「深度学习的 Hello World」(:30)。
  • 术语说明:类 class、样本 sample、标签 label(:36-37)。
  • 第一个网络:Dense(512,relu)+Dense(10,softmax);compile(optimizer/loss/metrics) 三要素(:90-96);预处理 reshape (60000,784) 除 255 到 [0,1](:103-106);fit epochs=5 batch_size=128;训练精度 98.9% vs 测试 97.8%——首次出现过拟合 overfit 一词(:153-155)。
  • 张量=数据容器,矩阵向任意维度的推广,维度叫轴 axis(:167-169);标量 0 阶/向量 1 阶/矩阵 2 阶/3 阶及以上;5 维向量 ≠ 5 维(阶)张量(:191-195)。
  • 三关键属性:轴个数(ndim)、形状(shape)、数据类型(dtype)(:228-236)。
  • 张量切片 train_images[10:100](:270-297);批量轴 batch axis:第一个轴是样本轴(:299-317)。
  • 现实数据张量:向量(samples,features)、序列(samples,timesteps,features)、图像(samples,h,w,channels)、视频 5 阶(:319-329);推文例子 (1000000,280,128)(:358-362);视频 4 个片段 405 MB(:394-398)。
  • 通道在后(TF 标准) vs 通道在前(:382-387)。
  • 张量运算:Dense 层 = relu(dot(input,W)+b) 三个运算(:408-416);逐元素运算 naive_relu/naive_add(:421-442);NumPy BLAS 0.02s vs 手写 2.45s(:464)。
  • 广播 broadcast 两步(:476-479):加广播轴、沿新轴重复;(32,10)+(10,) 例子(:480-490);实际实现不真创建大张量(:492-494)。
  • 点积 dot:向量·向量=标量;矩阵·向量;矩阵·矩阵条件 x.shape[1]==y.shape[0](:518-584);dot 不对称(:565);图 2-5 形状匹配图解(:586-605)。
  • 变形 reshape:元素个数不变;转置 transpose(:614-645)。
  • 几何解释:加法=平移;点积矩阵=线性变换(旋转/缩放);仿射变换=线性+平移=无激活 Dense 层(:682-707);关键推论:多层无激活 Dense = 一个 Dense 层,纯线性模型;这就是要激活函数的原因(:722-730)。
  • 纸团比喻:两张彩纸揉成团,神经网络=把纸团恢复平整的变换;流形 manifold=连续表面(:740-752)。
  • 训练循环四步(:765-770):抽批量→前向传播→算损失→更新权重。
  • 笨办法:逐个系数试 0.3→0.35→0.25 例子,每个系数两次前向传播,太低效(:778-784)。
  • 可微 differentiable:微小变化导致可预测的微小变化(:786-793)。
  • 导数:局部线性近似斜率 a;沿导数反方向移动一小步减小 f(x)(:797-839)。
  • 梯度 gradient=张量运算的导数;grad(loss_value, W0) 与 W 同形状(:841-871);偏导数 partial derivative(:873-878);最陡上升方向(:880-889)。
  • 解析法不可行:N=系数个数,实际网络几千上千万(:891-897)。
  • 小批量 SGD 五步(:898-907);学习率太小陷局部极小、太大乱跳(:917-924);真 SGD vs 批量梯度下降(:927-931);无法可视化 100 万维空间,低维直觉不一定准(:932-937)。
  • 动量 momentum:小球滚下损失曲线,考虑速度不卡峡谷(:946-975 含伪代码)。
  • 局部极小点 vs 全局极小点 图 2-20(:951-962)。
  • 反向传播:链式法则 chain rule grad(y,x)==grad(y,x1)*grad(x1,x)(:990-1007);计算图 computation graph=运算的有向无环图,TensorFlow 核心数据结构(:1013-1030)。
  • 走查好素材:x=2,w=3? 实际图标值 x1=6,x2=7,loss_val=3(:1047-1055);反向边 grad(x1,w)=2、grad(x2,b)=1、grad(x2,x1)=1、grad(loss_val,x2)=1(:1064-1086);链式相乘 grad(loss_val,w)=112=2、grad(loss_val,b)=1(:1105-1107);多条路径则相加(:1108-1109)。
  • 「反向传播就是将链式法则应用于计算图,仅此而已」(:1110-1112)。
  • 自动微分:作者 21 世纪头十年用 C 手写梯度,「你真幸运!」(:1113-1117)。
  • GradientTape:记录作用域内张量运算;tf.Variable 保存可变状态(:1119-1148)。
  • 2.5 回顾:5 轮 2345 次梯度更新(每轮 469 次)(:1208);NaiveDense/NaiveSequential/BatchGenerator/one_training_step/update_weights/fit 全部手写实现(:1214-1378)。

第3章 Keras 和 TensorFlow 入门(10-ch03)

  • TensorFlow 超越 NumPy 四点:自动梯度、GPU/TPU、分布式、导出部署(:20-27);是平台不只是库:TF-Agents/TFX/Serving/Hub(:28-32);Summit 超算 27000 GPU 1.1 exaFLOPS 极端天气模型(:33-34)。
  • Keras:构建于 TF 之上的深度学习 API,「为人类设计的 API,而非为机器设计」(:59);减少认知负荷(:60);2021 底用户超 100 万(:63);YouTube 推荐、Waymo 用 Keras(:66-67)。
  • 「深度学习领域的 Python」:多工作流程,从 fit() 到底层全掌控(:74-84)。
  • 简史:Keras 2015-03 比 TF(2015-11) 早 8 个月,最初构建于 Theano 上(:86-91);2016-09 TF 成默认后端;2017 加 CNTK/MXNet;如今单一后端 TF(:92-97);2018 TF 领导层选 Keras 为官方上层 API,TF2.0(2019-09) Keras 居核心(:98-103)。
  • 工作区:GPU 三种选择;Colab 免费;云 V100 $2.48/小时 vs 消费级 GPU $1500-2500(:124-126);建议 Unix/WSL。
  • Variable:TF 张量不可赋值(EagerTensor 报错),tf.Variable 管可变状态,assign/assign_add/assign_sub(:243-289)。
  • 急切执行 eager execution(:306-307)。
  • GradientTape 默认只监视可训练变量;常数要 tape.watch()(:320-337);嵌套梯度带算二阶梯度:position=4.9t² → 加速度 9.8(:338-351)。
  • 端到端线性分类器:multivariate_normal 两类各 1000 点(:365-375);model=W·x+b;square_loss;learning_rate=0.1 批量训练 40 步(:407-459);决策边界直线 w1x+w2y+b=0.5(:470-475);「这就是线性分类器的全部内容」(:488)。
  • Layer 基类:封装状态(权重)+计算(前向传播);build() 建权重、call() 前向(:511-541);SimpleDense 例子。
  • 自动形状推断:call 里 not built 则先 build(inputs.shape)(:557-610);层兼容性。
  • 模型=层构成的图;双分支/多头/残差连接;Transformer 拓扑图 3-9(:616-624);拓扑结构=假设空间,编码先验知识;无激活 Dense 二分类=假设线性可分(:627-634);选架构「更像是一门艺术而不是科学」(:659)。
  • compile 三参数;字符串快捷方式 vs 对象实例(:665-701);内置优化器/损失/指标清单。
  • 选损失函数:无情 AI 灭绝人类的思想实验(:731-737「让所有活人的平均幸福感最大化」)——损失函数选错=得到意想不到的副作用;二分类 binary_crossentropy、多分类 categorical_crossentropy(:738-740)。
  • fit() 参数:数据/轮数/批量大小;返回 History 对象(:743-771)。
  • 验证集 validation_data;打乱;保留 30%(:773-812);「必须将训练数据和验证数据严格分开」(:810-812)。
  • 推断 inference:model() vs predict()(后者小批量迭代,:819-847)。

第4章 神经网络入门:分类与回归(11-ch04.txt)

  • 三类任务:二分类(影评)、多分类(新闻)、标量回归(房价)(:9-14)。
  • 术语表:样本/预测/目标/损失值/类别/标签/真实值/二分类/多分类/多标签分类/标量回归/向量回归/小批量(:17-43)。
  • IMDB:50000 条两极化评论,25000 训练+25000 测试,各 50% 正负(:52-55);num_words=10000 否则 88585 个词(:67-70);索引 0/1/2 保留给 padding/start/unknown(:90-92)。
  • multi-hot 编码:[8,5]→10000 维向量只有 8 和 5 是 1(:101-103);vectorize_sequences(:106-119)。
  • 架构:Dense(16,relu)×2+Dense(1,sigmoid);16 单元=投影到 16 维表示空间=「模型学习内部表示时所拥有的自由度」(:165-173);relu 负值归零、sigmoid 压到 [0,1] 当概率(:174-177)。
  • 为什么用激活函数:无激活=线性层堆叠=仍是线性,假设空间不扩展(:182-194)。
  • binary_crossentropy:交叉熵来自信息论,衡量概率分布距离(:196-202);rmsprop 几乎总是好的默认(:205)。
  • 留出 10000 验证;20 轮训练;验证损失第 4 轮达峰值=过拟合发生点(:213-285);重新训练 4 轮→测试精度 88%,最先进约 95%(:286-305)。
  • 路透社:46 主题,8982 训练+2246 测试,每主题至少 10 样本(:351-365);one-hot 编码标签(:394-413)。
  • 信息瓶颈:16 维中间层对 46 类可能太小——「每一层都可能成为信息瓶颈」丢失的信息无法恢复(:415-421);用 64 单元;softmax 46 维概率分布和为 1(:425-437);categorical_crossentropy(:438-446)。
  • 结果:~80% 精度 vs 随机基准 19%(:520-533);sparse_categorical_crossentropy 数学相同接口不同(:550-562);瓶颈实验:中间层 4 维→验证精度 71% 降 8%(:564-588)。
  • 波士顿房价:506 样本(404 训练+102 测试),13 特征,70 年代中期房价中位数千美元(:614-639);特征取值范围差异大→逐特征标准化(减均值除标准差);测试集用训练集的均值标准差(:641-660「你不能使用在测试数据上计算得到的任何结果」)。
  • 小模型两层 64 单元;最后一层无激活线性层→可预测任意范围(:661-679);mse 损失、mae 指标(MAE=0.5 即差 500 美元:680-684)。
  • K 折交叉验证:K=4,分数 2.1~3.1 波动大,平均 2.6→平均差 2600 美元(:686-751);500 轮记录每折 val_mae;120-140 轮后过拟合(:752-804);最终模型 130 轮测试 MAE 2.46(:805-823)。

第5章 机器学习基础(12-ch05.txt)

  • 全章核心:优化与泛化之间的矛盾(:18-21);过拟合定义=学到仅和训练数据有关的模式(:39-43);欠拟合 underfit(:40)。
  • 过拟合三种来源:嘈杂训练数据(全黑图、错误标签图 5-2/5-3);模糊特征(香蕉成熟度无明确界限、明天下雨有随机性:65-73);罕见特征与虚假相关性(番荔枝 cherimoya 例子:78-86;54%/46% 偶然差异:87-90)。
  • 白噪声实验:MNIST 拼接 784 维白噪声 vs 784 维全零,信息相同但噪声通道使验证精度低约 1%(:91-156)——虚假相关性的硬证据;特征选择 feature selection、有用性分数、互信息(:160-165)。
  • 打乱标签实验:模型照样能拟合(训练损失下降),但不可能泛化——「模型最终只会记住特定的输入,就像 Python 字典一样」(:167-196)。
  • 流形假说 manifold hypothesis:MNIST 输入空间 256^784 远超宇宙原子数,有效数字只占高度结构化的低维子空间(:201-216);流形=局部近似线性空间的低维子空间(:212-216);「所有自然数据都位于高维空间中的一个低维流形中」(:220-223);两个含义:只需拟合低维子空间、可在样本间插值 interpolate(:224-229)。
  • 插值作为泛化来源:流形插值≠父空间线性插值(两数字像素平均值不是有效数字:235-236);插值只能局部泛化 local generalization;人类能极端泛化 extreme generalization——抽象、符号模型、推理、常识=理性 reason vs 直觉/模式识别(:231-255)。第 14 章伏笔。
  • 深度学习为何有效:模型=高维光滑曲线,梯度下降平滑渐进拟合;训练中间点曲线大致接近自然流形(图 5-10)(:256-285);两个适配特性:光滑连续映射、架构预设反映数据形状(:286-292)。
  • 训练数据至关重要:泛化更多是自然数据结构的结果;密集采样 dense sampling(:294-318);「改进深度学习模型的最佳方法就是在更多的数据或更好的数据上训练」(:314);正则化 regularization=降低过拟合(:319-322)。
  • 评估三法:留出验证、K 折、重复 K 折(打乱)(:331-448);信息泄露 information leak:每次用验证集调超参都泄露一点,最后模型对验证集过拟合(:342-351);超参数 hyperparameter vs 参数(:337-341)。
  • 常识基准:发射隐形火箭的比喻(:452-459);MNIST 基准 >0.1、IMDB >0.5、路透社 0.18-0.19、90/10 不均衡要 >0.9(:460-463);「如果无法超越简单的解决方案,那么你的模型毫无价值」(:464-468)。
  • 评估三注意:数据代表性(打乱)、时间箭头(预测未来不能打乱否则时间泄露 temporal leak)、数据冗余(训练/验证不能有交集)(:469-483)。
  • 改进拟合:「为了实现完美的拟合,你必须首先实现过拟合」(:487);三种问题:训练不开始/不泛化/无法过拟合(:490-494)。
  • 训练不开始→调学习率/批量大小:lr=1 卡在 30-40%,lr=1e-2 正常(:498-548)。
  • 不泛化→架构预设错误(数据没信息 or 模型类型不对)(:551-565)。
  • 无法过拟合→容量 capacity 不足:logistic 回归在 MNIST 上 val_loss 卡在 0.26;加大到两层 96 单元后正常过拟合(:567-620)。
  • 提高泛化:数据集管理(收集数据的投资回报最大:630-637);特征工程 feature engineering:时钟读时间例子——原始像素很难、指针坐标简单、极坐标角度字典查找就够(:640-676);深度学习时代仍需特征工程两原因(省资源、省数据)(:677-683)。
  • 提前终止 EarlyStopping:过度参数化是常态,永远在最小程序之前中断;最佳泛化点=欠拟合/过拟合界线(:685-696)。
  • 正则化三法:① 缩减模型容量(16→4 单元过拟合更晚更慢;512 单元立即过拟合且验证损失波动大:716-782);② 权重正则化 L1/L2(奥卡姆剃刀;L2=权重衰减 weight decay 数学相同;l2(0.002) 每系数加 0.002*w²;大模型首选 dropout:784-836);③ dropout:训练时随机把该层输出一些元素设 0,比率通常 0.2-0.5,测试时按比例缩小(或训练时放大)(:838-871);Hinton 银行防欺诈「阴谋」灵感(:873-878);打破偶然模式;IMDB 加两层 Dropout(0.5) 效果比 L2 好(:879-901)。
  • 总结清单:更多数据、更好特征、缩容量、权重正则化(小模型)、dropout(:903-908)。

第6章 机器学习的通用工作流程(13-ch06.txt)

  • 三步:定义任务→开发模型→部署模型(:39-47)。
  • 假设的开场:机器学习咨询公司接到的 7 个项目(:11-20)——后续全章用它们举例。
  • 道德说明:人脸评可信度项目——把偏见编码进黑盒、技术从来不是中立的(:22-32)。
  • 定义问题:输入/目标/任务类型(7 个项目逐个归类:图片搜索=多分类多标签;垃圾信息=二/三分类;音乐推荐=矩阵分解比深度学习好!;欺诈=二分类;点击率=标量回归;饼干=二分类+前置目标检测;考古=图像相似度排序)(:61-77);现有解决方案;特殊限制(端到端加密→手机端部署)。
  • 两个待验证假设:输入可预测目标、数据含足够信息;反例:股票历史价格(:88-93)。
  • 收集数据:最费力最费时最费钱的一步(:95-96);「数据比算法更重要」谷歌 2009「数据不可思议的有效性」(:113-116);多出 50 小时应投给收数据(:111-112)。
  • 标注基础设施:自己标/众包/专业公司;专家需求(猫狗 vs 犬种 vs 骨折 CT:129-131)。
  • 非代表性数据:食物照片 app 训练集是美食家精拍、用户拍的是随机餐厅——测试精度 90%+ 但 10 次错 8 次(:144-149「欢迎来到机器学习苦海」)。
  • 概念漂移 concept drift:2013 年音乐推荐引擎今天失效;IMDB 2011 收集对 2020 影评性能下降;欺诈检测对抗性漂移最严重→持续收集+再训练(:155-165)。
  • 抽样偏倚 sampling bias:1948「杜威击败杜鲁门」电话调查(:167-178)。
  • 理解数据:可视化、直方图、类别不平衡、目标泄露 target leaking(「此人已被诊断出患有癌症」特征:191-195)。
  • 成功指标:与客户商业成功对齐;平衡分类用精度+ROC AUC;不平衡用准确率召回率;Kaggle 竞赛可参考(:198-207)。
  • 准备数据:向量化、规范化(取值小、同质;均值 0 标准差 1)、缺失值处理(分类特征新增「缺失」类;数值特征用均值/中位数,别用 0;训练集没缺失值时要手动造有缺失样本)(:216-263)。
  • 统计功效 statistical power=超越简单基准(:279-281);损失函数必须可微+小批量可算,ROC AUC 不能直接优化→用交叉熵替代(:290-295);表 6-1 最后一层激活+损失函数对照表(:296-302)。
  • 扩大规模:先开发一个过拟合的模型(:313-324)。
  • 正则化调参:最费时间的一步;每次用验证反馈调=信息泄露,系统性迭代很多次会对验证过程过拟合(:326-342);最终模型在所有非测试数据上重训,测试集只评一次;测试远差于验证=验证流程不可靠(:345-348)。
  • 部署:设定预期——别讲「98% 精度」,要讲假阴性率/假阳性率+业务语言(「每天 200 笔有效交易被误标、14 笔欺诈被遗漏、266 笔被正确识别」:353-368)。
  • 部署方式:REST API(TensorFlow Serving,~500ms 延迟)、设备端(TensorFlow Lite)、浏览器(TensorFlow.js,模型信息公开风险:435-438);推断优化:权重剪枝 weight pruning、权重量化 weight quantization float32→int8 模型 1/4 大(:444-457)。
  • 监控:A/B 测试、人工审核、用户调查(:459-473);维护:模型不会永远有效,音乐推荐生命周期按周算、欺诈检测按天(:475-483)。

第7章 深入Keras(14-ch07-7-keras.txt)

  • 设计原则:渐进式呈现复杂性 progressive disclosure of complexity(:22);没有唯一「正确」用法,共享 Layer/Model API 可互混(:27-30)。
  • 三种建模:序贯模型(Python 列表,:33)、函数式 API(图结构,最常用,:36)、模型子类化(底层全自己写,:37)。
  • 序贯模型第一次调用才建权重(:71-74);Input(shape) 提前声明形状可即时 summary()(:134-141);summary 参数计数 256+650=906(:101-107)。
  • 函数式 API:符号张量 symbolic tensor 不含数据只含形状 dtype(:200-206);多输入多输出工单模型(3 输入标题/正文/标签,2 输出优先级/部门,:233-260);Concatenate 拼接;字典传数据(:300-314)。
  • 图结构两大用处:plot_model 可视化、特征提取(取 model.layers[i].output 接新输出 difficulty,:316-364)。
  • 子类化:init 定义层 + call() 前向;Model vs Layer 区别=fit/evaluate/predict/可保存(:411-415);子类化是字节码不是数据结构:summary/plot_model/特征提取全失效,前向变黑盒(:442-453)。
  • 混合使用:函数式里用子类化层、子类化里用函数式模型(:455-497);建议:能画成 DAG 就用函数式(:499-508)。
  • 内置循环:compile/fit/evaluate/predict 标准流程(:517-546);自定义指标 Metric 子类化:update_state/result/reset_state,RMSE 例子(:552-608)。
  • 回调函数:纸飞机 vs 无人机比喻(:611-615);ModelCheckpoint/EarlyStopping/LearningRateScheduler/ReduceLROnPlateau/CSVLogger 清单(:628-634);EarlyStopping(monitor, patience)+ModelCheckpoint(save_best_only) 组合(:637-675);model.save/load_model(:677-679);Callback 子类化 6 个时间点钩子 on_epoch/batch/train_begin/end(:681-731)。
  • TensorBoard:浏览器监控指标/架构/直方图/嵌入(:737-764);「取得进展的循环」图(:740-744);tensorboard --logdir 或 Colab %tensorboard(:781-794)。
  • 自定义训练循环:监督学习定义,对比生成式/自监督/强化学习(:799-810);train_step 三步:梯度带前向→取梯度→apply_gradients(:812-815);training=True/False 细节(Dropout 行为不同,:820-829);trainable_weights vs weights(BatchNormalization 是唯一有不可训练权重的内置层,:830-842);完整循环代码含 Mean 指标跟踪(:871-952)。
  • @tf.function:急切执行逐行 vs 编译成计算图全局优化,评估 1.8s→0.8s;调试用急切(:958-992)。
  • train_step() 覆盖:折中方案,框架代做 @tf.function 和 reset(:994-1046);self.compiled_loss/compiled_metrics/metrics(:1047-1078)。

第8章 计算机视觉深度学习入门(15-ch08.txt)

  • CV 是深度学习最早最重要成功案例;2011 Ciresan 两小众比赛、2012 Hinton 组 ImageNet(:13-17);2013-14 资深研究者仍质疑,2016 才成主流(作者劝前教授轶事,:19-25)。
  • MNIST convnet:Conv2D(32,3)+MaxPool(2)+Conv2D(64)+MaxPool+Conv2D(128)+Flatten+Dense(10)(:37-48);测试精度 99.1% vs 密集 97.8%,错误率降约 60%(相对)(:114-115);总参数 104,202(:80)。
  • Dense=全局模式 vs 卷积=局部模式(3×3 窗口)(:119-122);两性质:平移不变性(学到的模式任何位置都能认,:127-131)+ 空间层次结构(边缘→眼睛→猫,:132-135)。
  • 特征图 feature map 3 阶张量(h,w,channels);RGB 深度=3;滤波器 filter=输出通道,编码某方面(「输入中包含一张人脸」)(:136-143);响应图 response map(:151-164)。
  • 卷积两参数:图块尺寸(3×3/5×5)+ 输出深度(:165-171);机制:滑窗取 3 维图块与卷积核做张量积→向量→空间重组(:172-180)。
  • 边界效应:5×5 输入只有 9 个有效中心→3×3 输出;填充 padding "valid"/"same"(:202-219);步幅 stride,步进卷积分类少用(:221-237)。
  • 最大汇聚 max-pooling:2×2 窗口步幅 2 取最大值,2 倍下采样(:241-248);无汇聚反例:第三层 3×3 窗口只见初始 7×7 窗口 + flatten 后 61952 元素→Dense 50 万参数过拟合(:249-290);两作用:减元素数+引入空间层级(:291-293);为何 max 优于平均/步幅:特征编码「是否存在」,最大值保留信息(:294-301)。
  • 猫狗分类:Kaggle 2013 竞赛 25000 张,子集 2000 训练/1000 验证/2000 测试(:306-311, :384-388);三方法路线:从头训练~70%→数据增强 80-85%→特征提取 97.5%→微调 98.5%(:312-320)。
  • 从头模型:5 组 Conv+MaxPool 32→256,180×180 输入,Rescaling 层,sigmoid 单输出,991,041 参数(:436-508);image_dataset_from_directory 数据管道(:518-549);tf.data.Dataset 详解(batch/shuffle/prefetch/map,:551-602);ModelCheckpoint(save_best_only, monitor="val_loss")(:616-636);结果:10 轮过拟合,测试 69.5%(:660-671)。
  • 数据增强 data augmentation:从现有样本生成更多可信样本,模型不两次见同一张图(:675-680);RandomFlip/RandomRotation(0.1=±36°)/RandomZoom(0.2)(:684-697);「无法生成新信息只能重组」+Dropout(0.5)(:716-719);推断时不起作用(:720-722);100 轮,60-70 轮才过拟合,测试 83.5%(:760-773)。
  • 预训练模型:ImageNet 140 万张 1000 类;VGG16 (Simonyan & Zisserman 2014)(:780-797);特征提取=取卷积基 convolutional base+新分类器(:800-806);为何不复用密集分类器:卷积基表示更通用+含位置信息,分类器丢了空间概念(:818-826);层越深表示越专用(:827-831);keras.applications 清单 Xception/ResNet/MobileNet/EfficientNet/DenseNet(:836-844);VGG16 14,714,688 参数,最终特征图 (5,5,512)(:861-909)。
  • 快速特征提取:predict() 存 NumPy→独立分类器,CPU 每轮<1 秒,验证~97% 但立即过拟合(:921-1002);端到端+数据增强:冻结 conv_base.trainable=False(26→0 可训练权重),改后须重新编译(:1004-1064);50 轮验证 98% 测试 97.5%(:1079-1099)。
  • 微调 fine-tuning:解冻顶部几层与新分类器共训(:1101-1105);前提=分类器已先训练好否则误差信号毁掉表示(:1106-1109);为何只微调最后两三层:早层通用晚层专用+参数多过拟合风险(:1211-1219);学习率很小 1e-5(:1226-1233);测试 98.5%(:1245-1254)。

第9章 计算机视觉深度学习进阶(16-ch09.txt)

  • 三大 CV 任务:图像分类(谷歌照片 2 万多类)、图像分割(视频通话换背景)、目标检测(本书不讲,Keras RetinaNet 示例 450 行)(:12-56)。
  • 分割:语义分割(两只猫同类)vs 实例分割(猫1/猫2)(:65-81);Oxford-IIIT 宠物数据集 7390 张+trimap 掩码 1前景/2背景/3轮廓(:83-90)。
  • 分割模型架构:前半 stride=2 下采样(不用 MaxPool:2×2 最大汇聚完全破坏窗口内位置信息;关注位置就用步幅,:256-269);后半 Conv2DTranspose 学习上采样(:270-279);最后像素级 3 路 softmax;~25 轮过拟合(:294-307)。
  • 架构模式 architecture pattern:架构=假设空间,梯度下降很呆板需要帮助(:337-348);「更像是一门艺术」,专家靠模式匹配直觉(:349-354);消融研究 ablation study 文本框:X+Y+Z 好就试各子集;论文为同行评审优化像「昂贵西装」(:402-420)。
  • MHR:模块化-层次结构-复用,大教堂/人体/Keras 代码库通用(:361-375);VGG16 重复层块+金字塔结构(滤波器增+特征图减)(:376-383);深而窄优于浅而宽,但梯度消失限制深度(:384-386)。
  • 残差连接 residual connection:传话游戏比喻反向传播噪声累积=梯度消失(:421-432);解法=信息捷径,输入加回输出;ResNet 2015 何恺明(:433-444);伪代码 residual=x; x=block(x); x=add([x,residual])(:445-456);形状不匹配用 1×1 Conv2D 投影残差,有 MaxPool 用 strides=2(:457-495)。
  • 批量规范化 batch normalization:Ioffe & Szegedy 2015;训练用批量均值方差,推断用指数移动平均(:579-596);「没有人能真正确定批量规范化为何有效」——作者坦白;实践效果=助梯度传播(:597-609);激活放 BN 之后+use_bias=False(:610-640);微调时冻结 BN 层(:641-646)。
  • 深度可分离卷积 depthwise separable convolution:逐通道空间卷积+1×1 逐点混合;假设=空间位置相关、通道不相关(:648-672);Xception 基础(Chollet 自己 2017 论文!利益相关点);参数对比 3×3×64×64=36864 vs 3×3×64+64×64=4672(:683-688);硬件软件算法共同发展文本框:cuDNN 极端优化使可分离卷积实际不快;偏离主路径成本极高(:689-711)。
  • 迷你 Xception 综合:SeparableConv2D+BN+残差块循环 32→512,GlobalAveragePooling2D 替代 Flatten,721,857 参数,测试 90.8% vs 第8章 83.5%(:713-766);注意第一层仍用普通 Conv2D(RGB 通道高度相关)(:755-760)。
  • 可解释性 interpretability(:776-780);三方法:中间激活值/滤波器/类激活热力图(:781-794)。
  • 中间激活值:activation_model 一输入九输出(:875-907);观察:第一层=边缘检测器保留几乎全部信息;越深越抽象(猫耳朵猫眼睛);稀疏度增大(:960-968);信息蒸馏管道 information distillation pipeline:滤无关放大有用(:969-974);凭记忆画自行车例子(:975-982)。
  • 滤波器可视化:输入空间梯度上升最大化某滤波器响应;30 步 learning_rate=10,L2 范数规范化梯度(:983-1113);观察:前层方向边缘颜色→block4 纹理→block8 羽毛眼睛树叶(:1174-1180)。
  • Grad-CAM 类激活热力图 CAM:类别相对通道梯度加权特征图通道(:1183-1197);非洲象 87%/长牙动物 8%/印度象 2%,索引 386(:1237-1250);pooled_grads 逐通道乘重要性再取均值(:1290-1303);小象耳朵激活最强=区分非洲/印度象的依据(:1344-1347);回答两问:为什么认为有象+象在哪里(:1344-1346)。

第10章 深度学习处理时间序列(17-ch10.txt)

  • 时间序列任务:预测(重点)/分类/事件检测(热词检测)/异常检测(无监督)(:10-25);傅里叶变换做特征工程但本章不讲(:26-31)。
  • 耶拿天气数据集:每 10 分钟 14 个量,2009-2016,420,451 行(:41-64);温度年周期+日周期(每天 144 点)(:96-124);「始终在数据中寻找周期性」文本框(:115-120)。
  • 时间序列划分铁律:验证/测试必须比训练更靠后(前 50% 训练、25% 验证、25% 测试)(:125-138)。
  • 任务表述:每小时采样,给前 5 天(120 小时)预测 24 小时后温度(:141-142);逐序列规范化只用训练段均值标准差(:143-152);timeseries_dataset_from_array:sampling_rate=6、sequence_length=120、delay(:154-261);样本形状 (256,120,14)。
  • 常识基准:预测 24h 后=现在温度,验证 MAE 2.44℃/测试 2.62℃(:262-299)。
  • 密集连接模型:Flatten+Dense(16)+Dense(1),MSE 损失(0 附近光滑)监控 MAE;部分验证损失接近基准但不稳定——「假设空间里有好解不等于梯度下降找得到」大海捞针(:301-357)。
  • 1D 卷积:Conv1D(8,24)+MaxPooling1D+GlobalAveragePooling1D;验证 MAE ~2.9℃ 更差;两原因:天气只在某时间尺度平移不变+汇聚破坏顺序信息(:359-405)。
  • LSTM(16):验证 MAE 2.36℃/测试 2.55℃,首次超越基准但只一点点(:407-437)。
  • 前馈网络 feedforward network 无记忆 vs RNN 有内部环路+状态(:444-467);RNN 伪代码 output_t=f(input_t,state_t); state_t=output_t;NumPy 实现 tanh(dot(W,x)+dot(U,state)+b)(:468-535);SimpleRNN 层、return_sequences 两种模式、堆叠要中间层 return_sequences=True(:554-602)。
  • SimpleRNN 无法学长期依赖=梯度消失(Bengio 90 年代初研究)(:605-609);LSTM 1997 Hochreiter & Schmidhuber(:610-613);传送带比喻:c_t 携带数据流,信息可跳上传送带到更晚时间步原封不动跳回来;与残差连接思路几乎相同(:614-618);伪代码 i_t/f_t/k_t 三变换,c_t+1=i_tk_t+c_tf_t(:656-675);作者坦白:对 i/f/k 的人为解读「没有多大意义」,实际作用由权重决定;单元架构=对搜索的约束而非工程设计;「你不需要理解 LSTM 单元的具体架构」(:677-707)。
  • 循环 dropout:Yarin Gal 2016 博士论文=每时间步用同一 dropout 掩码;Keras dropout+recurrent_dropout 两参数(:724-746);LSTM(32, recurrent_dropout=0.25)+Dropout(0.5),50 轮,验证 MAE 2.27℃(改进 7%)测试 2.45℃(:748-768)。
  • RNN 性能文本框:小 RNN 在 CPU 比 GPU 快(for 循环无法并行);cuDNN 内核不支持 recurrent_dropout,加了降速 1/5~1/2;unroll=True 展开(:775-797)。
  • 堆叠 GRU(32)×2:测试 MAE 2.39℃(改进 8.8%),回报递减;2017 谷歌翻译=7 层 LSTM(:798-836);GRU=Cho 2014 精简版 LSTM(:810-812)。
  • 双向 RNN:两个方向各一个 RNN 合并表示(:843-852);逆序 LSTM 在温度任务比基准还差——最近过去更重要;文本则哪种顺序都行(:853-872);Bidirectional(layers.LSTM(16)) 在温度任务反而更差(逆序一半没用还加倍容量)(:897-911);2016 年双向 LSTM 曾是 NLP 最先进(Transformer 之前)(:912-914)。
  • 市场与机器学习文本框:「靠观察后视镜是没法开车的」;公开数据+公开技术=没有信息优势,死胡同(:933-942);经验:单一地点天气改进 ~10% 是上限(:928-931)。

第11章 深度学习处理文本(18-ch11.txt)

  • 自然语言=进化形成规则在后 vs 机器语言规则在先(:10-18);ELIZA 60 年代;Jelinek 名言「每次我解雇一名语言学家,语音识别的性能都会提高一些」(:19-37);NLP=应用于单词句子的模式识别,模型不理解语言只找统计规律(:38-49)。
  • 简史:90 年代决策树→logistic 回归;作者 2013 Kaggle NLP 竞赛用决策树+logistic 获胜;2015-2017 双向 LSTM 主导;2017-2018 Transformer 取代(:50-61)。
  • 文本向量化三步:标准化(小写去标点)→词元化→数值化(:64-95);词干提取 stemming 少用(:116-125);标准化可能删信息(问号对提取问题有用)(:121-125)。
  • 词元化三种:单词级/N 元语法 N-gram/字符级(:127-136);序列模型 vs 词袋模型 bag-of-words;N 元语法袋示例 the cat sat(:137-165);词袋=无序集合用于浅层模型(:161-165)。
  • 词表索引:只留前 2-3 万常见词;OOV 索引 1、掩码词元索引 0(填充用)(:167-208);TextVectorization 层:adapt() 建词表,get_vocabulary() 前两位是 ""和"[UNK]"(:259-318);只能 CPU 运行:放 tf.data 管道异步 vs 放模型里同步等 GPU(:321-360)。
  • IMDB 原始文本:aclImdb 目录 25000+25000,删 train/unsup(:387-402);20% 训练文件做验证(种子 1337)(:406-425);text_dataset_from_directory(:426-465)。
  • 词袋方法:一元语法 multi-hot(20000 维)+Dense(16)+Dropout+sigmoid → 测试 89.2%(基准 50%,最佳 ~95%)(:469-570);二元语法 → 90.4%(:572-618);TF-IDF(词频/文档频次,只用除法保稀疏性)→ 89.8%(:620-702);导出含预处理的推断模型(:703-729)。
  • 序列模型:整数序列→向量序列→1D 卷积/RNN/Transformer(:730-742);one-hot(20000 维)+双向 LSTM:每个样本 (600,20000)=1200 万浮点数,慢且只有 87%(:744-809)。
  • 词嵌入 word embedding:one-hot 假设词元相互独立(正交)显然错误;几何距离应反映语义距离;密集低维 256/512/1024 vs 稀疏 20000 维(:810-836);Cat/Dog/Wolf/Tiger 四词图:「从宠物到野生」向量=「从犬科到猫科」向量;king+female=queen(:838-860);两种获得:随任务学/预训练(:861-866);不存在理想嵌入空间,取决于任务(:868-877)。
  • Embedding 层=字典查询(:879-896);从头学 256 维+双向 LSTM → 87%(:897-924);填充+掩码 masking:mask_zero=True,RNN 跳过被掩码时间步(否则几百次迭代读填充向量状态被冲掉)→ 88%(:926-981)。
  • 预训练词嵌入:Word2Vec(Mikolov 2013 谷歌)、GloVe(斯坦福 2014,词共现矩阵因式分解);400,000 词 100 维 822MB(:982-1004);Constant 初始化+trainable=False 冻结(:1042-1050);本任务帮助不大(数据够),小数据集才有用(:1073-1075)。
  • Transformer:Vaswani 等 2017「Attention Is All You Need」;神经注意力 neural attention 无循环无卷积(:1077-1086);前两次见过类似思想:最大汇聚=全有或全无的注意力,TF-IDF=连续的注意力(:1089-1099)。
  • 自注意力 self-attention:用相关词元表示调节某词元表示→上下文感知;「date」「see」多义例(:1112-1126);「The train left the station on time」走查:算 station 与每词点积相关性分数→softmax→加权求和→新 station 向量含 train 的一部分(:1127-1163);伪代码双循环(:1164-1185);MultiHeadAttention 层传 3 次 inputs(:1186-1196)。
  • 查询-键-值 QKV:来自搜索引擎;查询与键比相关性→对值加权求和;键=值=源序列,查询=目标序列(翻译);分类时三者同一序列(:1197-1255)。
  • 多头注意力:输出空间拆独立子空间各学各的,3 组密集投影;原理上与深度可分离卷积类似(:1257-1286)。
  • Transformer 编码器:MultiHeadAttention+密集投影+残差连接+LayerNormalization(「我设想的发明者思考过程」)(:1287-1314);LayerNormalization vs BatchNormalization 伪代码对比(序列内汇聚 vs 批量汇聚)(:1383-1408);文本分类 87.5%(:1409-1447)。
  • 关键坦白:这个编码器根本不是序列模型!自注意力是集合处理机制,打乱词序结果完全一样(:1448-1456);解法=位置编码/位置嵌入 positional embedding:词向量+位置向量相加(原论文用余弦,我们学嵌入)(:1468-1528);PositionalEmbedding 层;精度 88.3% 最好序列模型但仍逊词袋(:1530-1566)。
  • 何时用词袋 vs 序列模型黄金常数:样本数/平均词数 <1500 用二元语法袋,>1500 用序列模型;IMDB 20000/233≈86 应选词袋;作者 2017 团队系统分析(:1568-1606)。
  • 序列到序列 seq2seq:编码器→中间表示→解码器看 0~i-1 预测 i;[start]/[end] 词元;推断时逐词元生成回喂(:1608-1648);应用:翻译/摘要/问答/聊天/文本生成(:1614-1621)。
  • 英西翻译数据集 spa-eng;两 TextVectorization 层,西语保 [start][end] 去 ¿;目标偏移一个时间步(:1650-1763)。
  • RNN seq2seq:编码器双向 GRU 最后输出→解码器 GRU initial_state→Dense(vocab) softmax(:1768-1836);逐步看过去预测未来不算作弊(:1838-1841);精度 64%(下一词元精度不是好指标,BLEU 才评整句)(:1842-1857);推断 decode_sequence 循环 argmax(:1858-1896);翻译示例含错误(:1897-1910);RNN seq2seq 两根本限制:源序列全压进一个状态向量(凭记忆翻译)+长序列遗忘(:1911-1920)。
  • Transformer seq2seq:解码器=自注意力(因果掩码 causal padding 防看未来)+交叉注意力(查询=目标,键值=编码源序列)+密集块(:1922-2064);get_causal_attention_mask 下三角矩阵(:2022-2037);端到端:PositionalEmbedding+Encoder+Decoder,67% 精度 vs GRU 64%(:2066-2099);翻译示例+算法偏差警告:译文无根据地假定性别(:2133-2153)。

第12章 生成式深度学习(19-ch12.txt)

  • 作者 2014 预言 AI 参与文化内容创作被嘲笑;DeepDream 2015、风格迁移 2016、Sunspring LSTM 剧本(:11-18);「语言模型只有形式,没有实质内容」;Xenakis 60 年代引言作曲家变飞行员(:35-41)。
  • 序列生成简史:LSTM 1997;Douglas Eck 2002 音乐生成;Alex Graves 2013 手写笔迹「生成序列数据是计算机所做的最接近于做梦的事情」(:53-71);GPT-3 1750 亿参数(:72-77)。
  • 语言模型 language model=对下一词元概率建模;采样循环:条件数据→生成→回喂(:79-100)。
  • 采样策略:贪婪采样=重复可预测;随机采样;softmax 温度 reweight:log(p)/T→exp→归一;低温=熵小可预测,高温=随机(:103-154)。
  • IMDB 语言模型:sequence_length=100、vocab 15000;输入序列去掉尾词、目标偏移 1;序列到序列训练=一次解 N 个重叠问题(因果掩码),否则 N=100 才能预测+大量冗余(:156-266);TransformerDecoder(x,x) 自引用(:269-280)。
  • TextGenerator 回调:每轮用 5 个温度生成 50 词;训练 200 轮;0.2 重复循环、0.7 左右最佳、1.5 瓦解(:282-390);「不要期待模型生成任何有意义的文本……语言的这些用途是其意义的来源」(:391-407)。
  • DeepDream:2015 谷歌 Caffe;与滤波器可视化同原理但 3 区别:整层最大化/从现有图开始/多尺度八度 octave(:417-439);InceptionV3;layer_settings mixed4-7 权重;损失=L2 范数加权;八度间放大 1.4 倍+重注入丢失细节技巧(:440-630);底层几何图案、顶层狗眼鸟羽(:635-641)。
  • 神经风格迁移:Gatys 2015;风格=纹理颜色视觉图案,内容=宏观结构(:649-664);loss=style 距离+content 距离(:665-677);内容损失=靠近顶部单层激活 L2;风格损失=多层激活的格拉姆矩阵 Gram matrix(特征图内积=特征相互关系=纹理统计)(:681-706);VGG19;总变差损失=空间连续性正则化;SGD 学习率 100→20 指数衰减,4000 次迭代(:707-909);只是纹理迁移不是魔法;慢,可训练小前馈网络学变换=快速风格迁移(:911-920)。
  • VAE:Kingma & Welling 2013.12 / Rezende 等 2014.1(:981-984);自编码器=编码到低维再解码重构;经典自编码器潜在空间无结构已过时(:985-1006);**VAE 关键:编码为分布参数 z_mean/z_log_var 而非固定点;z=z_mean+exp(0.5z_log_var)epsilon 采样;随机性迫使潜在空间连续——任意相邻点解码出相似图像(:1007-1036);两损失:重构损失+KL 散度正则化(:1037-1053);MNIST latent_dim=2 二维网格采样,数字连续变形(:1056-1271);概念向量 concept vector:微笑向量 z+s(:967-979)。
  • GAN:Goodfellow 2014;伪造者+艺术商人比喻(:1286-1306);优化最小值不固定:每下山一步地形就变,找的是两股力量的平衡——所以极难训练(:1324-1328);DCGAN;CelebA 20 万张人脸 64×64(:1330-1341);五步流程(:1342-1353);技巧:步幅代替汇聚、正态分布采样、标签加噪声、LeakyReLU 代替 relu 防稀疏梯度、内核大小被步幅整除防棋盘伪影(:1355-1376);train_step 双优化器:先训判别器(真假混合+噪声标签)再训生成器(标签全「真」=撒谎)(:1526-1607);判别器支配生成器→调小判别器学习率(:1644-1646);30 轮出结果(:1647-1649)。

第13章 适合现实世界的最佳实践(20-ch13.txt)

  • 超参数 hyperparameter vs 参数:架构层面选择,不可微不可梯度下降(:26-34);调超参是工程师大部分时间做的事,应留给机器(:35-43);优化循环 6 步;三难:空间离散+反馈贵(从头训练)+信号含噪声(:44-61)。
  • KerasTuner:hp.Int/Choice 定义搜索空间;BayesianOptimization/RandomSearch/Hyperband 调节器;objective="val_accuracy"、max_trials、executions_per_trial 降方差(:65-163);EarlyStopping(patience=5) 配合(:187-201);搜索后 get_best_hyperparameters→get_best_epoch(大 patience 找最佳轮数)→全数据重训轮数×1.2(:207-255);警告:用验证信号调超参=在验证数据上训练超参数→验证集过拟合(:261-263)。
  • 搜索空间艺术:别把一切都变超参(组合爆炸);做高层架构决策不做微观决策;HyperXception/HyperResNet 预制搜索空间(:265-282);AutoML 未来:工程师转向数据管理/损失函数设计/生态系统影响(:284-302)。
  • 模型集成 model ensembling:盲人摸象比喻——每个模型得部分真相(:303-318);简单平均 vs 验证集上学权重的加权平均(Nelder-Mead)(:319-344);关键=多样性 diversity:同方向偏差不抵消;同一网络不同初始化集成不值得做;作者 2014 Kaggle 希格斯玻色子第 4 名=树模型+神经网络,最弱的正则化贪婪森林反而提分最多(:345-361)。
  • 混合精度训练 mixed-precision:float16/32/64;分辨率比喻;梯度更新 1e-6 量级 float16 表示不了;float16 计算+float32 存权重;GPU 快 3 倍 TPU 快 60%(:389-451);keras.mixed_precision.set_global_policy("mixed_float16");variable_dtype 仍 float32;softmax/交叉熵数值不稳(:474-487);dtype 默认陷阱:NumPy 默认 float64(:453-472)。
  • 多 GPU:数据并行(模型复制各处理子批量合并梯度)vs 模型并行(太大才用)(:489-501);MirroredStrategy 同步训练:全局批量 512→4×128 局部批量→各副本算权重增量→合并全局增量同步(:518-563);加速比 2 卡2×/4 卡3.8×/8 卡~7.3×(:572-579);tf.data 必用+prefetch(AUTOTUNE)(:564-570)。
  • TPU:ASIC 专用集成电路;TPU V2 比 P100 快 15 倍,成本效益 3 倍(:581-589);TPUClusterResolver.connect()+TPUStrategy;Colab 双虚拟机:本地磁盘读不了,数据放内存或 GCS(:591-645);大批量(>10000)+相应增大学习率;步骤融合 steps_per_execution=8 减少往返(:657-667)。

第14章 总结(21-ch14.txt)

  • AI>ML>DL 包含关系;「深度学习模型就是用于解开高维数据复杂流形的数学机器」(:21-76);意义来源于事物之间的成对关系+距离函数;「神经网络」名字极具误导性,更该叫分层表示学习/深度可微模型(:77-90)。
  • 推动技术四件:渐进算法创新/感知数据/GPU(黄仁勋押注)/软件栈(CUDA+TF+Keras)(:91-108)。
  • 通用工作流程 7 步回顾(:110-135);四种架构对照表:向量=Dense、图像=Conv2D、序列=RNN 或 Transformer、视频/立体=Conv3D(:137-153);各架构代码模板+最后一层/损失对照(:156-307)。
  • 可能性空间:按输入/输出模式分类的应用清单(医疗/自动驾驶/翻译/视觉问答……)+警告某些模型无法泛化(:309-351)。
  • 局限性:任何需要推理、长期规划、算法处理数据的事,投入多少数据都不行;产品说明→代码库做不到;排序算法都难(:352-368)。
  • 拟人化风险:心智理论投射;对抗样本 adversarial example 长臂猿梯度+熊猫照片→分类成长臂猿(:370-400);「深度学习模型并不理解其输入」「机器学习模型就像是镜子中的模糊图像」;模型利用任何捷径:豹纹沙发归类为豹子(:401-423)。
  • 自动机与智能体:大脑 5 亿年行为程序;昆虫=硬编码自动机(:425-453);笛卡儿 1637《谈谈方法》引文「它们的活动所依靠的并不是理解,而只是它们的部件结构」(:454-466);局部泛化 local generalization vs 极端泛化 extreme generalization:深度网络只能泛化到已知的未知事物(known unknown),流形插值;火箭/过街例子(:467-516);智能的目的=应对动态不确定环境(:518-537)。
  • 广泛泛化 broad generalization=处理未知的未知事物;沃兹智能测试(进厨房煮咖啡);「人工智能」中的「智能」标签是类别错误,更准的名字是「人工认知」(:539-569)。
  • 捷径法则 shortcut rule:优化某指标会以指标外一切为代价;Netflix 100 万奖系统没被采用;Kaggle 获胜模型几乎无法用于生产;深蓝 1997 击败卡斯帕罗特但没教会关于人类智能的知识(:577-608);固定任务消除了对智能的需求,所以 100% 会走捷径(:625-629)。
  • 新目标:智能=相关信息量与未来操作领域的转换效率比;ARC 抽象和推理语料库 2019(作者本人开发!利益相关):三四例子学规则、核心先验知识、GPT-3 完全无法解决 ARC(:631-669)。
  • 智能是对抽象类比的敏感性;万花筒假说:几粒种子无尽变化(:671-708);两种抽象:以价值为中心(连续相似性→原型,感知直觉,深度学习会这半)vs 以程序为中心(精确结构匹配→子图同构,推理规划,深度学习缺这半)(:709-785);排序例子:Python 几行 vs 深度网络大量数据还出错(:787-811)。
  • 未来三方向:模型即程序(程序合成 program synthesis,离散搜索 vs 梯度下降对照表)/深度学习+程序合成融合(AlphaGo 蒙特卡罗树搜索+价值策略网络=混合系统先例)/终身学习+模块化子程序全局库(元学习)(:813-1004);AGI 但「不要指望奇点式机器人世界末日」(:1002-1004)。
  • 学习资源:Kaggle(XGBoost/Keras 是赢家标配)、arXiv、Keras 生态(:1006-1045)。