自动编码器架构的核心是瓶颈层。该层直接位于编码器和解码器之间,是压缩和表示学习“发生作用”的地方。编码器处理并压缩输入数据后,得到的压缩形式就存在于这个瓶颈中。之所以称为“瓶颈”,是因为它通常比输入层或输出层具有少得多的神经元,这迫使网络学习一种紧凑的表示。digraph G { rankdir=LR; node [shape=box, style=filled, color="#adb5bd", fillcolor="#e9ecef", fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_encoder { label = "编码器"; style=filled; color="#dee2e6"; node [style=filled,color="#74c0fc", fillcolor="#a5d8ff", shape=rect, width=2, height=0.8]; Input [label="输入层 (X)\n(例如,784 维)"]; Enc1 [label="编码器\n隐藏层 1"]; Enc2 [label="编码器\n隐藏层 2"]; } subgraph cluster_bottleneck { label = "瓶颈"; style=filled; color="#dee2e6"; node [style=filled,color="#94d82d", fillcolor="#c0eb75", shape=rect, width=1.5, height=0.6]; Bottleneck [label="潜在空间 (Z)\n(例如,32 维)"]; } subgraph cluster_decoder { label = "解码器"; style=filled; color="#dee2e6"; node [style=filled,color="#ffc078", fillcolor="#ffd8a8", shape=rect, width=2, height=0.8]; Dec1 [label="解码器\n隐藏层 1"]; Dec2 [label="解码器\n隐藏层 2"]; Output [label="输出层 (X̂)\n(例如,784 维)"]; } Input -> Enc1 [label="压缩", fontcolor="#495057"]; Enc1 -> Enc2 [fontcolor="#495057"]; Enc2 -> Bottleneck [label="编码为 Z", fontcolor="#495057"]; Bottleneck -> Dec1 [label="从 Z 解码", fontcolor="#495057"]; Dec1 -> Dec2 [fontcolor="#495057"]; Dec2 -> Output [label="重构 X̂", fontcolor="#495057"]; {rank=same; Input; Output;} {rank=same; Enc1; Dec1;} {rank=same; Enc2; Dec2;} }自动编码器架构图,突显了瓶颈层(潜在空间),压缩表示 Z 在此层由输入 X 生成,并从中产生重构的 X̂。这个瓶颈层的输出通常被称为潜在空间表示、编码或编码值。“潜在”表示这些表示形式捕捉了数据中隐藏或深层的结构。如果输入数据的维度是 $d$,瓶颈层通常会将其映射到维度为 $d'$ 的潜在表示 $z$,其中 $d' < d$。例如,MNIST 数据集中的一张图片可能有 $28 \times 28 = 784$ 像素(维度)。自动编码器可以设计一个瓶颈层,将其压缩到例如 $d' = 32$ 维。这个低维向量 $z$ 不仅仅是信息的随机子集。通过训练过程,在最小化重构误差的目标指导下,自动编码器学习以这种紧凑的形式保留输入数据最显著和最有用的方面。它学习去除噪声和冗余,专注于定义数据的基本特征。这种潜在表示 $z$ 中的值是学到的特征。潜在空间本身是这些表示 $z$“存在”的多维空间。潜在空间中的每个点都对应一个潜在输入的压缩版本。训练有素的自动编码器通常会以有意义的方式组织这个空间。例如,相似的输入(如相同数字的图片,或相似类型的客户行为)可能会被映射到潜在空间中相近的点,而不同的输入则映射得更远。这个潜在空间的维度 $d'$ 是你在设计自动编码器时将选择的一个重要超参数。如果 $d'$ 过小,自动编码器可能无法捕获足够的信息来准确重构输入,导致重构误差高。这有时被称为过于受限的“信息瓶颈”。如果 $d'$ 过大(接近 $d$),网络可能只会简单地将输入复制到输出,而没有学到任何有趣的深层结构(一个恒等函数,特别是当编码器和解码器有足够容量时)。这对特征提取或降维的帮助较小。目标是找到一个远小于 $d$ 的维度 $d'$,但同时又能让自动编码器学习到丰富且有信息量的表示。这种表示应该足以让解码器进行良好的重构,并且对本课程来说重要的是,可以作为其他机器学习任务的有用特征集。可以将瓶颈层视为创建输入的高效摘要或提炼后的要点。编码器的任务是编写这个摘要,而解码器的任务是将这个摘要扩展回与原始数据相似的内容。这个摘要(潜在空间表示)的质量和特性,决定了自动编码器能够实现的目标,从简单的降维到更复杂的任务,例如去噪,甚至生成新数据(这将在后续关于变分自动编码器的内容中看到)。本质上,瓶颈层及其产生的潜在空间表示是我们使用自动编码器进行特征提取时所追求的主要结果。这些学到的特征(向量 $z$)随后可以输入到其他模型中,通常能带来性能的提升或下游任务中更高效的计算。