趋近智
当编码器将输入数据压缩成潜在表示后,解码器便开始工作。它的主要任务是从这种压缩形式中尽可能忠实地重建原始输入。解码器的设计并非次要,它与编码器配合工作。一个良好设计的解码器能有效地将学到的潜在特征转换回输入空间,这反过来有助于确保编码器学到有意义且有用的特征。下面我们来考察一些设计解码器网络的方法。
一种被广泛采用且通常有效的设计解码器的方法是使其成为编码器的镜像。如果编码器通过一系列层逐步降低输入的维度,那么解码器将逐步增加维度。
Input -> 256 -> 128 -> Latent_Dim,那么对称解码器的结构将是 Latent_Dim -> 128 -> 256 -> Output。这种对称性提供了一种平衡的架构,确保解码器具有相似的能力来“展开”或“解压”编码器已“折叠”或“压缩”的内容。
一张图示对称自编码器架构(带密集层)的示意图。解码器镜像了编码器的结构。
解码器中激活函数的选择,尤其是输出层的激活函数,直接与输入数据的性质和预处理有关。
解码器最后一层的激活函数必须选择与原始输入数据的范围和分布相匹配的。
sigmoid 激活函数是一个常用选择。它将输出值压缩到这个确切的范围。
sigmoid(x)=1+e−x1
线性 激活(意味着不应用任何激活函数)是合适的。输出可以是任何实数值。tanh 激活函数是合适的,因为其输出也在此范围内。
tanh(x)=ex+e−xex−e−x
正确选择这一点对于有效重建来说是根本的。如果您的输入像素在 [0,1] 范围内,但解码器的输出层使用线性激活,它可能会产生远超出此范围的值,从而导致重建和学习效果不佳。
对于解码器中的隐藏层,选择与编码器类似。
目标是为解码器提供足够的非线性,使其能够学习从潜在空间转换回原始数据空间的复杂映射。
解码器中输出层激活函数的选择与您将用于训练的损失函数密切相关。
sigmoid 激活,通常会将其与二元交叉熵 (BCE) 损失函数搭配使用,特别是当输入可以被视为概率或二元值时。对于 [0,1] 范围内的像素值,BCE 通常效果良好。线性 激活(或在输入范围合适时使用 ReLU/tanh),您最常会使用均方误差 (MSE) 损失。MSE 衡量实际值与重建值之间的平均平方差。我们将在“为自编码器选择合适的损失函数”一节中更详细地介绍损失函数,但在设计解码器时记住这种关系是很好的。
虽然对称性是一个好的起点,但它并非严格要求。
通过仔细考量这些方法,您可以设计一个能有效重建数据的解码器,使得自编码器在其瓶颈层中学到强大的特征。下一步是选择合适的损失函数来引导这个学习过程。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造