CNN/Transformer/VAE中的Encoder-Decoder有什么区别

CNN/Transformer/VAE中的Encoder-Decoder有什么区别 CNNCNN如 U-Net的 Encoder-Decoder 之所以看起来对称是因为它操作的对象是空间特征图EncoderH×W → H/2×W/2 → H/4×W/4 下采样空间缩小语义增强 DecoderH/4×W/4 → H/2×W/2 → H×W 上采样空间恢复细节恢复空间维度先缩后扩形成镜像对称本质是在做压缩-解压。Encoder图像 → 小特征图语义强分辨率低卷积提取局部特征例如边缘、纹理和形状。池化或步长卷积降低空间尺寸。越往深层分辨率越低、语义信息越强。Decoder小特征图 → 大特征图语义弱分辨率高通过反卷积、插值等方式上采样。将低分辨率特征恢复成高分辨率结果。U-Net 等模型会通过跳跃连接补回 Encoder 中的细节。关系空间维度的镜像对称Decoder 是 Encoder 的逆操作Transformerransformer 操作的对象是一维 token 序列没有空间维度的缩小-放大概念。两者的区别在于EncoderDecoder输入源序列如图像特征 token目标序列如 QuerySelf-Attention双向每个 token 能看到所有其他 token因果/掩码每个 token 只能看到自己和之前的 tokenCross-Attention无有Query 去查询 Encoder 的输出功能理解输入提取全局表示生成输出依赖 Encoder 的信息它们不是对称的而是分工的Encoder 负责理解Decoder 负责生成。Encoder源序列 → 全局表示每个 token 融合了所有上下文同时读取整个输入序列。使用自注意力建模任意位置之间的关系。输出一个上下文相关的向量序列。Decoder目标序列 Encoder输出 → 生成结果包含两类关键注意力Masked Self-Attention 只能查看已经生成的 token不能偷看未来。Cross-Attention 用当前生成状态查询 Encoder 输出从输入中寻找相关信息。关系功能上的流水线Decoder 依赖 Encoder 的输出需要注意BERT只有 Transformer Encoder。GPT主要只有 Transformer Decoder。T5、原始 Transformer完整的 Encoder–Decoder。VAEVAE 的 Encoder 和 Decoder 既不是 CNN 那样的空间对称也不是 Transformer 那样的功能分工而是一种“压缩-采样-解压”的生成式对称结构。VAE 是 Kingma Welling 在 2013 年提出的核心动机是传统自编码器AE的隐空间没有良好的结构不能直接用来做生成。所以 VAE 的关键改进是不让编码器输出一个确定的隐向量而是输出一个分布参数通常是均值和方差。VAE的Encoder-Decoder 是概率对称编码为分布 ↔ 从分布生成核心创新在于引入了潜在空间的概率建模和重参数化技巧输入图像 x ↓ Encoder → 均值 μ, 方差 σ² ↓ 重参数化采样z μ σ · ε, ε ~ N(0,1) ↓ Decoder → 重建图像 x̂VAE 的 Encoder 输出的不是一个确定的向量而是一个概率分布的参数μ 和 σ²这就是 VAE 名字中Variational变分的含义——它不是直接编码而是学习一个变分分布 q(z|x) 来逼近真实的后验分布 p(z|x)。VAE 的 Encoder 不会直接得到一个正态分布而是输出一个正态分布的参数。如果潜变量 z是 N 维标准 VAE 的 Encoder 通常需要输出2N 个参数它们定义一个对角高斯分布这里通常假设潜变量各维相互独立因此协方差矩阵是对角矩阵。神经网络一般输出而不是直接输出因为方差必须大于零log variance可以取任意实数训练更稳定为了得到近似高斯分布除了VAE必不可少的重建损失还需要增加KL散度损失推动每个输入对应的分布不要偏离标准正态分布太远但并不要求 Encoder 对每个输入都输出严格的 N(0,I)。得到高斯分布之后在进入decoder之前还需要从这个分布中采样。直接采样会阻断普通反向传播所以 VAE 使用重参数化技巧。VAE 中的重参数化reparameterization trick就是把“从 Encoder 预测的分布中随机采样”改写成从一个固定分布采样噪声再用 Encoder 输出的参数对噪声进行确定性变换。先从固定的标准正态分布采样得到之后把epsilon和标准差sigma逐元素相乘再加上均值这样得到的 z仍然服从encoder得到的高斯分布。对应代码mu, logvar encoder(x) std torch.exp(0.5 * logvar) eps torch.randn_like(std) z mu std * eps变换后随机性来自独立的 epsilon而 z对 Encoder 输出sigma和mu是普通的可微运算所以这样就能反向传播。随机采样和KL约束避免变成恒等映射。同时隐变量维度也不能过大。采样的时候还有两种方法latent_dist.sample()从高斯分布中随机采样所以同一张图片多次 encode可能得到略有不同的 latentlatent_dist.mode()直接取分布中概率最大的值。对于高斯分布众数就是均值文生图常用sample()因为标准文生图更看重latent空间连续性数据多样性对随机扰动的鲁棒性生成模型覆盖完整的数据分布。但 VOSR不是纯文生图而是输入约束很强的图像恢复任务。目标尤其强调输入字符身份不能变化所以确定性的mode()通常更合理。总结模型Encoder 做什么中间表示Decoder 做什么典型任务CNN Encoder–Decoder逐步提取局部空间特征、降低分辨率特征图上采样恢复空间分辨率分割、去噪、超分辨率Transformer Encoder–Decoder通过自注意力理解整个输入序列上下文序列结合上下文自回归生成输出序列翻译、摘要、问答VAE Encoder–Decoder把样本映射为概率分布参数随机潜变量 \(z\)从 \(z\) 重建或生成样本数据生成、表示学习、异常检测