跳到主要内容

reading-notes — shen-du-xue-xi-gao-shou-bi-ji(《深度学习高手笔记 卷1:基础算法》刘岩,2022-11 人邮)

无书签(chapterAddressable=false),锚只能 text/NN-pX-Y.txt:行号 + 搜短语。 原书 6 章 3 篇:第一篇 CNN(基础骨干/轻量级/NAS)、第二篇 NLP(序列模型/预训练)、第三篇 模型优化(Dropout+归一化)。 本文件:按页桶记要点。格式:行号 = 该页桶 txt 的行号;引语尽量原样抄短句。

01-p1-20.txt(扉页/提要/序/前言/目录 + 第一篇篇首)

  • L1-4:书名「深度学习高手笔记 卷1 基础算法」,刘岩(@大师兄)著。L27:2022年11月第1版,字数455千,L29 定价109.80。人邮(异步图书)。
  • L8-17 内容提要:三篇——第一篇卷积神经网络(基础骨干、轻量级CNN、模型架构搜索);第二篇 NLP(基础序列模型、模型预训练);第三篇模型优化(Dropout 衍生 + 批归一化/层归一化为代表的归一化)。
  • L91-194 前言:作者 2014 年读研入行,L101-106「3 年的求学生涯和 4 年的工作生涯」「8 年的人工智能相关的科研与工作经历」;知乎专栏起步(L107-110,「一百多篇文章」「几百万的阅读量」);两卷结构(卷2 经典应用:目标检测/分割、OCR、生成模型等,L118-123);L169-172「本书源于一系列算法或者论文的读书笔记……知识点并不是顺序展开的」,每节开头给先验知识;L173-182 三条阅读建议(拓扑图清空法/按序读/直跳)。
  • L195-410:目录(导航,不引)。
  • L411-416 第一篇篇首引言 Sebastian Thrun:「人工智能几乎是一门人文学科,是一种试图理解人类智力和人类认知的尝试」。
  • L418-423:物体分类数据集 MNIST/CIFAR-10/CIFAR-100/ImageNet;ImageNet 由李飞飞主导 ILSVRC。
  • L424-447:ILSVRC 编年史——2012 AlexNet top-5 25.8%→16.4%(验证卷积+大数据);2013 ZFNet「霸榜」并初步解释 CNN 有效性;2014 冠军 GoogLeNet 7.3%、亚军 VGG 8.0%(检测任务 VGG 反超;VGG 小卷积核/降采样后通道加倍等思想;开源 Caffe 模型抢占市场);2015 何恺明 ResNet 3.57%(退化问题→跳跃连接);2016 CUImage 6模型集成(创新停滞);2017 最后一届 SENet 2.21%(自注意力给每个特征图算权重)+ DenseNet(CVPR2017,黄高团队)。

02-p21-40.txt(1.1 LeNet-5/AlexNet、1.2 VGG、1.3 GoogLeNet 前半)

  • L15-17:LeNet 出自 LeCun 1998,手写数字;「LeNet-5……使用的均是 5×5 的卷积核」(L16)。
  • L21-23:LeNet-5 结构「卷积层+降采样层+全连接层至今仍然是最主流的结构」;卷积→响应与核形状类似的特征,降采样→不变性。
  • L24-58 LeNet-5 逐层:输入 32×32;C1 6 个 5×5 卷积,tanh,28×28,4704 神经元,156 参数(L25-28);S2 降采样(3 输入相加×可训练参数+偏置)→14×14,12 参数(L35-37);C3 稀疏连接(前6个特征图接 3 个相邻子集等,L38-42;「这两个层采用的稀疏连接的方式已被抛弃」L41-42);C3 16 个 5×5 same 卷积→10×10,1516 参数(L46-48);S4→5×5,32 参数(L49-50);C5 全连接 120,48120 参数;F6 84,10164;输出 softmax 10 类,850(L51-56)。softmax 优点:ex>0 区分度高;和为 1 即概率(L55-56)。
  • L60-76:Keras 代码(密集连接实现,不复现稀疏连接);10 epoch 收敛。
  • L82-95 AlexNet:2012 夺魁,top-1 37.5%、top-5 15.3%(比第二名 26.2% 低约10个点),参数 58 322 314 个,两块 GTX 580 并行(L86-90);笔记:L92-95「AlexNet 当初使用分组卷积是因为硬件资源有限……ResNeXt 的相关研究者则明确给出了分组卷积的定义」。
  • L97-100:加宽加深提容量,两个代价:计算资源消耗、过拟合。L101-102:2011 Ciresan GPU 部署 CNN。
  • L113-135:AlexNet Keras 代码(227×227 输入,stride 4,11×11/96;BN+MaxPool;两个 4096 全连接+Dropout 0.5)。
  • L139-144:多 GPU 训练(显存有限,第二卷积只用本 GPU 特征图,第三卷积跨 GPU)。
  • L145-151:ReLU vs tanh/sigmoid;tanh 饱和(「当 tanh(x) 中的 x 的绝对值比较大的时候,该局部的梯度会非常接近于 0」,L150-151)。
  • L163-166:梯度消失:「由反向传播中链式法则的乘法特性导致的……越接近损失函数的参数梯度越大……远离损失函数的参数的梯度则非常接近 0」。
  • L167-177:ReLU f(x)=max(0,x)(L168),导数恒 1 无梯度消失;稀疏性缓解过拟合(L176-177)。
  • L178-180:ReLU 死神经元:「大部分甚至所有的值为负值,从而导致该层的梯度都为 0」;减小学习率缓解。
  • L181-192:LRN 局部响应归一化(模拟横向抑制),已被淘汰;VGG 论文指出「LRN 并没有什么效果」(L183);被 BN 等替代;LRN 放池化前不经济(L191-192)。参数 n=5,k=2,α=0.5,β=0.75(L189-190)。
  • L193-195:覆盖池化 overlap pooling(步长<核尺寸,相邻池化核覆盖),AlexNet 称缓解过拟合。
  • L196-208:Dropout(前两层):「随机将一定比例的隐层节点置 0」;原因「每次训练都会采样一个不同的网络结构,但是这些架构是共享权值的……减轻了节点之间的耦合性」;测试时丢弃不执行(L197-201);实验:训练损失 0.0735 vs 0.0155,但测试准确率 0.9826→0.9841(L204-208)。
  • L219-239 VGG 概览:2014 牛津 VGG;结构三特征(L228-235):按 2×2 池化分块;块内 same 卷积、特征图数不变;通道按块 2 倍递增(64/128/256/512/512)。m×(n×conv3+max_pooling)(L251)。VGG 开源模型→迁移学习材料→大量商业市场(L238-239)。
  • L243-267 VGG 家族:输入 224×224×3;5 层最大池化→7×7 特征图;两 4096 全连接+1000 类 softmax。3×3 卷积核三点理由(L253-264):①感受野同(1 层 7×7 = 3 层 3×3)但更深更有判别性;②参数 30C² vs 50C²;③训练更慢(代价)。L269-270:LeNet 实验——两层 3×3 比单层 5×5 好,「训练速度慢了二分之一」。
  • L273-275:VGG-A-LRN 加 LRN 错误率反而更高。
  • L280-299:VGG-A/B/D/E 对比:越深错误率越低,但 VGG-D/E 深处趋收敛,「甚至偶尔会发生深层网络的错误率高于浅层网络的情况,这就是后面我们要介绍的退化问题」(L283-284);「残差网络则通过残差机制将网络的深度从理论上扩展到了无限大」(L286-287)。VGG-C 的 1×1 卷积出自 NIN,通道融合+提升容量(L290-292);VGG-D 3×3 优于 1×1(L294-296)。
  • L301-324 训练/测试:单尺度(S=256/384)/多尺度训练(256-512 随机短边,裁 224);测试投票;OverFeat 全图输入:全连接看成卷积(7×7×512×4096),整图输出取平均(L313-324)。
  • L326-336 1.3 GoogLeNet:两大流派——加深加宽(ZFNet/VGG)vs 增拟合能力/多样性(Maxout、NIN、Inception)。
  • L340-383 Maxout:与 Dropout/装袋对比(L342-345);W 从 d×m 变 d×m×k(L358-360);z=max(z1..zk) 分段线性;k 足够大可逼近任意凸函数(L373-374);「参数数量是传统神经网络的 k 倍……现在 Maxout 网络基本已被工业界淘汰」(L382-383)。
  • L384-424 NIN:卷积核换成小型 MLP,「MLP 替代卷积操作增加了每次滑窗的拟合能力」(L390-391);实验三结论(L392-395):参数远大于同型 CNN、收敛快、训练慢。1×1 卷积三个用途(L418-422):保存位置关系;升维降维;跨特征图交互。NIN 还提出全局平均池化减过拟合(L423-424)。
  • L426-444 Inception v1:不同大小卷积核→不同感受野;「网络的层数越多,不同大小的卷积核对应在原图的感受野的大小差距越大,这也就是 Inception 通常在越深的层次中效果越明显的原因」(L430-432);并行 1×1/3×3/5×5+步长1最大池化;朴素版特征图数量乘 4(L438-439)→用 1×1 降采样得 v1。
  • L466-486 GoogLeNet:9 个 Inception、22 层,2014 冠军;辅助损失(两个 softmax 分支,损失以 0.3 比例加入,L474-476):①低层特征也有分类能力;②正则化+解决梯度消失;测试时移除。数据处理不等式 DPI(L480-486):「数据处理的步骤越多,则丢失的信息也会越多」X→Y→Z;I(X;Z)≤I(X;Y)。
  • L488-513 Inception v2:5×5→两个 3×3。
  • L517-545 Inception v3:n×n→n×1+1×n(非对称卷积);三点好处:省参数、多层增拟合、特征多样性。
  • L547-588 Inception v4 / Inception-ResNet:v4 = Stem+3 Inception+2 Reduction;Inception-ResNet v1/v2 = Inception 插捷径(残差)。

