自动编码器:从基础到卷积架构的深入探索
1. 自动编码器的挑战与改进思路
当系统试图仅用 20 个数字来表示 104 张图片时,表现不佳并不意外。以老虎图片为例,经过自动编码器压缩和解压缩后,结果与老虎相差甚远。这是因为可利用的信息有限,难以精确还原图像。
为了提高性能,我们可以增加瓶颈层(即潜在层)的神经元数量,但这违背了我们尽可能压缩输入的初衷,因此应作为最后手段。更好的方法是考虑更复杂的架构,而非仅使用目前的两层密集层。
2. 使用 MNIST 数据集测试简单自动编码器
为了比较不同的自动编码器架构,我们使用 MNIST 数据集。这是一个免费的大型数据库,包含 0 到 9 的手写灰度数字图像,分辨率为 28×28 像素。
要在该数据集上运行简单自动编码器,我们需要调整输入和输出层的大小,使其适应 MNIST 数据。每个图像有 28×28 = 784 个像素,因此输入和输出层现在需要 784 个元素。我们将 2D 图像展平为一个大列表,然后输入到网络中,同时保持瓶颈层为 20。
训练该自动编码器 50 个周期(即对所有 60,000 个训练示例运行 50 次)后,结果显示,两层网络能够将每个 784 像素的输入压缩为 20 个数字,再还原为 784 像素。虽然生成的数字有些模糊,但仍可识别。
当我们将潜在变量数量减少到 10 时,结果明显变差。例如,数字 2 看起来像被咬了一口的 3,数字 4 看起来像 9。这表明自动编码器需要足够的计算能力(即足够的神经元和权重)来编码数据,以及足够的潜在变量来找到输入的有用压缩表示。
3. 深度自动编码器的表现
超级会员免费看
订阅专栏 解锁全文
14万+

被折叠的 条评论
为什么被折叠?



