第三部 · 从数据中学习 · 第 12 章 · 已验收

神经网络与深度学习

从线性单元与激活函数开始,用一个可复算小网络贯通前向传播、交叉熵、链式法则和参数更新,再说明深度、批次、优化与正则化的边界,并以AlexNet区分论文基准、现代复现和真实部署。

导读:一个可微函数家族,不是一颗电子大脑

人工神经网络(artificial neural network,ANN)是把许多带参数的计算单元连接成复合函数的模型。输入沿连接经过加权、求和和非线性变换得到输出;训练则用数据调整参数,使预先定义的损失在训练样本上减小。深度学习(deep learning,DL)通常指用含多层表示的神经网络学习任务所需映射。它不是与机器学习并列的魔法,而是机器学习的一条重要技术路线。教材从前馈网络、反向传播、正则化与优化分别界定这些部件。[1, Chapters 6–8]

“神经元”“突触”“激活”是历史留下的类比。人工单元只执行工程师写定的数值运算;真实神经细胞的电化学过程、结构和学习机制远复杂得多。名称不能证明二者机制等价,更不能推出网络有意识、像人一样理解或“使用了百分之多少大脑”。Rosenblatt在1958年讨论的感知机本就同时带有假想神经系统与机器模型的研究色彩;今天描述计算系统时,应把数学定义与生物假说分开。[2, pp. 386–390]

本章沿一条连续路线前进:线性单元为何不够;激活函数怎样引入非线性;多层网络怎样前向计算;损失怎样把任务写成可优化的量;反向传播怎样逐节点应用链式法则;优化器又怎样更新参数。随后再解释深度、宽度、批次、epoch、学习率、初始化与正则化各管什么,以及卷积网络、序列网络和全书后续专题将讲的Transformer处在何种历史位置。

12.1 从一个线性单元开始

给一个样本采用列向量约定:输入 x∈Rd×1\mathbf x\in\mathbb R^{d\times1},权重 w∈Rd×1\mathbf w\in\mathbb R^{d\times1},偏置 b∈Rb\in\mathbb R。线性单元先算

z=w⊤x+b∈R.(12-1)z=\mathbf w^\top\mathbf x+b\in\mathbb R. \tag{12-1}

w⊤\mathbf w^\top 的形状是 1×d1\times d,故 (1×d)(d×1)(1\times d)(d\times1) 得到标量。权重决定各特征的方向与尺度,偏置让边界不必经过原点。若输出只取 1[z≥0]\mathbb 1[z\ge0],就得到一种阈值分类器;感知机学习规则可在满足条件时找到线性可分数据的分隔面,但单个线性边界无法表示异或一类非线性分法。

只把线性层堆起来也无济于事。若 h=W1x+b1\mathbf h=\mathbf W_1\mathbf x+\mathbf b_1,o=W2h+b2\mathbf o=\mathbf W_2\mathbf h+\mathbf b_2,代入后仍是 o=(W2W1)x+(W2b1+b2)\mathbf o=(\mathbf W_2\mathbf W_1)\mathbf x+(\mathbf W_2\mathbf b_1+\mathbf b_2),即一个新的线性/仄射变换。层数本身不会凭空增加这种模型的表达类型。

激活函数:在层与层之间加入非线性

激活函数对预激活值逐元素变换。本章小网络使用

