比较:Tensorflow中实现稀疏编码的不同方法
点击上方关注,All in AI中国
作者:Jae Duk Seo
我一直在研究稀疏编码和实现它的不同方法,在这篇文章中,我会比较它们,以下是详细的情况。
- 案例a:纯自动编码
- 案例b:具有L2正则化的自动编码器
- 案例c:吴恩达课程中的稀疏自动编码器
- 案例d:用于稀疏编码的简单、高效和神经算法
- 案例e:k-Sparse 自编码器
论文地址:https://arxiv.org/pdf/1503.00778.pdf
论文地址:https://arxiv.org/pdf/1312.5663.pdf
简介、数据集和一般理念
本文已经假设读者对神经网络和自编码器有一定的了解,所以我不会详细介绍。 另外,我将仅介绍使用自动编码器进行稀疏编码的方法。 请记住,超参数设置相同,但并不能保证它在每种情况下都是最佳的!最后,我使用的所有数据都来自MNIST数据集。
橙色框→矢量形式的原始数据
红盒→压缩数据
蓝盒→重建数据
自编码器的一般思想非常简单,即在压缩后重建原始数据。 我们在今天的帖子中要看到的是学习权重(橙色框和红框之间的权重),因为这些权重代表我们捕获的数据(或特征)。
案例a:纯自编码器的结果
500 epoch学习权重的进展
从上面的进展中,我们可以注意到一些事情,学到的权重(或特征)并不特定于某些数字。这是因为由于网络可以使用学习字典中的所有原子来重建原始数据,因此不需要为给定数据学习专门的过滤器。
上图→原始数据
下图→重构数据
重构数据有点模糊,但通常它包含数字的正确形状。
上图→具有对比度归一化的学习权重
中间图像→没有对比度的学习权重归一化
正确的图像→训练期间的成本
当我们再次查看学习的权重时,我们可以再次观察到过滤器不是特定于某些数字。
案例b的结果:具有L2正则化的自编码器
当我们将L2正则化添加到原始自动编码器时,我们看不到学习权重之间的极端差异。这很自然,因为在重建原始数据时,网络仍然可以完全访问字典中的所有原子。
上图→原始数据
下图→重构数据
同样,与纯自编码器类似,重构数据模糊但仍保留一般的形状。
上图→具有对比度归一化的学习权重
中间图像→没有对比度的学习权重归一化
正确的图像→训练期间的成本
我们仍然看不到特定于某些数字的过滤器。
案例c的结果:来自吴恩达课程的稀疏自动编码器
当我们在隐藏层中引入稀疏性概念时,并非字典中的所有原子都可以使用。我们可以清楚地观察到,所学习的滤波器对某些数字变得更加具体,并且在最后epoch之后,滤波器代表了一个数字的笔划。
上图→原始数据
下图→重构数据
我个人认为,重构的数据比其他两个(上图)更模糊,但它们清晰可辨。
上图→具有对比度归一化的学习权重
中间图像→没有对比度的学习权重归一化
正确的图像→训练期间的成本
当我们可视化学习的权重时,我们可以看到网络正在尝试从给定数据中提取不同的笔画。
案例d的结果:用于稀疏编码的简单、高效和神经算法
如果没有重构损失函数进行优化,我们可以观察到收敛需要更长的时间。然而,我们可以观察到,如果要使用字典中的某个原子,它会产生类似于我们有稀疏概念时的过滤。 (案例c)
上图→原始数据
下图→重建数据
这种方法的一个缺点是没有重建损失,虽然它产生了更清洁的滤波器,但它不能重构原始数据以及其他方法。
上图→具有对比度归一化的学习权重
中间图像→没有对比度的学习权重归一化
正确的图像→训练期间的成本
当我们可视化学习的权重时,我们可以看到这种方法的优点,即它可以生成更清晰的过滤器。
案例e的结果:k-Sparse 自编码
对于给定的数据,顶级K稀疏自编码器在汇聚到最优点时要快得多。我们可以观察到,学习的权重是干净的,同时捕捉到笔划的特征。
上图→原始数据
下图→重构数据
由于存在重建误差,与情况d相比,重构数据更清晰,但是,我们可以清楚地观察到它在这里和那里缺乏对比度的事实。
上图→具有对比度归一化的学习权重
中间图像→没有对比度的学习权重归一化
正确的图像→训练期间的成本
同样,学习过滤器在捕获笔画类型功能时更加清晰。
互动代码
如欲取得案例a的代码,请点击。
(https://colab.research.google.com/drive/15vST8Gma0uyQa1DOwO5weUWQ-I55FQoG)
请按此进入案例b的代码。
(https://colab.research.google.com/drive/1m2IfnKFdXN5KMOvDMfFSj4vc94kcch73)
请按此进入案例c的代码。
(https://colab.research.google.com/drive/1-OHYBSYxsQ0dYRvq5wzzBhzlQRs2p169)
请按此进入案例d的代码。
(https://colab.research.google.com/drive/1HtXdq6hcX2rbywjl8I1BnLmelXy7P2sZ)
如欲取得个案e的代码,请按此。
(https://colab.research.google.com/drive/1J6cTgJnUXi64ndOx7X_1eoiStGzpt4fU)