03-p41-60.txt(1.3.7 末、1.4 ResNet、1.5 SENet、1.6 DenseNet、1.7 DPN、1.8 iGPT 起)

  • L15-20 Inception-ResNet 残差缩放:「残差连接并不会明显提升模型精度,而是会加快训练收敛速度」;深了不稳定,「到后面模型的参数可能全变为 0」→乘缩放系数 0.1~0.3。
  • L30-49 1.4 ResNet 动机:加深三问题——资源消耗/过拟合/梯度消失爆炸;前两个各有解(BN 解决第三个);「无脑」加深→退化(degradation):「随着网络层数的增多,训练集损失值逐渐下降,然后趋于饱和,当我们再增加网络深度时,训练集损失值反而会增大。注意这并不是过拟合,因为在过拟合中训练集损失值是一直减小的」(L37-40)。VGG-100 第98层=VGG-16 第14层思想→直接映射;DPI:层数越深信息逐层减少,直接映射保证「l+1 层的网络一定比 l 层的网络包含更多的图像信息」(L46-48)。
  • L53-67 残差块:x_{l+1} = x_l + F(x_l, W_l)(式1.10);直接映射部分+残差部分(2或3个卷积);通道不同时 1×1 卷积升降维(「实验结果表明 1×1 卷积对模型性能提升作用有限」L66-67)。resnet_v1 代码 L73-86。
  • L88-101:搭建两步:按 VGG 架构搭普通网→插入单位映射。
  • L102-109 为什么叫「残差」:误差=观测值与真实值之差;残差=预测值与观测值之差。H(x)=F(x)+x → F(x)=H(x)−x,y=x 视为观测值→F 对应残差。笔记(水位线):「模型预测为 10m,你测量的是 10.4m,但真实值为 10.5m」(L108-109)。
  • L111-148 原理:两假设 h(·) 直接映射、f(·) 直接映射;L 层=x_l+Σ残差(单位累加);梯度式含 1+Σ项→「不可能一直为 −1……不会出现梯度消失的问题」(L139-141)。「这两个假设是让残差网络可以训练深度模型的充分条件。那么这两个假设是必要条件吗?」(L146-148)。
  • L149-202 假设1验证:反证 h(x)=λ^l x;λ>1 梯度爆炸、λ<1 梯度变0(L167-169)→λ 必须=1。表1.1(110层 CIFAR-10):原始 6.61;常数缩放失败;冻结门 12.35;排他门失败~9.81;捷径门 12.86/6.91;1×1 卷积捷径 12.22;Dropout 捷径失败(L176-188)。结论:「直接映射依旧是效果最好的策略」;1×1 卷积「更可能是优化问题而非模型容量问题」(L198-199)。
  • L204-225 激活函数位置:后激活 vs 预激活;表1.2:传统 6.61/5.93;BN在单位加后 8.17/6.50;ReLU在单位加前 7.84/6.14;只有ReLU预激活 6.71/5.91;全部预激活 6.37/5.46(ResNet-110/164)。「将激活函数移动到残差部分可以提高模型的精度」→ResNet v2(L227)。
  • L263-270 1.4.3 残差网络=模型集成:Veit 等论文,3 层残差网络展开成 8 节点二叉树;「随机删除残差网络的一些节点,网络的性能变化较为平缓,而对 VGG 等堆叠到一起的网络来说,随机删除一些节点后,网络的输出将完全随机」。
  • L272-332 1.5 SENet:核心「建模通道之间的依赖关系……SENet 通过注意力机制为每一个通道学习一个权值」(L277-279)。SE 块=压缩 squeeze+激发 excitation(L280-284):全局平均池化→1×1×C 向量;两层全连接→通道权值;加权。「SE 块只依赖于当前的一组特征图,因此可以非常容易地嵌入几乎现在所有的 CNN 中」(L283-284)。激发用两层全连接门机制:δ=ReLU、σ=sigmoid,r=16(L319-325)。两种理解(L330-332):学每个特征图的动态先验;「特征图维度的自注意力」。
  • L344-360 复杂性:U 是几万个节点值,s 只有 C 个值,H×W 程度压缩可操作;全连接 Flatten 效果更好但「全连接操作往往是整个网络结构的性能瓶颈」(L349-351)。数字:ResNet-50 3.86 GFLOPS,SE-ResNet-50 +0.01 GFLOPS;运行时间 190ms→209ms(+10%);参数 2500万→+250万(+10%),最后几层 SE 块可省,只 +4%。
  • L362-375 作者三点思考:ROI 池化后接全连接;深度 vs 宽度权衡;浅层用重 SE 块、深层用轻 SE 块。
  • L377-448 1.6 DenseNet:动机——「如果我们的目的是保证信息毫无阻碍地传播,那么残差网络的堆叠残差块便不是信息流通最合适的结构」(L382-384);L 层网络加 L(L−1)/2 个捷径;拼接而非单位加(L389-390)。密集块:x_l=拼接前面所有层输出(式1.24);合成函数 BN→ReLU→3×3;成长率 k(论文 k=12);DenseNet-B:先 1×1 降到 4k 再 3×3(L423-430)。成长率:「每个节点的输出均是一个 k 维的特征向量……第 l 个节点的输入便是 k0+k×(l−1) 维」(L445-447)。
  • L450-457 压缩层:降维+降采样;θ<1 → DenseNet-C(θ=0.5);含瓶颈+压缩 → DenseNet-BC;池化 2×2 平均。
  • L477-484 小结:优点——信息流通顺畅、特征重用、网络更窄;缺点——「需要在内存中保存密集块的每个节点的输出……这也导致了现在工业界主流的算法依旧是残差网络」(L483-484)。
  • L487-613 1.7 DPN:用高阶 RNN(HORNN)统一残差/DenseNet;「残差网络更侧重于特征的复用,而 DenseNet 则更侧重于特征的生成」(L497-498);DPN 获 2017 ILSVRC 物体定位冠军(L499)。DenseNet 拼接+1×1卷积=分组分别 1×1 再求和(L521-522);参数:高阶 RNN f,g 共享,DenseNet 不共享(L523-525);「残差网络是一种特殊形式的 DenseNet」(L537-538,证明 L539-550);参数共享时残差网络退化为传统 RNN(L551-553)。优缺点:「残差网络复用了前面网络提取的特征……特征的冗余度比较低。而 DenseNet 的每个 1×1 卷积的参数都不同……冗余度比较高的网络」(L568-574)。DPN=残差路为主+小 DenseNet 分支;共享第一个 1×1;3×3 用分组卷积;残差路通道多于 DenseNet 路(L580-597)。作者展望:更多分支(SENet/NAS);加注意力为分支学权值(L609-613)。
  • L614-633 1.8 iGPT 起:「GPT 的训练不需要人工标注数据,借助于语言模型构建损失函数,可以提取到泛化能力非常强的预训练语言模型。那么能否将这种无监督学习的思想迁移到图像分类中呢」(L622-624);iGPT 用 GPT-2 结构建模图像特征;惊艳在图像补全(下半遮住,用上半预测)(L626-628)。

04-p61-80.txt(1.8 iGPT、1.9 Swin Transformer、1.10 CSWin 起)

  • L1-6:iGPT「完全无卷积或者池化」;「最大的贡献在于突破了使用 CNN 解决图像问题的思维困境……使得 CV 和 NLP 领域之间的差距缩到了几乎为 0」;后续 CLIP、DALL·E。
  • L10-19 iGPT 两阶段:预训练对比 AR(预测下一个像素)与 BERT 式 MLM(0.15 概率掩码);「线性探测」评估:只拿特征训练分类器,「它能不受模型架构的影响而更精确地衡量特征的质量」(L14-17)。
  • L23-53:图像→1 维;序列长度问题:CIFAR 32×32×3 展开长 3072「尚且有能力处理」,ImageNet 224×224×3 长 150528「力不从心」(L28-31);降采样 IR 32²/48²/64²;k=512 k-means 聚类颜色→长度短 3/4;光栅扫描顺序展开(L52-53)。
  • L55-67 预训练:AR 建模像素概率密度,最小化负对数似然;BERT 任务式(1.37)。
  • L69-70:预训练数据:训 CIFAR/STL 用 ImageNet;训 ImageNet 用网上爬的 1 亿张图。
  • L71-138 网络结构:GPT-2 解码块,LN 同时作用于注意力与 MLP(L78);上三角掩码自回归(ε 极小浮点数,1e-10 置 −∞ 技巧 L115);「在 iGPT 中,并没有加入位置编码,而是希望模型能够自行学到这种空间位置关系」,因光栅顺序已建模顺序(L131-133);iGPT 有排列不变性 vs CNN 受邻位影响(L133-136)。
  • L139-147 四模型:iGPT-S 24层/512维/0.76亿参数;M 36/1024/4.55亿;L 48/1536/13.62亿;XL 60/3072/68.01亿。
  • L149-165 微调:序列平均池化→d 维→全连接;联合优化 LGEN+LCLF 更好。线性探测:「最后一层并不是线性探测效果最好的一层,效果最好的是中间几层」(L160-161);解释:CNN 浅层提取表层(颜色纹理)、深层提取目标值信息;iGPT 预测像素值,「中间的层反而会有更多的图像信息」(L162-165)。
  • L172-187 实验结论:容量越大探测准确率越高;探测准确率与验证损失负相关;同损失下容量越大泛化越强;上升趋势未放缓。AR 训练优于 BERT 训练;ImageNet+微调下 BERT 优;两者集成最优(L184-187)。
  • L191-207 小结:「我们没有看到 iGPT 的性能上限」;缺点三条:①「iGPT-L 在 Tesla V100 上的训练约需 2500 天,而同性能的 MoCo 模型大概仅需要 70 天」,参数是同性能 CNN 的 2~3 倍;②只能低分辨率(降到 32×32 损失信息),CNN 可滑窗处理大图;Transformer-XL 或更适合;③补全依赖输入数据分布(数据偏差)。
  • L209-246 1.9 Swin:ViT/iGPT 两问题:①「一个能表达信息的图像往往至少需要几百个像素点,而建模这种包含几百个长序列的数据恰恰是 Transformer 的『天生』缺陷」;②分割等密集预测不擅长。Swin 输入原始尺寸 224×224;多层次结构(感受野随层次扩大)→可像 FPN/U-Net 做检测分割(L233-239)。
  • L249-323 结构:Swin-T/S/B/L 四型号;4 阶段;超参 hidden_dim=96, layers=(2,2,6,2), heads=(3,6,12,24), window_size=7, downscaling_factors=(4,2,2,2)。阶段4输出 (1,768,7,7)→mean→mlp_head。
  • L325-360 块合并:块分裂+线性嵌入=块合并;nn.Unfold 滑窗降采样×4:224→56×56,每窗 4×4×3=48 维特征向量;linear 48→96。对比池化:「最大池化会丢弃窗口内的低响应值,而采用块合并的策略并不会丢弃其他响应,但它的缺点是带来运算量的增加」(L356-359)。
  • L361-399 阶段 n:断言层数为 2 的整数倍(一个 W-MSA 一个 SW-MSA 成对);Swin 块=LN→W-MSA→残差→LN→MLP→残差。
  • L445-533 W-MSA:窗口 7×7 内自注意力;56×56→64 个 7×7 窗;qkv 单个 Linear×3+chunk;rearrange 到 (3,64,49,32)(头数3/窗口64/窗内像素49/隐层32)。「将复杂度降低到了图像尺寸的线性比例」;MSA 复杂度 (hw)²C+hwC²,W-MSA M²hw+…(式1.46);「计算的瓶颈就在于整幅图像的逐像素比较,因此复杂度是 (hw)²。而 W-MSA 是在窗口内进行逐像素比较的,因此复杂度是 M²hw」(L546-550)。
  • L558-569:相对位置编码 B(参考 UniLMv2),按窗口内相对距离索引。
  • L571-579 SW-MSA:「单独使用 W-MSA 得到的网络的建模能力是非常差的,因为它将每个窗口当作一个独立区域进行处理而忽略了窗口之间交互的必要性」;循环上移+左移半窗(roll/CyclicShift,displacement=窗口宽/2)→新切分方式。
  • L597-638:移位引入拼接边界→upper_lower_mask / left_right_mask(−inf 掩码)屏蔽无意义跨区注意力;区域(1) 49 行=28 上+21 下等具体分析。
  • L641-645 输出层:阶段4 (768,7,7)→全局平均池化→LN→全连接。
  • L647-665 家族:Swin-T (96,(2,2,6,2),(3,6,12,24));S (96,(2,2,18,2));B (128,(2,2,18,2),(4,8,16,32));L (192,…,(6,12,24,48))。
  • L667-683 小结:兴奋三点(解决慢、设计紧扣 CNN 特性、表现好);冷静两点:①「并没有提供一个像反卷积那样的上采样的算法」;②W-MSA 每窗口独立 QKT→「并不具有 CNN 一个特别重要的特性:权值共享」,速度与同级 CNN 有差距,「在嵌入式平台上 CNN 还有着不可撼动的地位」。
  • L685-798 1.10 CSWin:十字形窗口;头对半分给横向/纵向自注意力;sw 各阶段 [1,2,7,7];「两层就可以得到全局感受野」(同行同列→再一层覆盖全图,L746-748)。LePE 局部加强位置编码:位置编码直接加到 V 上(深度卷积),再加捷径单位加(式1.53);「CSWin Transformer 块是一个由十字形窗口自注意力和 CNN 组成的多分支的结构」(L769-770)。输入经步长4的 7×7 卷积(比无重叠拆分好),阶段间步长2的 3×3 卷积降采样(L705-710)。