ReLU⁡(z)=max⁡(0,z),ReLU⁡′(z)={1,z>00,z<0.(12-2)\operatorname{ReLU}(z)=\max(0,z),\qquad \operatorname{ReLU}'(z)=\begin{cases}1,&z>0\\0,&z<0\end{cases}. \tag{12-2}

ReLU在 z=0z=0 不可微;软件必须选一个次梯度约定,常取0。本章的复算点避开0。Sigmoid σ(a)=1/(1+e−a)\sigma(a)=1/(1+e^{-a}) 把标量映到 (0,1)(0,1),适合在二分类例中表示一个条件概率参数,但极大正负输入会饱和。激活函数的选择影响表达与优化;“某函数更像生物放电”不是工程正确性的证据。

12.2 多层网络:深度、宽度与参数究竟是什么

多层感知机(multilayer perceptron,MLP)通常由全连接层与非线性激活交替组成。“全连接”表示后一层每个单元都接收前一层全部输出,不表示模型连接了世界上的所有知识。

  • **深度(depth)**是沿计算路径串联的层数,但文献是否计输入层、激活层或只有含参数层并不统一,比较前必须声明口径。
  • **宽度(width)**是一层的单元或通道数。更宽可提供更多并行特征,但也会改变参数量、内存与优化。
  • **参数(parameters)**是训练更新的权重、偏置等数值;超参数如层数、学习率和批量大小由训练方案设定。对从 dind_{in} 到 doutd_{out} 的全连接层,权重加偏置共有 doutdin+doutd_{out}d_{in}+d_{out} 个参数。

更深或更宽通常扩大可表示的函数家族,却不等于“更智能”。数据不足、目标错置、优化失败或分布变化时,容量越大仍可能记忆噪声、放大偏差或自信犯错。表示学习的意思是中间表示也由任务与数据塑造,不是模型“自动发现一切真正特征”;学到的是对训练目标有用、且受架构归纳偏置限制的表示。

12.3 一次完整前向传播:所有形状先定义

以下原创虚构小网络只为手算,不对应人物或业务。精确输入、输出、梯度、舍入口径见 /data/ch12-tiny-network.json;公开生成与只读校验脚本默认不写文件,执行 python3 ch12-generate-case.py --check 可复算。

令输入 x∈R2×1\mathbf x\in\mathbb R^{2\times1};第一层 W1∈R2×2\mathbf W_1\in\mathbb R^{2\times2}、b1∈R2×1\mathbf b_1\in\mathbb R^{2\times1};隐藏预激活 z1\mathbf z_1 与激活 h\mathbf h 都在 R2×1\mathbb R^{2\times1};第二层 W2∈R1×2\mathbf W_2\in\mathbb R^{1\times2}、b2∈Rb_2\in\mathbb R;输出logit a∈Ra\in\mathbb R、概率 p∈(0,1)p\in(0,1),标签 y∈{0,1}y\in\{0,1\}。取

x=[1−1],W1=[0.5−0.5−0.25−0.75],b1=[00],W2=[0.8−0.4], b2=0.1, y=1.(12-3)\mathbf x=\begin{bmatrix}1\\-1\end{bmatrix},\quad \mathbf W_1=\begin{bmatrix}0.5&-0.5\\-0.25&-0.75\end{bmatrix},\quad \mathbf b_1=\begin{bmatrix}0\\0\end{bmatrix}, \quad \mathbf W_2=\begin{bmatrix}0.8&-0.4\end{bmatrix},\ b_2=0.1,\ y=1. \tag{12-3}

前向传播只是按依赖顺序求值:

z1=W1x+b1=[10.5],h=ReLU⁡(z1)=[10.5].(12-4)\mathbf z_1=\mathbf W_1\mathbf x+\mathbf b_1 =\begin{bmatrix}1\\0.5\end{bmatrix},\qquad \mathbf h=\operatorname{ReLU}(\mathbf z_1)=\begin{bmatrix}1\\0.5\end{bmatrix}. \tag{12-4}

形状为 (2×2)(2×1)+(2×1)=(2×1)(2\times2)(2\times1)+(2\times1)=(2\times1)。再算

a=W2h+b2=0.7,p=σ(a)=0.668187772….(12-5)a=\mathbf W_2\mathbf h+b_2=0.7,\qquad p=\sigma(a)=0.668187772\ldots. \tag{12-5}

这里 (1×2)(2×1)(1\times2)(2\times1) 是标量。对单个二分类样本使用二元交叉熵

L=−[ylog⁡p+(1−y)log⁡(1−p)]=−log⁡p=0.403186049….(12-6)L=-[y\log p+(1-y)\log(1-p)]=-\log p=0.403186049\ldots. \tag{12-6}

条件是 0<p<10<p<1;自然对数使 LL 无量纲。实现通常直接从logit计算稳定形式,避免 pp 被浮点舍入到0或1。损失是被设计的训练代理量:它下降不保证验证损失、真实伤害或部署表现也下降。

两个输入经过二乘二权重矩阵和ReLU形成两个隐藏值,再经输出权重、sigmoid和交叉熵得到损失;下方反向箭头列出从p减y到两层权重梯度的数值与形状。

窄屏提示:上半部从左到右做前向计算,下半部从右到左读取局部导数。

图 12-1 反向传播计算梯度,不是“误差液体向后流”。 数值来自式(12-3)至(12-12)及配套JSON;图为本项目原创教学材料,CC BY 4.0。

12.4 反向传播:逐节点乘局部导数

反向传播是对计算图高效应用链式法则的算法。它不是把一个名叫“误差”的量原样倒灌,而是从标量损失出发,按反向拓扑顺序把上游梯度与当前节点的局部导数相乘并在分叉处求和。1986年的Rumelhart、Hinton与Williams论文展示并推广了通过反向传播调整多层网络权重、学习内部表示的有效程序;不宜把更长的自动微分历史压成“他们凭空发明”。[3, pp. 533–536]

先看输出节点。Sigmoid局部导数是 ∂p/∂a=p(1−p)=0.221712873…\partial p/\partial a=p(1-p)=0.221712873\ldots;当 y=1y=1 时,∂L/∂p=−1/p=−1.496585304…\partial L/\partial p=-1/p=-1.496585304\ldots。二者相乘:

δa≡∂L∂a=∂L∂p∂p∂a=p−y=−0.331812228….(12-7)\delta_a\equiv\frac{\partial L}{\partial a} =\frac{\partial L}{\partial p}\frac{\partial p}{\partial a}=p-y=-0.331812228\ldots. \tag{12-7}

∂L/∂a=p−y\partial L/\partial a=p-y 只可直接套用于sigmoid与这一定义的二元交叉熵配对,不是任意损失的通式。由 a=W2h+b2a=\mathbf W_2\mathbf h+b_2,

∇W2L=δah⊤=[−0.331812−0.165906],∇b2L=δa=−0.331812.(12-8)\nabla_{\mathbf W_2}L=\delta_a\mathbf h^\top =\begin{bmatrix}-0.331812&-0.165906\end{bmatrix},\qquad \nabla_{b_2}L=\delta_a=-0.331812. \tag{12-8}

形状核对:(1×1)(1×2)=(1×2)(1\times1)(1\times2)=(1\times2)。传到隐藏激活的梯度不是 W2\mathbf W_2 本身,而是

∇hL=W2⊤δa=[−0.2654500.132725]∈R2×1.(12-9)\nabla_{\mathbf h}L=\mathbf W_2^\top\delta_a =\begin{bmatrix}-0.265450\\0.132725\end{bmatrix}\in\mathbb R^{2\times1}. \tag{12-9}

两项 z1,1=1,z1,2=0.5z_{1,1}=1,z_{1,2}=0.5 均大于0,故ReLU局部导数向量为 (1,1)⊤(1,1)^\top。以 ⊙\odot 表示逐元素乘法:

δz1≡∇z1L=∇hL⊙ReLU⁡′(z1)=[−0.2654500.132725].(12-10)\boldsymbol\delta_{z_1}\equiv\nabla_{\mathbf z_1}L =\nabla_{\mathbf h}L\odot\operatorname{ReLU}'(\mathbf z_1) =\begin{bmatrix}-0.265450\\0.132725\end{bmatrix}. \tag{12-10}

最后由 z1=W1x+b1\mathbf z_1=\mathbf W_1\mathbf x+\mathbf b_1 得

∇W1L=δz1x⊤=[−0.2654500.2654500.132725−0.132725],∇b1L=δz1.(12-11)\nabla_{\mathbf W_1}L=\boldsymbol\delta_{z_1}\mathbf x^\top =\begin{bmatrix}-0.265450&0.265450\\0.132725&-0.132725\end{bmatrix},\qquad \nabla_{\mathbf b_1}L=\boldsymbol\delta_{z_1}. \tag{12-11}

形状为 (2×1)(1×2)=(2×2)(2\times1)(1\times2)=(2\times2)。若一个参数被多条路径使用,链式法则要求把各路径贡献相加;矩阵写法隐藏了这些求和,但没有取消它们。若某个ReLU输入小于0,该样本在该支路的局部导数为0;若恰等于0,必须采用声明的次梯度约定。

更新方向:减梯度,不是“把负数都减小”

取学习率 η=0.1\eta=0.1,普通随机梯度下降对所有旧参数同时计算并更新:

θnew=θold−η∇θL.(12-12)\theta_{new}=\theta_{old}-\eta\nabla_\theta L. \tag{12-12}

用未舍入梯度得到

W2,new=[0.833181−0.383409],b2,new=0.133181,\mathbf W_{2,new}=\begin{bmatrix}0.833181&-0.383409\end{bmatrix},\quad b_{2,new}=0.133181, W1,new=[0.526545−0.526545−0.263272−0.736728],b1,new=[0.026545−0.013272].\mathbf W_{1,new}=\begin{bmatrix}0.526545&-0.526545\\-0.263272&-0.736728\end{bmatrix},\quad \mathbf b_{1,new}=\begin{bmatrix}0.026545\\-0.013272\end{bmatrix}.

重新前向得到 Lnew=0.353990…<0.403186…L_{new}=0.353990\ldots<0.403186\ldots,是这个点、这一小步的合理性检查,不是每一步对任意学习率都下降的定理,更不是泛化证明。配套脚本还用中心有限差分逐参数核对解析梯度;检查点避开ReLU折点。

12.5 从一个样本到训练循环

训练集有 NN 个样本。一次epoch表示按既定采样规则让训练过程遍历约一遍训练集;一个mini-batch是一次梯度估计共同使用的一小组样本;一个step通常是优化器进行一次参数更新。若不丢弃最后不足批量的样本、每个epoch恰遍历一次且批量大小为 BB,则每epoch步数为 ⌈N/B⌉\lceil N/B\rceil。有放回采样、梯度累积、分布式训练或丢弃尾批时,这个关系会改变,必须报告实现口径。

  • 小批量梯度通常是批内损失的平均;批量增大可降低梯度噪声,却增加内存,且需要重新考虑学习率与泛化。
  • epoch只计数据遍历,不计“学会程度”;重复100个epoch不保证比10个好。
  • 训练损失用于更新参数;验证集用于选方案与早停;测试集应在方案锁定后评价。反复看测试集调参会使它变成事实上的验证集。

学习率、初始化、优化器与正则化各管一件事

学习率控制每次更新尺度。过大可能震荡或发散,过小可能在预算内进展缓慢;调度器随训练改变它,但不能修复错误标签或目标。初始化给训练起点,并应让信号和梯度在早期不过度爆炸或消失;把同层对称单元全部初始化为相同值会使它们获得相同梯度。初始化不等于预训练,随机种子也不是性能保证。

优化器把梯度变成更新。SGD可加动量;Adam一类方法按历史一、二阶矩自适应缩放坐标。优化器影响速度、稳定性和最终解,却不改变“训练目标是否代表真实目的”。它找到低训练损失也不保证全局最优或测试泛化。

正则化是约束有效容量或训练行为以改善未见数据表现的一组方法。权重衰减惩罚大权重;dropout训练时随机屏蔽部分激活;数据增强按保持标签语义的变换扩充样本;早停根据验证表现停止。这些机制不可互换:权重衰减不是学习率,dropout不是删除训练数据,数据增强若改变标签语义还会制造错误样本。正则化可能改善泛化,也可能过强而欠拟合。教材把参数范数、数据增强、噪声、早停和dropout分别讨论。[1, Chapter 7]

12.6 卷积与序列网络的历史位置

卷积神经网络(convolutional neural network,CNN)利用局部连接和权重共享:一个小卷积核在图像各位置应用,同一组参数寻找可平移出现的局部模式。它减少相对全连接图像层的参数,并注入局部性与平移相关归纳偏置;但边界、步幅、填充和池化都会影响输出,它也不是天然拥有旋转、尺度或所有视角不变性。

一个三乘三卷积核覆盖五乘五输入左上窗口并计算一个输出;同一核向右滑动计算相邻输出,颜色和连线表明两处复用完全相同的九个权重。

窄屏提示:比较左右两个窗口;位置改变,九个核权重不变。

图 12-2 卷积的核心是局部窗口与权重共享。 图中数值为原创教学示意,不代表训练所得滤波器;本项目原创,CC BY 4.0。

1998年的LeNet-5把卷积、子采样和监督训练用于文档识别。论文描述其约6万自由参数;在MNIST 10,000张测试图像上,加入随机仿射变形的实验误分82张(0.8%)。论文还介绍了每月处理数百万张支票的系统,但孤立数字测试集的错误率不是整套支票读取业务的端到端准确率:定位、切分、拒识和金额解释都在系统边界内。[4, §§II-D, IV and VIII]

序列数据曾常用循环神经网络(RNN)让隐藏状态逐步传递,LSTM、GRU用门控缓解长距离优化困难;卷积也可用于序列。它们在语音、文本和时间序列中占有重要历史位置,但顺序依赖限制训练并行,长程信息也可能衰减。本书后续的自然语言处理与大语言模型专题将展开Transformer:用注意力直接组合不同位置的表示,改变大规模序列建模的工程路线。这个预告不表示CNN或RNN“已过时”,也不表示Transformer自动适合一切数据与预算。

12.7 现实案例:AlexNet赢的是哪一场考试

AlexNet是观察“数据、架构、计算、训练与评测共同作用”的合适历史案例。它解决的是ILSVRC规定的封闭集分类:给图像,在1,000个类别中排序;它没有被要求列出图中所有物体、解释关系、识别类别表外对象或理解拍摄意图。

数据与标签

AlexNet论文概述约120万训练、5万验证、15万测试图像,主要对应ILSVRC-2010口径;ILSVRC回顾论文的表2列出2012–2014分类任务为1,281,167张训练、50,000张验证、100,000张测试图像。年份和划分不能拼成一个不存在的数据集。分类集通常给每张图一个目标标签,即使图中还有别的物体;回顾论文明确讨论了这种歧义。[5, §§2.1, 4.1 and Table 2]

架构与训练计算

2012论文的网络有8个带权重层:5个卷积层、3个全连接层,约6000万参数;使用ReLU、数据增强、最大池化、局部响应归一化与dropout等组合。训练采用mini-batch SGD,batch size 128、动量0.9、权重衰减0.0005、初始学习率0.01,验证误差停止改善时把学习率除以10,共约90个epoch;两块各3 GB的GTX 580训练一个网络约5至6天。论文没有报告今天常见的总FLOP、能源或全部失败实验成本,因此不能从“两块GPU×六天”无假设推出精确项目总算力。[6, §§3–5]

指标:单模型、集成与年份分开

Top-1错误表示最高分预测不是标签;Top-5错误表示前五名都没有标签。2010测试上,论文单个CNN经10个裁剪视图平均后报告Top-1错误37.5%、Top-5错误17.0%。2012中常引用的测试Top-5错误15.3%来自7个模型的集成,其中部分模型又在更大的2011 ImageNet数据上预训练;不是一个“标准AlexNet”单次训练的成绩。论文给出的第二名为26.2%。[6, §6 and Tables 1–2]

后续复现不是原论文原样重播

Torchvision的 AlexNet_Weights.IMAGENET1K_V1 文档报告61,100,840个参数、Top-1准确率56.522%、Top-5准确率79.066%,并固定缩放、中心裁剪与归一化预处理;页面同时说明其实现参考后来的变体,不是逐行复制2012双GPU代码。用这组权重可以复现现代库变体的推理,不能宣称重新训练并独立复现了竞赛15.3%提交。[7, implementation note and weights metadata]

ImageNet官方下载页所列ILSVRC 2012子集数量与上述回顾一致,其使用条款限定数据库用于非商业研究和教育,并提醒图片版权责任。代码许可、模型权重条款和训练图片权利是三类资产;开源代码不自动授予图片商业使用权。[8, download counts and Terms of Access]

从论文基准到部署还缺什么

ILSVRC证明的是指定类别、数据和评分协议下的分类能力,不是通用视觉理解。回顾论文记录了单标签歧义、标注错误抽查及模型在小而细、滤镜化或抽象表示上的失败;ImageNet单一成绩不能覆盖这些边界。[5, §§4.1 and 6.4; Figure 15]

若把模型用于工厂缺陷、无障碍设备或医疗影像,至少还要用目标设备与人群数据验证:类别外输入与拒识、每类召回和校准、光照遮挡与压缩压力、延迟吞吐内存功耗、漂移监测、失败回退和人工复核。论文基准、别人后续复现、自己目标场景验证、上线业务指标应分栏报告,不能用一个准确率互相代替。

12.8 神经网络能做什么,不能保证什么

神经网络擅长从大量样本拟合复杂映射,可用于分类、回归、检测、分割、语音识别、生成、控制和表示学习。它能把手工设计所有特征的负担部分转移到数据与训练,但仍需人决定采样、目标、架构、评价和部署规则。

它不能仅凭训练完成就保证:因果解释、分布外可靠性、概率校准、公平、隐私、版权合规、安全或与人相同的理解。参数多不等于知识全;损失低不等于目标正确;在平均指标上领先也可能伤害少数场景。对抗扰动、伪相关、标签噪声与数据漂移会暴露这种条件性。需要解释时,还要区分对模型行为的局部归因、对数据规律的描述与对现实原因的证明。

一条可审计实践路线是:先写任务和失败代价;锁定训练/验证/测试及时间边界;记录数据版本、预处理、架构、初始化、优化器、学习率、batch、epoch和随机性;同时画训练与验证曲线;按目标子群和压力条件评价;最后把模型指标接到人工流程与真实结果。任何一步都不能被“深度学习会自动发现一切”替代。

核心概念

  • 神经网络与深度学习:前者是参数化复合函数家族,后者强调多层表示学习的路线。
  • 感知机与多层感知机:线性阈值模型与加入隐藏层、非线性的前馈网络不可混为一谈。
  • 激活函数:打破纯线性层复合,选择同时影响表达和优化。
  • 反向传播与优化器:前者算梯度,后者用梯度更新;它们不是同一算法。
  • 卷积神经网络:以局部连接和权重共享利用空间结构,但不自动获得完整视觉理解。
  • epoch与mini-batch:前者计数据遍历,后者定义一次梯度估计所用样本组,step计参数更新。

本章小结

  • 人工神经网络是数学与工程模型;生物术语是历史类比,不是机制等价或意识证据。
  • 线性单元只能形成线性边界;多层间的非线性让网络表示更复杂映射。深度、宽度和参数量扩大容量,却不等于智能或泛化。
  • 前向传播按图求值;反向传播按链式法则乘局部导数并在分支处求和;优化器再沿所定义的更新规则改参数。
  • batch、epoch、step分别描述样本组、数据遍历和参数更新;学习率、初始化、优化器和正则化各解决不同训练问题,不能互相冒名。
  • CNN、RNN与Transformer体现不同归纳偏置和计算取舍,没有一种架构自动适合所有任务。
  • AlexNet的历史成绩属于特定ImageNet版本、协议和模型集成。现代库推理、论文复现和真实部署是三层证据;ImageNet成绩不证明通用视觉理解。

相关词条

神经网络 · 深度学习 · 感知机 · 多层感知机 · 激活函数 · 反向传播 · 优化器 · 卷积神经网络 · epoch · mini-batch · 损失函数 · 梯度下降 · 正则化 · Transformer

本页参考来源

  1. Goodfellow I, Bengio Y, Courville A. Deep Learning [M]. MIT Press, 2016. Online edition. 定位:Chapters 6–8, especially §§6.1–6.5, 7.1–7.12 and 8.1–8.5. 稳定来源(访问 )。
  2. Rosenblatt F. The Perceptron — A Probabilistic Model for Information Storage and Organization in the Brain [J]. Psychological Review, 65(6), 386–408. Psychological Review, 1958. 定位:pp. 386–390 and 407–408. DOI;稳定来源(访问 )。
  3. Rumelhart D E, Hinton G E, Williams R J. Learning representations by back-propagating errors [J]. Nature, 323, 533–536. Nature, 1986. 定位:pp. 533–536. DOI;稳定来源(访问 )。
  4. LeCun Y, Bottou L, Bengio Y, Haffner P. Gradient-Based Learning Applied to Document Recognition [J]. Proceedings of the IEEE, 86(11), 2278–2324. Proceedings of the IEEE, 1998. 定位:§§II-D, IV and VIII; Figure 2. DOI;稳定来源(访问 )。
  5. Russakovsky O et al.. ImageNet Large Scale Visual Recognition Challenge [J]. International Journal of Computer Vision, 115, 211–252. International Journal of Computer Vision, 2015. 定位:§§2.1, 4.1 and 6.4; Table 2; Figure 15. DOI;稳定来源(访问 )。
  6. Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks [C]. Advances in Neural Information Processing Systems 25, 2012. 定位:Abstract; §§2–6; Tables 1–2. 稳定来源(访问 )。
  7. PyTorch Contributors. AlexNet — Torchvision model documentation [EB/OL]. PyTorch, 日期不详. stable documentation, AlexNet_Weights.IMAGENET1K_V1. 定位:implementation note, weights metadata and transforms. 稳定来源(访问 )。
  8. ImageNet. ImageNet downloads and terms of access [DS]. Stanford Vision Lab, 日期不详. ILSVRC 2012 subset page and terms. 定位:ILSVRC 2012 download counts and Terms of Access. 稳定来源(访问 )。