05-p81-100.txt(1.10 末、1.11 MLP-Mixer、2.1 SqueezeNet、2.2 MobileNet、2.3 Xception、2.4 ResNeXt 起)

  • L7-9:CSWin sw 分层:浅层 HW 大用小 sw,深层用大 sw(感受野)。
  • L11-17 CSWin 小结:「披着 Transformer 的『外衣』,但的确是 Transformer 和卷积的混合算法」;十字形窗口类似 2019 CCNet 思想。
  • L19-134 1.11 MLP-Mixer:「争议非常大的号称全部由 MLP 组成的图像分类模型」;公众号宣称「CNN 的时代」过去→作者逐层拆穿。三模块:块上全连接(stem,=步长P核P的卷积)、token-mixing MLP1(=深度卷积)、channel-mixing MLP2(=1×1 卷积)(L61-100);每个 MLP=两个全连接+GELU(L99);「混合层本质上还是一个由连续两个深度卷积和连续两个点卷积组成的深度可分离卷积」(L99-100)。LN≈白化(L92-95)。
  • L119-134 讨论:「MLP-Mixer 从本质上来说就是一个特殊形式的 CNN……最终还是没有脱离 CNN 的范畴,更别说『MLP is all you need』这种耸人听闻的报道了。这么看来,LeCun 说 MLP-Mixer 是一个『挂羊头,卖狗肉』的算法也就不奇怪了」(L122-126);失去 CNN 灵活性(如全卷积对输入尺寸自由度);依赖 JFT-300M 预训练(L130-131);「各位 CV 领域的同行们完全不必惊慌」(L133)。
  • L135-148 轻量级 CNN 总览:提速两法——减参数/减计算量(L157-159);SqueezeNet:1×1 代 3×3,对标 AlexNet;深度可分离卷积(深度卷积+点卷积)=最经典策略(MobileNet v1、Xception);MobileNet v2=深度可分离+残差;分组卷积=折中(ResNeXt),组间无交互是瓶颈→ShuffleNet v1 通道洗牌、v2 按整个测试时间分析(内存访问)结构似 DenseNet;CondenseNet 为每组学索引层。
  • L150-278 2.1 SqueezeNet:「在 ImageNet 数据集上达到与 AlexNet 近似的效果,但是参数数量约是 AlexNet 的 1/50,结合……深度压缩,模型文件大小约为 AlexNet 的 1/510」(L168-170)。三策略(L174-181):3×3→1×1(参数到 1/9);减 3×3 通道数;降采样后置(「较大的特征图含有更多的信息」但增计算量)。点火模块 fire=压缩(1×1)+扩张(1×1 拼 3×3);s1x1<e1x1+e3x3(瓶颈)(L185-191)。性能:top-1 57.5 vs AlexNet 57.2;SqueezeNet 1 248 424 参数 vs AlexNet 58 304 586(主要在全连接,去掉后 3 729 472);深度压缩后 421 098(L255-258)。
  • L265-274 缺点:①侧重嵌入式但「丧失了网络的并行能力,测试时间反而会更长」;②「参数的减少和 SqueezeNet 的设计并没有关系」,去掉全连接后 1/3 更合适;③0.5MB 得益于深度压缩,列进题目不合适。作者态度:「论文的题目非常吸引人眼球」。
  • L279-441 2.2 MobileNet v1:普通卷积参数 DK×DK×M×N;深度卷积=不跨通道(每通道独立核),参数 DK×DK×M;点卷积=1×1(M×N),负责跨通道合并与升降维;深度可分离:参数比≈1/N+1/DK²,计算比≈(式2.4);「对一个 3×3 的卷积而言,MobileNet v1 的参数数量和计算代价均为普通卷积的 1/9 左右」——实际是 1/81/9(L360,公式被吃掉,写时需表述为约 1/81/9? 原文 L360「均为普通卷积的 8 到 9 分之一左右」被公式图片化;用「约 1/8~1/9」稳妥——从式(2.3) 1/N+1/DK²,DK=3 时≈1/9)。实验:参数 239 936→29 184(L418-421)。GPU 反而更慢:cuDNN 7 之前不支持深度卷积,「依旧采用循环的形式遍历每个通道……是底层框架训练速度慢,并不是 MobileNet v1 算法训练速度慢」(L431-438)。α ρ 两超参。
  • L442-528 2.2.2 MobileNet v2:ReLU 信息损耗(DPI!),通道数少更明显;实验:低维流形经 n 个 ReLU 再还原,n 小损耗大(L449-456)。两方案:瓶颈层用线性激活(线性瓶颈层);扩通道(t 倍,反转残差)。ReLU6=min[max(0,x),6] (L480-482)。传统残差 t≈0.1(锥子形),MobileNet v2 t=6(沙漏形);「捷径被转移到了瓶颈层」→反转残差块(L486-499)。
  • L530-547 小结:「深度可分离卷积的分离式设计直接将模型压缩到 1/9 左右,但是精度并没有损失得非常严重,这一点还是非常震撼的」;MobileNet 系列高速度→嵌入式市场。「MobileNet v2 的论文的一系列证明非常精彩」。
  • L549-613 2.3 Xception:深度可分离卷积最早出自 Laurent Sifre 博士论文(L554);Xception=「极端的 Inception」:把 Inception 1×1 输出的每个通道完全分开逐通道 3×3→参数是普通卷积 1/9(L585-590);与深度可分离卷积两点不同:①先点卷积还是先深度卷积(顺序);②瓶颈层线性激活(L596-598)。结构=入口流(普通卷积+深度可分离)/中间流/出口流(仅深度可分离)(L599-601)。小结:「MobileNet 是通过将普通 3×3 卷积拆分来减少参数数量的,而 Xception 则是通过对 Inception 的充分解耦来减少参数数量的」(L611-613)。
  • L615-660 2.4 ResNeXt:残差+Inception 结合,每分支相同拓扑(不需人工雕琢);本质=分组卷积,基数 cardinality 控制组数(L626-630)。拆分-转换-合并 split-transform-merge(从全连接讲起,L632-645);简化 Inception(式2.7),T_i=1×1→3×3→1×1(L647-660)。

06-p101-120.txt(2.4 末、2.5 ShuffleNet、2.6 CondenseNet、3.1 PolyNet、3.2 NAS 起)

  • L18-38 2.4.4/2.4.5:分组卷积雏形=AlexNet 双 GPU(参数不共享);「分组卷积是介于普通卷积和深度可分离卷积之间的一种折中方案」;ResNeXt 速度应优于 Inception v4(相同拓扑更符合 GPU 并行原则);「在更多的环境中我们发现 Inception v4 的效果是优于 ResNeXt 的」;废掉不同感受野特性「不是很合理」。
  • L48-57 2.5 动机:ResNeXt 的「大量的对整个特征图的点卷积成了……性能瓶颈」→组内点卷积→信息不流通→通道洗牌;ShuffleNet v2:FLOPS 评估「非常不合理」,要考虑文件 I/O、内存读取、GPU 执行。
  • L61-115 通道洗牌:深度可分离瓶颈在点卷积(c2 远大于 9);分组点卷积→「网络趋近于由多个结构类似的网络构成的模型,精度大打折扣」;通道洗牌四步(reshape→g/n 轴转置→平铺→组内1×1);1 维例 [0..8]→[0 3 6 1 4 7 2 5 8];「步步可微分」(L114-115)。g=1 时退化为 Xception(L125);去掉 3×3 后的 ReLU 减信息损耗(L130-131);降采样时用拼接加倍通道(L132-133)。FLOPS:FResNet > FResNeXt > FShuffleNet v1(L138-139)。
  • L144-198 ShuffleNet v2:FLOPS 耗时仅占 50% 左右(L149-151);MAC(memory access cost)+GPU 并行性。四准则:G1 输入输出通道数相同 MAC 最小(c1=c2 取等);G2 MAC 与分组数 g 成正比,g 不应过大;G3 分支多降低并行能力(对照实验 5 组等 FLOPS,效率 a>b>d>c>e;「更多的分支需要更多的卷积核来进行加载和同步操作」);G4 点单位操作(ReLU/偏置/单位加)非常耗时,「看似数量很少,但它们对模型的速度影响非常大」(L177-180)。自批:ShuffleNet v1 违背 G2,瓶颈结构违背 G1,MobileNet v2 大量分支违背 G3,深度可分离处用 ReLU6 违背 G4(L190-192)。
  • L200-227 结构:通道拆分 channel split(c−c′ 和 c′,一般 c′=c/2);左直接映射右同通道深度可分离(G1);1×1 不分组(G2);拼接合并(G4);拼接+洗牌+拆分合并成一个点单位(G4);降采样=不拆分。「和 DenseNet 的异曲同工:强壮的特征重用」;「不同于 DenseNet 的整个特征图的直接映射,ShuffleNet v2 只映射了一半」→与 CondenseNet 相同思想(邻近重用更重要),i 与 i+j 重用量 ∝ 距离(L219-227)。
  • L241-387 2.6 CondenseNet:DenseNet 密集连接有冗余;训练中剪枝不重要权值(学习稀疏网络),测试时就是普通卷积;1×1 用分组卷积;指数增长率;块间加捷径(L246-259)。可学习分组卷积两阶段:浓缩 condensing(剪枝)+优化 optimizing(L282-284)。分组数 G、浓缩率 C;浓缩率 C→C−1 个浓缩阶段,每阶段剪 1/C,C−1 阶段后保留 1/C(L289-297);分组 Lasso 正则项→组级稀疏(一整列向 0 逼近);「剪枝并不是直接将这个特征删除,而是通过掩码的形式……训练时间并没有减少,反而需要更多的显存来保存掩码」(L325-327);优化过程 epoch 与浓缩过程相同(各 M/2),每阶段 M/(2(C−1))(L329-334);索引层 index layer:推理时把稀疏模式整理成组(例 (3,7,9,12),(1,5,10,12),(5,6,8,11)→重排后用标准分组卷积;index_select)(L348-356)。架构两点:增长率指数级 k=2^(i−1)·k0(「越接近输出层的地方保留的特征图越多」,依据:热力图显示越接近输出层的特征贡献越大);全密集连接(块间捷径+平均池化实现不同尺寸拼接)(L359-374)。小结:「CondenseNet 最大的创新点是将模型剪枝和分组卷积进行了有机的结合」;group lasso 是关键粘合;「理论上要比 ShuffleNet 拥有更好的效果」(L376-387)。
  • L388-410 第 3 章 NAS 篇首总览:PolyNet(多项式,人工搜索);NAS(Quoc V. Le,RL 生成完整网络/单元);NASNet(学单元,可迁移 ImageNet);PNASNet(更小搜索空间+启发式/SMBO);AmoebaNet(遗传算法+年龄进化 AE);MnasNet(时延约束);MobileNet v3(全局+局部两步走+人工调整);EfficientNet v1(分辨率/深度/宽度三方向,基线+缩放);v2(训练速度入指标,递增式 AutoML)。「三个主流的方向:提升精度、轻量化和基于强化学习的模型架构搜索」(L408-410)。
  • L412-537 3.1 PolyNet:「将网络结构建模为多项式」;深度/宽度收益趋平→结构多样性;加宽不经济:每加 k 个参数,「计算复杂度和占用的显存都要增加 k²」(L434-436)。残差块=(I+F)·x;F=Inception→Inception-ResNet。poly-2: I+F+F²(参数共享,等价 I+(I+F)F,计算量少 1/3);mpoly-2: I+F+GF(参数不共享,表达强参数加倍);2-way: I+F+G;三次幂:poly-3/mpoly-3(I+F+GF+HGF)/3-way(I+F+G+H)(L459-476)。DenseNet 本质=多项式 I⊕C⊕C²⊕…⊕Cⁿ(⊕为拼接)(L477-480)。对照实验:18 个结构(Inception-ResNet A/B/C 三阶段分别替换);结论:阶段 B 替换最有效,B 中 mpoly-3 最有效;A/C 用 3-way;3 路优于 2 路;混合模型 4 组 3-way→mpoly-3→poly-3 最优(L483-500)。Very Deep PolyNet:A=10 个 2-way;B=10 poly-3+10 2-way;C=5 poly-3+5 2-way(L507-510)。初始化:插入初始化+交叉插入(L511-516);随机路径(受 Dropout 启发,丢多项式项,「相当于数据扩充」);加权路径 β=0.3(2-way: I+βF+βG)(L518-522)。ImageNet top-5 约 4.25%(L533-534)。小结:「模型并没有创新性」;「最大的贡献在于开辟了使用数学表达式的形式对模型架构进行搜索的道路」(L529-537)。
  • L538-583 3.2 NAS:「NAS 学习的是网络的超参数而不是参数。超参数的一个特点是不能通过反向传播来优化,因此需要借助强化学习的采样策略来实现超参数的优化」(L552-555)。控制器=RNN(LSTM),按段生成超参数(卷积核数量/高/宽/步长等);采样网络 A→训练→验证集精度 R 为奖励→REINFORCE 更新 θc(L556-583)。CIFAR-10 上逼近 DenseNet;Penn Treebank 上 NAS-RNN 优于 LSTM。

07-p121-140.txt(3.2 NAS 续、3.3 NASNet、3.4 PNASNet、3.5 AmoebaNet、3.6 MnasNet 起)

  • L5-13:REINFORCE 梯度无偏估计但方差大→基线 b=以前架构精度的指数移动平均(L13)。
  • L14-39 跳跃连接:第 N 层加 N−1 个锚点,sigmoid 判是否有捷径(式3.6);特殊情形:无入边=输入层、无出边=输出层(拼接作分类输入)、尺寸不齐补 0 边距。
  • L36-50:NAS-CNN 生成的是密集连接网络;与 DenseNet 相通三点(密集连接/特征图少/拼接)。搜索空间:核高宽 {1,3,5,7},通道 {24,36,48,64},步长 1 或 {1,2,3},BN+跳连;控制器 35 隐节点 LSTM。
  • L52-93 NAS-RNN:用树结构描述 LSTM 门控(输入 xt,ht−1,ct−1 为根);base2(2叶+1中间)示例:控制器预测每块(操作+激活函数)+添加单元(用 ct−1)+指示单元(哪些树算 ct);逐节点走查(L78-88):a0=tanh(W1xt+W2ht−1);a1=ReLU[(W3xt)⊙(W4ht−1)];a0new=ReLU(a0+ct−1);a2=sigmoid(a0new⊙a1)=ht;ct=(W3xt)⊙(W4ht−1)。实际用 base8;Penn Treebank;操作范围 [add,elem_mult],激活 [identity,tanh,sigmoid,relu]。
  • L96-105 小结:NAS=AutoML 基石论文;共同点=用 RNN 控制器描述网络结构+验证集表现作奖励训练控制器。
  • L107-231 3.3 NASNet:「仅仅在 CIFAR-10 上学习一个网络就需要 500 块 GPU 运行 28 天」(L113-114);「如果不能在 ImageNet 上取得令人信服的结果,这样的网络结构很难令人信服」(L115-116)。学单元:普通单元(尺寸不变)+缩减单元(步长2默认);每单元 B=5 个块,每块=并行两卷积(选输入特征图×2+操作×2+合并);5 步流程(L144-150)。13 种操作(直接映射/1×1/3×3/深度可分离/空洞/平均池化/最大池化/1×3+3×1/5×5…/7×7…);合并=单位加|拼接;RNN 输出 2×5×B;单层 LSTM 100 隐节点。PPO 优化(均匀分布略差);计划 DropPath(丢弃概率随训练线性增加,「训练的次数越多,模型越容易过拟合」);固定超参:ReLU(ELU 略差)、有效卷积、缩减单元通道×2、深度可分离卷积不加 BN/ReLU、执行两次、ReLU→卷积→BN 顺序(L200-215)。速度:NASNet 比 NAS 快 7 倍(L225);「NASNet 的网络单元本质上是一个更复杂的 Inception」(L226)。
  • L232-370 3.4 PNASNet:刘晨曦(Google 实习);「训练时间降为 NASNet 的 1/8 并且在 ImageNet 上取得了比 NASNet 更优的效果」(L242-243)。三策略:更小搜索空间;SMBO(启发式,从简单到复杂递进);代理函数(省训练)。NASNet 搜索空间≈2.0×10³⁴;PNASNet:只有普通单元(B×5 输出);删 5 个从未用过的操作留 8 个;拼接也从未用过→删;超参 (I1,I2,O1,O2);空间≈5.6×10¹⁴(去对称后 10¹² vs NASNet 10²⁸)(L256-281)。SMBO:b=1 空间 256 全枚举训练→(S1,A1) 拟合代理 π;b≥2 扩展→π 预测代理精度→选 top-K(K 远小于空间)→真训练→更新 π;算法1(L305-321)。代理函数三特征:处理变长数据/正相关/样本有效;实现=LSTM(4×b 输入,独热+共享嵌入层,sigmoid 全连接,L1 损失);对照 MLP(均值编码);结论:同块数 LSTM 优,预测多一块 MLP 优(「原因可能是 LSTM 过拟合了」L348-349)。5 模型集成(样本少)。结论:CIFAR-10 与 ImageNet 网络结构强相关(L357-360)。
  • L372-539 3.5 AmoebaNet:外星人故事(资源只够养 P 个;随机抽 S 个竞争选最优繁殖;流放岁数最大的)。AE 年龄进化:population=队列(先进先出=固定生存周期),history 存全部;随机初始化 P 个(P∈{20,64,100},100 最优);循环到 C=20000;随机选 S 个(S∈{2,16,20,25,50},25 最优)→精度最高者为 parent→MUTATE 变异(操作变异|隐层状态变异,每次一次);child 入队;「remove dead from left of population // 最老的」=最核心;NAE(移除最差)的问题:「population 中留下的样本很有可能来自同一个祖先……多样性非常差,非常容易出现局部最优值问题。这种情况在遗传学中也有一个名字:近亲繁殖」(L494-500)。搜索空间=NASNet 同款(普通+缩减单元,普通可堆叠×N,跳连=输入来自上一层+上上层);骨干仅 2 个人工超参 F(核数,缩减后×2)和 N。结果:参数与 NASNet/PNASNet 同量级时精度非常接近;「AE 的收敛速度是要明显快于基于强化学习的收敛速度的」(L515-516);AmoebaNet-A 参数 4.69×10⁸ 时 ImageNet 最优,「不知道是得益于 AmoebaNet 的网络结构还是其巨大的参数数量」(L517-519);随机搜索 RS 对照。「AE 可以看作一个带有正则项的进化策略」(L533-534);「它只有 P、C、S 这 3 个参数」(L536)。
  • L541-616 3.6 MnasNet:准确率作唯一指标→「分支复杂、并行性很差而且速度很慢」;FLOPS 不能真实反映移动端推理速度→同时优化准确率 ACC(m) 与真实延迟 LAT(m)(Pixel 手机实测)。三点框架:优化目标/搜索空间(MobileNet v2 的)/优化策略。数据:「MobileNet 和 NASNet 的 FLOPS 非常接近(分别为 5.75×10⁸ 和 5.64×10⁸),但是它们的速度差异非常大(分别为 113ms 和 183ms)」(L576-578)。帕累托最优解定义(L579-582)。硬约束 α=0,β=−1;经验规律「推理速度慢 25%,准确率大约提升 5%」(L596,L596-598 原文比例被图片化,写「慢 25% 提 5%」需谨慎——公式图片化;可写「速度换准确率有一条经验兑换率」,β≈−0.07)→软约束 α=β=−0.07。硬约束搜出的模型更快但准更低;软约束时间范围更广且更准(L612-614)。

08-p141-160.txt(3.6 MnasNet 续、3.7 MobileNet v3、3.8 EfficientNet v1、3.9 EfficientNet v2、3.10 RegNet 起)

  • L1-39 MnasNet 搜索空间:块级搜索的问题——「不同的网络层有着不同的功能……很难保证这个网络块作用到全网络」;全图搜索空间是块级的指数倍。分解层次搜索空间:网络分块,块内每层单独搜索;层搜索单元=MobileNet v2 拆出的操作(MBConv 等);核 {3×3,5×5};SE(SERatio 0/0.25);跳跃选项;层数 {0,+1,−1} 相对 v2;通道 {0.75,1.0,1.25} 相对 v2。「得到的模型也和 MobileNet v2 非常相似……人工设计的模型其实是非常优秀的」(L31-32);搜到了 5×5 卷积且平衡好。
  • L41-63 优化策略:同 NASNet(RNN 控制器+PPO,奖励=ACC×[LAT/TAR]^w)。小结质疑:「只使用了一种品牌的手机,是否其网络的设计过于拟合了这个型号的手机的性能?」(L56-58);「人工设计和强化学习互相配合应该是一个更好的发展方向」(L59-61)。
  • L65-291 3.7 MobileNet v3:四贡献:平台相关 NAS 初始结构;NetAdapt 局部优化;重设计耗时结构;h-swish。两步:块级别(全局,种子模型)+层级别(局部微调)。参考结构:MobileNet v1 深度可分离、v2 线性瓶颈逆残差、MnasNet(SE 放残差模块内部,vs SENet 放残差之后,L95-98)。平台相关:w=−0.15(MnasNet −0.07),「小模型的精度会随着延时的变大先增加……补偿不同延时下更大的精度变化」(L111-114)。NetAdapt:优化 ΔAccuracy/ΔLAT 比值;候选=改扩展层大小|改瓶颈层大小;资源衰减计划 ΔRi 类似学习率衰减(算法3 L136-156)。人工设计:①输出模块:全局平均池化提前(7×7 上卷积→1×1 上做),「速度大幅提升,而且没有降低准确率」;②首层通道 32→16(「卷积核学习好之后含有大量的彼此的镜像」)。激活函数史:sigmoid/tanh 饱和→ReLU 两分支;sigmoid 系 swish=x·sigmoid(βx),β=1 即 swish-1=SiLU(最早 GELU 提出);ReLU 系 ReLU6→式(3.13) 变换为 (0,0.5) 中心值域[0,1];h-swish=式(3.14)(swish 的 sigmoid 换成该式),「运算速度要明显快于 swish 和 sigmoid」;前半大图用 ReLU,后半用 h-swish(速度精度平衡)。SE 块通道 1/16→1/4。Large/Small 结构表(L204-269)。LR-ASPP=R-ASPP(ASPP 简化,1×1+全局平均池化)更快版+大核大步长 GAP+空洞卷积密集特征+低层级特征。小结:「一篇创新点很多但内容有些零散的论文」(L290-291)。
  • L293-415 3.8 EfficientNet v1:三参数(深度/宽度/分辨率)互相关联→统一缩放。单维缩放收益瓶颈:宽度(卷积核冗余)、深度(梯度消失/退化,收益平缓)、分辨率(「如果卷积核不够的话,这些纹理信息也是无法捕获的」)。复合缩放 compound scaling:depth=α^φ, width=β^φ, res=γ^φ,约束 α·β²·γ²≈2(FLOPS 控制到 2^φ);网格搜索得 α=1.2、β=1.1、γ=1.15(L388-389)。「提升网络的深度是最有效的策略,所以将其他两个维度的缩放进行了平方操作」(L371-372)。NAS 参考 MnasNet 搜索空间但优化目标用 FLOPS(式3.19)→EfficientNet-B0(核心 MBConv+SE)。B0→B7 两步:φ=1 网格搜索 αβγ;固定 αβγ 变 φ。B7 vs 同性能 GPipe:「参数数量减小到 1/8.4,速度增加到 6.1 倍」(L395-401)。通道数取 8 的整数倍(「主流的显卡的底层设计都是采用二分法对通道进行分配计算的」)。复合缩放应用到 MobileNet/ResNet 均提升。「调参侠」最常调的 3 个超参数(L411);创新性略显不足但准确率很高。
  • L417-573 3.9 EfficientNet v2:背景:Swin 夺 top-1 86.4%,CNN 阵营 AutoML 又夺回 87.3%(L424-426)。训练速度三因素:①大图训练慢(显存固定→batch 小);②浅层深度可分离卷积比普通卷积慢(「现在的一些加速设备……在普通卷积上拥有更好的优化,但是对深度可分离卷积的优化有所欠缺」);③同尺度缩放各阶段非最优→非均匀缩放。MBConv→Fused-MBConv(深度可分离换普通卷积)实验(表3.3):不融合 19.3M 参数 82.8% TPU262;融合1-3 20.0M 83.1% TPU362 V100 216;融合1-5 43.4M 83.1% 327/223;全融合1-7 132M 81.7% 254/206;「全融合或者全不融合都不是最好的选择」(L453)。准确率:大图更易过拟合(细节信息多,训练/测试分布不一致)→大图配更强正则;RandAug 实验:128/192/300 图 × 正则 5/10/15,300 图正则 15 最优 83.2%(表3.4)。渐进学习:早期小图+弱正则→逐渐增大分辨率/尺寸/强正则;正则三类:Dropout、随机扩充(RandAug,尺度 m 越大变化越大)、Mixup(两图 λ 融合)。搜索空间小:MBConv|Fused-MBConv;核 3×3|5×5;每阶段层数;扩张因子 {1,4,6};是否 SE;奖励 r=A·S^w·P^v,w=−0.07,v=−0.05;基于 B4 网格搜索。EfficientNet v2-S 特点:MBConv+Fused 混合;更小扩张因子;全部 3×3 但层数更多;前 3 阶段无 SE。「渐进学习的过程是过拟合难度从易到难的迭代式开发」(L569-570);「从单一的准确率的优化向着定制化的场景的优化发展」(L571-572)。
  • L575-670 3.10 RegNet:NAS 搜单个实例→RegNet 搜「设计空间」(design space)。三概念:模型族(相同高级结构+设计原则的一组架构)/设计空间(模型族的参数化+取值范围)/模型分布(随机采样+准确率分布;数据生成)。点估计 vs 分布估计:「仅仅通过最优实例得到的结论是有偏的」;例:同设计空间采 100 vs 1000 样本,5000 次随机实验 90% 情况 B 族错误率高于 M 族(点估计误导),但两族 EDF 曲线基本一致(L639-652)。EDF 经验分布函数(式3.20);指示函数 1(式3.21)。KS-检验 D=sup|F1(x)−F2(x)|(式3.22);实验 D=0.079,p-value=0.6→同一分布。复杂度影响 EDF:ResNeXt-B 参数约是 ResNeXt-A 的 4.6 倍→EDF 不同;错误率与参数量成反比,且「随着参数数量的不断提升,模型的错误率还有继续下降的空间」(L663-668)。

09-p161-180.txt(3.10 RegNet 末、第二篇篇首、4.1 LSTM/GRU、4.2 注意力起)

  • L1-56 RegNet 设计空间评估续:表3.6(普通网络/残差 1 259 712 参数;ResNeXt-A 11.4M/ResNeXt-B 52.7M,深度1165,宽度差 40 倍);标准化比较(按复杂度分箱加权 wi);随机搜索;最小样本大小 n>100 EDF 基本不变,100~1000 合理(L37-39);EDF 读法:横轴错误率,纵轴模型占比;「残差网络设计空间采样的模型中,约有 80% 的模型错误率小于 8%,而基于普通 CNN 的模型中,错误率小于 8% 的比例仅为 20%」(L46-47);「曲线越靠左,表明设计空间中低错误率的样本越多,则设计空间的质量越高」(L51-52);曲线下面积量化(式3.25)。
  • L58-136 RegNet 递进式设计:核心「并不是设计一个网络模型,而是设计一个网络的集合」;A⊆B⊆C 但 EDF 效果 C<B<A;AnyNetX 初始空间:stem/body/head 三模块;body 4 块×4 超参(层数 d≤16、通道 8k、瓶颈率 {1,2,4}、组数 2^k≤32);PA=(16×128×3×6)⁴≈1.8×10¹⁸。四步法:采样 n 模型训练→画 EDF→可视化指标→人工分析优化;500 模型×10 epoch。准则:简化结构/提高可解释性/提高质量/保持多样性。B:固定瓶颈率(6.8×10¹⁶);C:共享组数 g(3.2×10¹⁴);D:通道数递增(共享/递减都降低质量);E:层数递增(其他方案严重降低质量)。参数从 10¹⁸ 减到 E。
  • L137-211 RegNetX:4 条设计准则(瓶颈率共享/组数共享/通道递增/层数递增);u_j=w0+wa·j 拟合(纵轴 2ⁿ 时近直线);量化:wm、s_j、四舍五入、块内通道取整(式3.27);6 参数 d,w0,wa,wm,b,g(d<64,w0,wa<256,1.5≤wm≤3);样本 3.0×10⁸;网格搜索。长时间训练(25 epoch,100 模型)发现:每块 20 层较好(「这与我们的『越深的网络效果越好』的认识是相违的」);瓶颈率 1 最好(「不使用沙漏型或者纺锤形的网络结构」);wm≈2.5 最好。推理时间与「网络激活」(所有卷积层输出向量尺度)关系比 FLOPS 更密切(表3.7);进一步优化 b=1,d≤40,wm>2;224×224 最好;+SE→RegNetY,论文最好模型。RegNetY-32GF vs EfficientNet-B5:79.9%>78.5%,113ms<504ms(L218-219)。
  • L220-231 RegNet 三问题:①初始空间只训 10 epoch「未完全收敛的模型能否充分代表设计空间的真正质量值得商榷」;②「过于依赖人工经验……只固定一个变量和忽略了变量之间的依赖性的方式是否合理值得讨论」;③「结果不具备足够的说服力」,EfficientNet-B7 84.3% vs RegNetY-32GF 79.9%(迭代数不同,脚注:B5 对比是控制 100 epoch vs 350 epoch)。
  • L233-254 第二篇篇首:图灵引言「一个有纸、笔、橡皮擦并且坚持严格的行为准则的人,实质上就是一台通用图灵机」。NLP 难点:「人类语言的歧义性、可变性以及病态性」;早期统计机器学习(贝叶斯);深度学习前以有监督(SVM/逻辑回归)为主导;2014 前后转型,RNN 减轻马尔可夫假设依赖;注意力最早用于机器翻译(为编码器每个特征学权值);2017 Transformer 完全抛弃循环结构;之后两方向:优化 Transformer(Transformer-XL、Performer)+预训练语言模型(BERT)。
  • L256-310 4.1 RNN:ht=f(ht−1,xt) vs DNN;ht−1 两个作用(算当前预测+算下个状态);长期依赖例子:「The cat, which already ate a bunch of food, was full.」单复数取决于 cat/cats 而非邻近的 food;「随着数据时间片的增加,RNN 更关注的可能是距离其更近的 food,而非若干个时间片之前的 cat/cats」(L291-293)。梯度消失/爆炸:RNN 权值矩阵循环相乘,「相同函数的多次组合会导致极端的非线性行为」;梯度截断(超阈值 θ 降到 θ,方向仍是损失减小方向);梯度消失不能用阈值式方法:「如果我们刻意提高小梯度的值将会使模型失去解决长期依赖问题的能力」(L307-310)。
  • L312-359 LSTM:1997 Hochreiter & Schmidhuber;门机制控制「特征的流通和损失」;单元状态 cell state=传送带;遗忘门 ft(sigmoid,[0,1] 向量;「训练好的 LSTM……门的值绝大多数都非常接近 0 或者 1」);输入门 it+单元状态更新值(tanh);输出门 ot;GRU 论文指出 bo 均值初始化为 1 可使 LSTM 接近 GRU 效果。
  • L363-385 GRU:LSTM 简化版,两门:重置门 rj(控制 ht−1 对更新值的影响,r=0 时只受 xt)、更新门 zj(z=1 时 ht=ht−1,「相当于残差网络的捷径」);两门可与全网参数共同训练(SGD)。
  • L387-400 其他 LSTM(Jozefowicz 等 100→10000 变异模型,4 场景):GRU、LSTM 最好;GRU 除语言模型外均超 LSTM;LSTM 输出门偏置均值初始化 1 时接近 GRU;门的重要性:遗忘门>输入门>输出门。
  • L402-523 4.2 注意力:编码器-解码器把整句压成一个向量 c;长句翻译不理想:「t′ 时刻的输出可能更关心输入序列的某些部分」;Bahdanau 率先提出,「模型可以同时学习原句子和目标句子的对齐关系和翻译关系」;编码=双向 RNN(GRU),解码=单向 GRU+注意力;ci=Σ α·ht 加权和,eit=对齐模型(si−1 与 ht,用 tanh)。seq2seq(Sutskever):编码器最后一节点→长 64 序列「遗忘大量前面时间片的特征」;注意力层=「介于编码器和解码器之间的一个接口」;「注意力模型学习了编码器和解码器的对齐方式,因此也被叫作对齐模型」;Luong:全局注意力 vs 局部注意力。六步计算:①生成编码节点;②为每个编码器隐层状态算得分(点乘):解码器状态 [10,5,10],编码器 [0,1,1]→15,[5,0,1]→60,[1,1,0]→15,[0,5,1]→35(具体数!好例子,L516-523)。

10-p181-200.txt(4.2 注意力续/4.3 Transformer/4.4 Transformer-XL 起)

  • L3-44 注意力六步(带具体数):得分 15/60/15/35;softmax 后 0/1/0/0(「在实际场景中这个值往往是介于 0 和 1 之间的一个浮点数」L4-5);对齐 [0,0,0]/[5,0,1]/…;内容向量=[5,0,1];「每个时间片的注意力的结果会随着解码器隐层节点状态的改变而更改」(L41-42)。
  • L46-76 得分计算方式(表4.1):基于内容相似度 cos(神经图灵机)、相加(Bahdanau)、基于位置、通用、点乘、缩放点乘(Vaswani)。
  • L78-108 三个经典模型:Bahdanau(双向GRU+单向GRU,相加/拼接,BLEU 26.75);Luong(两层 LSTM,各得分方式,拼接送前馈,BLEU 25.9);GNMT(8层LSTM,第一层双向,残差连接,英法 BLEU 38.95、英德 24.17)。
  • L116-150 4.3 Transformer:Bert 在 11 项任务大幅提升(「2018 年深度学习领域最振奋人心的消息」);「Transformer 由且仅由自注意力模块和前馈神经网络组成」;编码器解码器各 6 层。RNN 顺序计算两问题:①「时间片 t 的计算依赖 t−1 时刻的计算结果,这样限制了模型的并行能力」;②顺序计算信息丢失,LSTM 对特别长期依赖无能为力。Transformer:「将序列中任意两个位置之间的距离缩小为一个常量」;并行性符合 GPU。论文定义引原文。「遗憾的是,作者的论文比较难懂……尤其是论文中的 Q、V、K 究竟代表什么,作者并没有说明。本书借鉴了 Jay Alammer 在其博客中对 Transformer 的解读」(L144-146)。
  • L153-281 详解:编码器=自注意力+FFNN(两层,ReLU+线性,式4.14);解码器=自注意力+编码器-解码器注意力+FFNN;自注意力=「当前翻译和已经翻译的前文之间的关系」,编码器-解码器注意力=「当前翻译和编码的特征向量之间的关系」。输入:Word2vec 词嵌入 dmodel=512。自注意力例子:「The animal did not cross the street because it was too tired」判断 it 指代。Q/K/V 各 64 维,W 尺寸 512×64。七步:嵌入→qkv→score=q·k→除 √dk(「为了梯度的稳定」)→softmax→点乘 v→相加。QKV 概念取自信息检索系统(电商搜索红色羽绒服例子,L249-252):「点乘是计算两个矩阵相似度的方法之一……权值就是查询与键的相似度」。多头注意力=h 个自注意力集成,h=8,拼列+全连接;掩码多头注意力(解码第 k 个只能看到 ≤k−1)。损失层:softmax 全连接+CTC 等。
  • L283-324 位置嵌入:「无论句子的结构被怎么打乱,Transformer 都会得到类似的结果。换句话说,Transformer 只是一个功能更强大的词袋模型而已」(L285-287);位置编码:长度 dmodel,与词向量单位加;sin/cos 编码(式4.15);sin(α+β) 展开式→「位置 k+p 的位置向量可以表示为位置 k 的特征向量的线性变化」,利于捕捉相对位置。小结优点:①「没有逃脱传统深度学习的『套路』,只是一个全连接(或者是一维卷积)加注意力的结合体」;②「带来性能提升的关键是它使任意两个单词的距离是 1」;④并行性符合 GPU。缺点:①「粗暴地抛弃 RNN 和 CNN……使模型丧失了捕捉局部特征的能力」;②「位置嵌入加入特征向量只是一个权宜之计,并没有改变 Transformer 结构上的固有缺陷」。
  • L326-343 4.4 Transformer-XL:LSTM 门机制把长期依赖提升到「200 个左右」;XL=extra long;两部分:片段递归+相对位置编码;三提升:长依赖、上下文碎片、预测速度准确率。
  • L345-411 Transformer 缺点详:①输入固定长 L=512,分段输入,「数据并不会在段与段之间流通,因此模型能够捕获的长期依赖的上限便是段的长度」→上下文碎片问题(L356-358);②测试自回归:每次整段过网络,右移一格再来,「预测阶段的计算量是非常大的」;③绝对位置编码:每个片段的 U1:L 相同,「我们完全无法确认它们属于哪个片段或者说它们在分段之前的输入数据中的相对位置」;QTK 展开四项(式4.22)。
  • L413-475 RPE:RNN 结构天然编码相对位置(「I think therefore I am」两个 I 接收不同);Transformer 无位置编码时两个 I 输入完全一致;RPE 把相对位置编码加入自注意力内部;长 5 序列 9 个相对位置(表4.2:−4..+4);固定常数 k,「需要学习的相对位置编码的序列长度为 2k+1」,k≥2 效果接近;两个可学习向量(a 与 r);加法使计算效率更高;超范围截断。
  • L477-501 片段递归:上个片段隐层状态缓存,计算当前片段时重用(SG(·) 停止求梯度,不参与反向传播);赋予建模长依赖能力;推理「以片段为单位进行推理,这种简化带来的速度提升是成百上千倍的」;「Transformer-XL 是一个典型的用空间换时间的方案……显存是不会成为它的瓶颈的」;显存够大可复用更多片段。

11-p201-220.txt(4.4 末、5 篇首、5.1 RNN LM、5.2 ELMo、5.3 GPT-1/2/3、5.4 BERT 起)

  • L5-6:「Transformer-XL 是一个和残差网络思想非常接近的模型,它相当于在两个片段之间添加了一条捷径。而复用更多片段的结构则是采用 DenseNet 思想的模型」。
  • L7-29 XL 相对位置编码:三个变化——①Wk 拆成 Wk,E 和 Wk,R(内容与位置不共享权值);②绝对 Uj→相对 Ri−j(sinusoid 不需学习);③引入两个新可学习参数替换查询向量(「无论查询位置如何,对不同词的注意力偏差都保持一致」)。四项含义:(a)内容寻址 (b)内容相对位置偏差 (c)全局内容偏置 (d)全局位置偏置。
  • L31-40 小结:「Transformer-XL 提速了 300 到 1800 倍」;递归使可建模长依赖达 O(NL);XLNet 以 XL 为基础。
  • L41-57 第 5 章预训练篇首:ELMo(双向 LSTM)→BERT(2018,11 方向)→魔改(MT-DNN/RoBERTa/XLM/ALBERT/XLNet);GPT 系列海量数据大模型,训练成本高;BERT 后多数用 Transformer 框架,性能提升一因=「设计了更多、更合理的无监督任务」;知识图谱结合:ERNIE-T(清华)/ERNIE-B、ERNIE 2.0(百度)。
  • L58-139 5.1 RNN 语言模型:上下文关系三类:传统 LM(用前文预测下一个词)/MLM/NSP;「MLM 并不是传统意义上的无监督任务,因为它有明确的 (x,y) 数据-标签对……这种任务通常被叫作自监督任务」(L70-72);「2018 年被称作『NLP 的 ImageNet 时刻』」。n-gram(常用 bigram/trigram?原文 n 值大→稀疏,用 n−1 代替——此段 L76-78 有 OCR 错乱「backoff」=回退);n-gram 长依赖能力有限→缓存/基于类模型提升有限。Bengio 前馈 NN LM=「使用神经网络编码的 n-gram 模型」;Mikolov RNN LM。RNN LM 细节:独热编码词,词量 3 万20 万,隐层 30500,t=0 用 0.1 初始化;训练数据 0t−1 输入、t 标签;交叉熵+SGD;训练细节:高斯初始化(均值0方差0.1);学习率 0.1,验证集不提升则减半,1020 epoch 收敛;正则不很有帮助;「动态模型」:测试数据参与模型更新(如反复出现的人名),「动态模型可以大大降低模型的困惑度」;稀有类:低频词合并,概率均等。
  • L140-252 5.2 ELMo:Word2vec/GloVe 两问题:①「每个句子的特征向量只与其自身有关系,而不能捕获上下文的相关性」②「每个单词的特征向量是唯一的,因此不能解决单词多义性的问题」。ELMo=Embeddings from Language Model;双向 LSTM 语言模型,最大化正反两方向似然;每个单词=2(L+1) 个向量结合(前向 L+1? 原文:前向 L 输出+后向 L 输出+词嵌入,式5.9);聚合:任务相关的加权(「浅层的特征具有更强的句法表征能力,而越深的层则更具有语义表征能力」),stask 相当于注意力,γtask 缩放;不同任务权值差异大;有时加 LN 有帮助。下游结合 4 方式(拼词嵌入/拼隐层/作用输入层/作用输出层)+Dropout/L2+按任务微调 ELMo。三优点:一词多义(嵌入随上下文变)、多层表征(自适应加权)、灵活性(输入/隐层/输出层都可加)。
  • L254-437 5.3 GPT:表5.1:GPT 2018-06 1.17亿参数 约5GB;GPT-2 2019-02 15亿 约40GB;GPT-3 2020-05 1750亿 约45TB。「GPT 也证明了,通过不断提升模型容量和语料规模,模型的能力是可以不断提升的」。
  • GPT-1:无监督预训练+有监督微调;两缺点:标注数据难获得、领域专家非通用;「将无监督学习作用于有监督模型的预训练目标,叫作通用预训练」。4 任务(自然语言推理/问答常识推理/语义相似度/分类);BooksCorpus(理由:长上下文+下游见不到);12 层 Transformer 解码器、12 头、768 词向量、BBPE 4万词对、位置编码要学习、GELU、dropout 0.1、batch 64、lr 2.5e−4、序列 512、100 epoch;微调只训输出层 Wy 和分隔符嵌入,3 epoch lr 6.25e−5(「表明模型在自监督部分学到了大量有用的特征」);λ=0.5 混合 L1( LM 损失)+L2(分类损失);性能:12 任务 9 个超 SOTA;「GPT-1 只是一个简单的领域专家,而非通用的语言学家」(L371-372)。
  • GPT-2:「并没有对 GPT-1 的网络进行过多的结构上的创新与设计,只是使用了更多的网络参数和更大的数据集」;核心思想:「任何有监督任务都是语言模型的子集,当模型的容量非常大且数据量足够丰富时,仅仅靠训练语言模型的学习便可以完成其他有监督任务」(L392-393);Micheal Jordan 例子(L389-391);decaNLP/MQAN;WebText=Reddit 高赞 800 万篇约 40GB,移除 Wikipedia;BBPE 50257;滑窗 1024;batch 512;LN 移到块输入+每自注意力后加 LN;残差初始化缩放 1/√N;4 模型(1.17亿/3.45亿/7.62亿/15.42亿,层12/24/36/48,词向量768/1024/1280/1600);性能:8 个 LM 任务 7 个零样本最优;Children's Book Test 超 7%;LAMBADA 困惑度 99.8→8.6;阅读理解超基线;法译英超自监督差于有监督;文本总结接近有监督。「GPT-2 表明随着模型容量和数据量的增大,其潜能还有进一步开发的空间」。
  • GPT-3:「1750 亿的参数数量、45TB 的训练数据以及高达 1200 万美元的训练费用」;情境学习 in-context learning 与元学习 meta-learning:MAML(任务打包成批次,支持集/质询集;内循环=任务适应,外循环=元初始化更新);「GPT-3 中介绍的情境学习是元学习的内循环,而基于语言模型的 SGD 则是外循环」(L482-484)。少样本(10~100 示例)/一次(1 个)/零样本(仅任务描述);「3 种学习方式的效果都会随着模型容量的上升而提升,且少样本学习>一次学习>零样本学习」;GPT-3 没尝试微调。数据集 5 个(表5.3):Common Crawl filtered 4100B tokens 60%占比 0.44 epoch;WebText2 190B 22% 2.9;Books1 120B 8% 1.9;Books2 550B 8% 0.43;Wikipedia 30B 3% 3.4。模型:96 层、96 头、词向量 12888、上下文 2048、交替密集+局部带状稀疏注意力。小结:「可以说并没有创新性的模型架构设计。在 Microsoft 的资金支持下,这更像是一场『赤裸裸的炫富』:1750 亿的参数,31 个分工明确的作者,超强算力的计算机(285 000 个 CPU、10 000 个 GPU),1200 万美元的训练费用,45TB 的训练数据(Wikipedia 的全部数据只相当于其中的 0.6%)」(L527-530);「个人花费巨额配置的单卡机器也就只能做做微调或者打打游戏,甚至在训练 GPT-3 时出现了一个 bug,OpenAI 自己也没有资金重新训练了」(L531-532)。缺点三条:无意义命题拟合答案;40TB 数据敏感内容(种族/性别/宗教);长文连贯性(下文重复上文)。「AI『巨头』对算力要求高的算法的技术垄断」担心(L548-550)。
  • L552-653 5.4 BERT:「作为 Word2vec、ELMo 以及 GPT-1 的替代者……可以说是近年来自残差网络后最具有突破性的一项技术了」;三特点:Transformer 双向、MLM+NSP 多任务、开源。BERTBASE L=12 H=768 A=12 1.1×10⁸;BERTLARGE L=24 H=1024 A=16 3.4×10⁸。「只有 BERT 表征会基于所有层中的左右两侧语境」。输入=3 嵌入单位和(512 长):词级别 WordPiece 嵌入(playing→play+ing)、分割嵌入(句对区分,0/1)、位置嵌入;[CLS] 分类、[SEP] 分句。MLM:核心取自 Wilson Taylor 1953(完形填空);15% 词被选;其中 80% [mask]、10% 随机词、10% 保留(my dog is hairy 例);理由:①微调时没见过的 [mask] ②保持对每个标志的分布式表征;负面影响 15%×10%=1.5% 可忽略;「每次只预测 15% 的单词,因此模型收敛得比较慢」。NSP:IsNext/NotNext,50%/50%,存于 [CLS];微调:各任务加输出层。

12-p221-240.txt(5.4 BERT 微调/5.5 魔改/5.6 XLNet/5.7 ERNIE-T/5.8 ERNIE-B 起)

  • L3-41 BERT 微调 4 类任务:句子对分类(MNLI 三类关系/QQP/QNLI/STS-B 5级/MRPC/RTE/SWAG 4选1);单句分类(SST-2 情感/CoLA 可接受性);GLUE 用 [CLS]→全连接;问答 SQuAD v1.1(全连接输出=标志个数,softmax);命名实体识别 CoNLL-2003(person/org/location/misc/other,每时间片输出)。
  • L42-53 小结:BERT 火的四个原因(Transformer 带动 Word2vec 瓶颈期/11 任务/开源/迁移学习大胜);「BERTLARGE 需要在 64 块 TPU 芯片上训练 4 天,而一块 TPU 的速度约是目前主流 GPU 的 7~8 倍」;Google 开源免自己训练。
  • L55-108 5.5 RoBERTa:「BERT 的原始论文中的训练超参数其实并不能充分发挥 BERT 的性能……可以说 RoBERTa 是 BERT 的成熟版」;六改进:动态掩码(预处理→训练时随机,「增加了数据的多样性」;和 XLNet 排列语言模型非常像)、移除 NSP(实验:不用 NSP 略优;doc sentence 优于 full sentence)、字节级大字典(BERT 词表 3 万→RoBERTa 5 万 GPT-2 式 BPE,无 unknown;「对准确率的影响不是很大」)、批次 256→8000、步数 50 万、数据 16GB→160GB;Adam β2 0.999→0.98,峰值 lr 1e−4→4e−4,预热(「在训练初始阶段使用比较小的学习率来启动,然后切换到大的学习率后进行衰减」)。
  • L110-133 ALBERT:「A Lite BERT」;BERT 慢两因:①内存限制和通信开销(BERTLARGE 3.4 亿参数,「这并不是所有个人和企业都有实力完成的」)②模型退化(「将隐层节点的个数从 1024 个增加到 2048 个,模型的准确率反而下降了」——又是退化!)。三改进:嵌入参数分解(V×H→V×E+E×H,BERT 嵌入矩阵参数达千万级)、跨层参数共享(共享整个层)、句子顺序预测 SOP(正=连续两句,负=交换顺序;「很多算法都证明了 BERT 的 NSP 并不是一个有效的预训练任务」)。
  • L135-200 MT-DNN:BERT 架构+下游多任务学习;「特征提取部分共享权值,在任务相关部分参数独立」;4 类 NLU 任务:单句分类 SCT/文本相似度 STS/句子对关系分类 PTC/相关性排序 RRT;分类交叉熵,回归最小均方误差。SAN(stochastic answer network)多步推理:工作内存 M_G、M_H,s0=M_H 加权和,T 步推理,GRU 迭代 st=GRU(st−1,xt),概率取所有时间片均值。
  • L202-265 XLM:跨语言;单语无监督+平行语料有监督;跨语言共享字典(字节级);语料不均→采样算法 α=0.5(多项分布,低频语言更高概率被采样);CLM 因果语言模型(=GPT 思路用 Transformer);MLM 三点不同(不限句子个数 256 截断/低频词上采样/加语种编码);TLM 翻译语言模型(拼接平行语料,任意语言部分掩码,「不仅学习了语言内部的相互关系,而且学会了语言之间的对齐关系」);应用:XNLI 15 语言(英微调它语言测试)、无监督机器翻译(初始化方式)、有监督 MT、低频语言、无监督跨语言词嵌入(余弦相似度)。小结:RoBERTa 训练技巧;MT-DNN 多任务泛化;XLM 多语言;ALBERT 矩阵分解+权值共享降计算量。
  • L267-458 5.6 XLNet:AR(自回归)vs AE(自编码):AR 优点=符合真实建模场景(「很多 NLP 任务都是从前向后的」),缺点=只能用之前时间片;ELMo 双向拼接「并没有跳出自回归语言模型的范畴」;BERT 优点=同时用上下文,缺点=「掩码导致训练阶段和微调阶段不一致,因为在微调阶段是看不到掩码的」;XLNet 20 个任务全面超越、18 个更优。
  • 背景:AR 式(5.26) 最大化似然;AE 式(5.27) 预测掩码词,「自回归可以看到的时间片信息的范围是从 1 到 t−1,而自编码是可以看到所有时间片的信息的」。BERT 本质=去噪自编码器(掩码=噪声);「独立性假设」问题:「New York is a city」→「[mask] [mask] is a city」,预测 New 时不知道另一掩码是 York(L323-327)。XLNet 目标:「既能看见上下文,又能保证训练和微调阶段一致」。
  • PLM 排列语言模型:x1→x2→x3→x4 打乱取 x2→x4→x3→x1,预测 x3 时同时看到 x2(上文)和 x4(下文);「PLM 本质上是一个先进行打乱,再从左到右依次预测的自回归语言模型」;打乱后位置问题(「New York is a city」两个排列预测结果一致但标签不同)→目标位置编码;实现=注意力掩码(输入保持原始顺序,网络内部打乱;预测 4 时 1 掩码 2、3 可见,图5.20)。
  • 双流自注意力:两特性——预测 x_t^ 时只能用位置不能用内容(知道了内容再预测无意义);预测之后单词时必须编码内容。内容流=传统 Transformer-XL(位置+内容);查询流=只保留位置信息忽略当前内容(K、V 用内容向量但看不到自己;「查询流起到了和 BERT 中掩码操作类似的功能」);初始化:查询流=可训练 w,内容流=词嵌入;微调时去掉查询流。
  • 部分预测:开头没上下文不可能预测→只预测 1/K;「最佳的 K 值介于 6 和 7 之间……对应的值介于 14.3% 与 16.7% 之间。巧合的是,在 BERT 中一个单词被替换为掩码的概率是 15%,恰好也在这个范围之内」(L433-436)。Transformer-XL 基础:相对位置编码用原始输入位置(「随机排列之后的位置编码是没有意义的」);分段递归与排列结合(式5.36)。
  • 小结:「XLNet 和 BERT 在结构上看似有很多不同点,但是在本质上它们是非常相似的……甚至它们连要预测的单词的比例都控制在了 15%」;「当整个句子中只有一个单词需要预测时,XLNet 和 BERT 基本是等价的」;「全面的提升不能减少使用比 BERT 更多的训练数据带来的影响,因此我们也不能过分地神化 XLNet」。
  • L460-624 5.7 ERNIE-T(清华):知识图谱+预训练;「将纯文本的预训练任务变成文本加知识的预训练任务」;Bob Dylan 例(词曲作者/作家——需要知道 Blowin' in the Wind 是歌、Chronicles 是书,BERT 只凭上下文难判断);结构=T-Encoder(标准 BERT,N 个多头 Transformer)+K-Encoder(M 个整合器 aggregator,词/实体两序列,参数不共享的两组多头注意力,对齐词-实体融合 hj,无实体标志单独算);实体嵌入=TransE(三元组 (h,l,t),h+l≈t,d 距离 l1/l2,损失式5.45 hinge+负采样);知识图谱:Wikipedia 5 040 986 实体、24 267 796 三元组。DAE 去噪实体自编码器:5% 实体换随机实体(没对齐)、15% 掩码(没找到对应)、其余不动;损失=MLM+NSP+DAE 加和。微调加实体类别识别([ENT] 标注)和关系分类([HD]/[TL]+[CLS]),占位符对齐任务。小结问题:①「模型严重依赖于构建的知识图谱,如果知识图谱有分布倾向的话,可能会限制模型的泛化能力」②构建知识图谱计算量大、数据要求高③「融合方式有些粗暴」。
  • L626-694 5.8 ERNIE-B/2.0:ERNIE-B 核心:短语级别掩码+实体级别掩码(外部知识);对话语言模型 DLM(百度贴吧数据,QRQ/QRR/QQR,对话嵌入;与 MLM 兼容)。Harry Potter 例:「如果我们用掩码替换的是整个实体……我们可以根据图书名字预测它的作者,这时候模型才真正学到了知识」(L643-646);三阶段:基本级别掩码(=BERT 随机,中文用字符级)→短语级别(语法分析工具取短语如 a series of)→实体级别。ERNIE 2.0:持续预训练学习解决灾难性遗忘;「引入了大量的预训练任务,包括单词感知、结构感知和语义感知 3 类」共 8 小类;「就像我们在做一张语文试卷时,只会一种题型并不能拿高分」;灾难性遗忘定义:「当我们顺序学习一系列任务时,我们以一个新任务的目标去优化模型,模型的参数会根据新任务的目标进行调整,进而导致模型在之前老任务上的效果变差」;持续学习=「能够在学习新任务的同时保证模型在老任务上的准确率不会变」。

13-p241-260.txt(5.8 末、第三篇篇首、6.1 Dropout、6.2 BN、6.3 LN 起)

  • L1-75 ERNIE 2.0 预训练任务:三感知级别。单词感知:知识掩码(ERNIE-B 式)/大写预测(英文大写=特殊含义如地名;输入全小写助收敛;中文没大小写,论文没交代)、标志-文档关系预测(「在一篇文章中反复出现的词往往是这个文章的关键词」)。结构感知:句子重排序(切 n 段打乱,预测排列顺序,k 分类)、句子距离(0 近/1 同篇远/2 跨篇)。语义感知:篇章句子关系(but→转折)、相关性计算(百度搜索数据,0 点击强相关/1 弱相关/2 随机)。持续多任务学习:新任务进来时与老任务一起训练+每任务自动分配 N 训练步;对比:多任务学习(每次重训所有,效果过于差)、持续学习(依次训练,灾难性遗忘)。结构:任务嵌入+BERT 3 嵌入相加;编码器共享,任务头独立。小结:「百度的 ERNIE 系列并没有太大的创新点,其提升准确率的主要原因在于百度本身拥有的强大的中文数据资源和工具」;「百度的 ERNIE 系列和 OpenAI 的 GPT 系列把词向量训练任务推向了两个极端,一个是挖掘丰富的任务,另一个是堆积超大的模型和大量的数据,无论哪个极端都是需要巨大的财力支持的」(L72-74)。
  • L76-109 第三篇篇首:Goodfellow 引言「最好的拟合模型是一个适当正则化的大型模型」;参数以亿计→易过拟合→正则化;三角度:数据扩充/权重 L1 L2/早停;本章两类网络层结构:Dropout+归一化。Dropout=「当发生过拟合之后,第一个被考虑使用的网络结构」;「通过将一些节点替换为掩码来减轻节点之间的耦合性」。归一化家族:BN(不同样本同通道;「BN 是无法用在序列模型中的,因为它无法处理同一个批次中数据长度不一致的场景」)、LN(同一样本不同通道)、IN(不同样本不同通道,图像生成细节要求高)、GN(LN 与 IN 之间,通道分组)、WN(权值矩阵上,「更适用于噪声敏感的环境,如生成任务、强化学习等」)、SN(BN+LN+IN 加权,自适应)。图6.1 经典。
  • L111-216 6.1 Dropout:共适应 co-adaption:「网络中的一些节点会比另外一些节点有更强的表征能力。这时,随着网络的不断训练,具有更强表征能力的节点被不断强化,而表征能力更弱的节点则被不断弱化,直到对网络的贡献可以忽略不计。这时候网络中只有部分节点被训练,浪费了网络的宽度和深度」(L132-135)。数学推导:线性网络,误差 EN;w′=pw;ED 期望=E[∂ED/∂wi]=Σ2wi′(1−p)+…→等价带正则的普通网络(正则项~p(1−p)Σwi²)。三技巧:①丢失率 0.5 最强正则(p(1−p) 最大);②深层 0.5 好,浅层 <0.2(「过大的丢失率会导致丢失过多的输入数据」),不建议 >0.5;③测试时权值乘 p(缩放)。其他理论:模型集成(Hinton,「最终的网络相当于这些随机网络的模型集成」)、贝叶斯(参数共享使 Dropout「可以在有限的时间和硬件条件下实现对无限大量级的模型的训练」)。笔记:SELU 自归一化网络要用 Alpha Dropout(保留均值标准差)。
  • L218-263 CNN Dropout:直接丢像素不奏效,因「临近像素之间的相似性……直接丢掉一个像素点而丢失的信息可以很容易地通过其周围的像素弥补回来」;空间 Dropout(按通道丢)、DropBlock(丢一大块区域)、最大池化 Dropout(池化前窗口内随机掩码,「使得窗口内较小的值也有机会影响网络的效果」)。RNN Dropout:「每个时间片的 Dropout 会限制 RNN 保留长期记忆的能力」→RNNDrop(循环开始前生成一组掩码,作用单元状态,循环中保持不变)、Recurrent Dropout(掩码作用到更新单元状态处,保持不变)、Yarin Gal(作用到 LSTM 各门,Zx/Zh 时间步内不变)。
  • L264-344 变体:高斯 Dropout(高斯门;测试不需缩放;所有节点参与训练;「增熵是比减熵更好的策略」);DropConnect(掩码输入权值而非输出;测试 2^|M| 种枚举不现实→高斯采样拟合,均值 pWv);StandOut(丢弃概率自适应,取决于权值,「权值越大,节点被丢弃的概率越高。这样低权值的节点也可以逐渐学习到有用的特征」);蒙特卡洛 Dropout MC Dropout(测试时保留 Dropout,多次采样,「softmax 的值并不能反映样本分类的可靠程度……经过 Softmax 计算后的最大值往往是一个非常接近 0.99 的值,这个值作为模型的置信度是非常不可靠的」;「恰好 Dropout 是一个天然的不同模型的生成器」;多次预测可并行)。
  • L346-358 小结:0.5 最好;>0.5 不建议;RNN 掩码需跨时间片保持。
  • L359-580 6.2 BN:「不仅能够有效地解决梯度爆炸的问题,而且加入 BN 层的网络往往更加稳定且 BN 还起到了一定的正则化的作用」。ICS 之争:Ioffe(ICS=「在训练过程中由网络参数变化导致网络激活的分布产生的变化」,ICS 是「导致网络收敛慢的罪魁祸首」)vs Santurkar MIT 2018(「BN 其实和 ICS 的关系并不大,其有用的原因是使损失平面更加平滑」)。白化(均值0方差1)加速收敛;BN=对每层输入做批次级白化;梯度饱和:BN 在激活函数前把 Wx+b 归一化到梯度大区域(z=g[BN(Wx+b)])。训练:批次 m 样本 d 特征,按特征(通道)统计 E/Var;可学习 β γ(还原直接映射;γ=σ、β=μ 时 y=x,「经过 BN 操作的网络容量是不小于没有经过 BN 操作的网络容量」)。测试:滑动平均(moving average,遗忘因子 momentum 默认 0.99;「在训练的时候,顺便就把采集到的样本的均值和方差保留了下来」)。CNN 中 BN:以通道(特征图)为单位,m×p×q 个数据一组统计,每特征图一组 γ β。MIT 两实验:①BN 网络加随机噪声(ICS 更严重)性能仍优于普通网络;②BN 有时甚至增大 ICS(定义 6.1:更新前后梯度参数距离)。BN 真因:平滑损失平面,满足利普希茨连续(‖f(x1)−f(x2)‖≤L‖x1−x2‖)与 β-平滑(梯度的梯度有界);残差/DenseNet 也平滑损失平面(Hao Li);L1/L2 正则替代(l p-norm)也有类似效果。四定理:BN 使网络利普希茨连续;梯度利普希茨连续;降低梯度上界;对初始化不敏感。小结三慎用:批次太小、RNN 动态网络、训练/测试方差大。作者判断:「BN 真的和 ICS 没有一点关系吗?我觉得不一定」(L578-580)。
  • L581-593 6.3 LN 起:LN 解决 BN 两不适用(动态网络/小批次);「LN 和 BN 的不同点是其归一化的维度是互相垂直的」;N 样本轴 C 通道轴 F 特征数;BN 取不同样本同通道,LN 取同一样本不同通道。

14-p261-275.txt(6.3 LN 续、6.4 WN、6.5 IN、6.6 GN、6.7 SN;全书到此为止,无索引/后记)

  • L1-19 BN 两问题:①批次小(例 4 个样本)统计量不能反映全局;②RNN 动态网络(各样本长度不同,z>4 时只剩一个样本;测试遇到超长样本「无法找到保存的归一化统计量,所以 BN 无法运行」)。
  • L21-60 LN:统计量只取决于隐层节点数 H,「无论样本数多少都不会影响参与 LN 计算的数据量」;MLP/RNN 公式(式6.30-6.35);ϵ 防除零;增益 g 偏置 b(=BN 的 γ β);「LN 将每个训练样本都归一化到了相同的分布上」。
  • L62-127 对照实验(作者自己跑):MLP/MNIST,batch 128 时 BN 优于 LN 且都加速;batch 8 时「BN 反而会减慢收敛速度」,LN 轻微优于无归一化;LSTM/imdb:LN 略有帮助,「LN 得到的模型更稳定」「有正则化的作用」,「至于论文中所说的加速收敛的效果,我们从实验结果上看不到明显的加速效果」;CNN 上 LN「破坏了卷积学习到的特征,模型无法收敛」。小结:「在 BN 和 LN 都能使用的场景中,BN 的效果一般优于 LN,原因是基于不同样本、同一特征得到的归一化特征更不容易损失信息」。
  • L129-234 WN:权值维度归一化(与 BN/LN 数据层面不同);w=(g/‖v‖)·v,解耦范数与方向;v=w 且 g=‖w‖ 时还原普通网络(容量≥);无新参数、与样本量无关;「BN 使用基于小批次的归一化统计量代替全局统计量,相当于在梯度计算中引入了噪声。而 WN 没有这个问题,所以在生成模型、强化学习等噪声敏感的环境中 WN 的效果也要优于 BN」;计算效率高、省显存。原理:梯度缩放+投影到远离 w 的方向;自稳定 self-stablize(噪声大时更新值变小)→可用大学习率;协方差角度:w 是 C 的主特征向量。BN/WN 关系:单层+标准化输入时等价。初始化:v~N(0,0.05²),g/b 用第一批样本统计量(不适用于 RNN)。均值 BN:只减均值不除方差(「BN 的除方差操作会引入额外的噪声」),WN+均值 BN 收敛慢但测试精度高。小结四好处+一问题:「它并没有对得到的特征范围进行约束的功能,所以 WN 依旧对参数的初始值非常敏感」。
  • L235-326 IN:风格迁移/生成任务「每个样本的每个像素点的信息都是非常重要的」,BN 混合整个批次「造成了每个像素独特细节的丢失」,LN 忽略通道差异;IN=单样本单通道;IST 中 Texture Network 生成器样本少(16 个)时效果好→BN 不适用→IN 不受限批次;TF 源码 axes 计算([1,2]);两不建议:MLP/RNN(每通道只 1 个数)、特征图小(采样少)。
  • L328-394 GN:何恺明团队;LN 与 IN 之间;通道分组(组数 G 超参,TF 默认 32);与批次大小无关;G=1 等价 LN,G=通道数等价 IN;统一式(6.45) Si 取法:BN 跨样本同通道/LN 同样本跨通道/IN 单样本单通道/GN 组内;原理:SIFT/HOG 传统算法也按组统计;「GN 比 LN 效果好的原因是 GN 比 LN 的限制更少……而 IN 则丢失了探索通道之间依赖性的能力」。作者困惑:「GN 的效果反而优于另外两个算法,这令我非常困惑……有根据结果推导原因的嫌疑。另外我也做了一些归一化方法的对照实验,实验结果并不如作者所说的那么理想」(L390-393);「如果批次比较大,BN 仍旧是最优的选择。但是如果批次比较小,也许通过对照实验选出最好的归一化策略是最优的选择」。
  • L395-487 SN:可微归一化层,「让模型根据数据来学习每一层该选择的归一化方法,抑或是 3 个归一化方法的加权和」;「与任务无关」;统一式(6.47) μ σ 按 k∈{in,ln,bn};6 个标量 wk/w′k(softmax 权重,λ 可学习反向传播);只增加 6 个参数;用 μin σin 作中间变量减少计算量;测试用批平均(固定 SN 层,抽批次统计 μ σ 平均),「略微优于滑动平均」。优点:健壮性(任何批次)/通用性(免人工选)/多样性(每层学不同策略;LSTM 学到 LN、风格迁移学到 IN;批次小 BN 权重小)。

全书主线(供 index)

  • 三篇一条线:CV 骨干网络进化史(更深→更宽→跳跃连接→注意力→密连→Transformer 化)→ 轻量化(参数账)→ AutoML(把设计交给搜索)→ NLP(RNN 困境→注意力→Transformer→预训练)→ 模型优化层(Dropout+归一化,贯穿前两篇的「先验知识」)。
  • 作者笔法特色:几乎每节「先验知识」框+Keras/PyTorch/TF 代码+自己跑的对照实验(MNIST/CIFAR-10/IMDB)+对论文的冷静点评(敢批 SqueezeNet 题目、LeCun 挂羊头卖狗肉、GN 解释有根据结果推导原因之嫌、GPT-3 炫富、MnasNet 过拟合单一手机)。「笔记」框给直觉类比。
  • 与 nndl-2e 的差异:邱锡鹏书按知识体系(前馈/CNN/RNN/…),本书按「算法论文史」组织,以 ILSVRC/预训练竞赛为主线,重实验复现与批判性点评,几乎不講数学基础(明确说不讲基础)。