问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

潜在空间可视化:深度学习中的数据可视化技术

创作时间:
作者:
@小白创作中心

潜在空间可视化:深度学习中的数据可视化技术

引用
CSDN
1.
https://blog.csdn.net/bunny___/article/details/140303182

潜在空间可视化是深度学习中一个重要的技术,它可以帮助我们理解模型如何处理和表示数据。本文将通过卷积自编码器(CAE)对MNIST数据集进行处理,详细介绍潜在空间可视化的基本原理和具体应用。

1. 引言

在深度学习领域,我们通常关注如何使用深度学习来解决端到端的复杂问题。然而,在本系列中,我们将更专注于了解不同的技术及其应用场景。在上一篇文章中,我们已经介绍了自动编码器(autoencoders)的基本概念和工作原理。今天,我们将深入探讨如何利用这些技术将数据可视化。

自动编码器由编码器和解码器两个组件组成。编码器将高维输入数据压缩到瓶颈层,而解码器则将压缩后的数据还原回原始输入形状。潜在空间就是数据在瓶颈层所处的空间,它包含了图像的压缩表示,这是解码器用于重建输入的唯一信息。为了实现良好的重建效果,网络必须学会在瓶颈层提取最相关的特征。

2. 数据集

我们将使用最著名的计算机视觉数据集之一:MNIST手写数字数据集。虽然MNIST是一个相对简单的数据集,但它非常适合我们今天的主题。MNIST包含28×28像素的手写数字图像。

3. 基线:自动编码器的性能

为了理解编码器能够从输入中提取什么样的特征,我们可以首先查看重建的图像。在这个例子中,瓶颈层只有32个单元,这相当于非常严重的维度缩减。即使对于一张6×6像素的图像来说,这也显得过于简陋。

上图显示了每个数字及其模糊的重建结果。我们可以看到,尽管重建效果有些模糊,但自动编码器还是成功地保留了数字的基本形状。这种模糊性正是由于在瓶颈层进行了严重的维度缩减。通过查看验证样本,我们可以确保模型没有过度拟合训练集。

4. t-SNE 可视化

什么是t-SNE?

在处理高维数据时,我们经常需要将其可视化。MNIST数据集的图像空间有784维(28×28×1),显然无法直接绘制。t-SNE(t分布随机邻域嵌入)是一种将高维空间映射到2D或3D空间的算法,同时尽量保持点之间的距离关系。我们将使用这种技术来绘制数据集的嵌入。

投影像素空间

让我们首先从图像空间开始,看看t-SNE投影是什么样子的。

从上图可以看出,一些数字已经呈现出聚集的趋势。这是因为数据集相对简单,我们可以使用简单的启发式方法对像素进行分类。例如,数字8、5、7和3由于形状相似,聚类效果不明显。

投影潜在空间

现在让我们看看潜在空间的t-SNE投影。

与图像空间的投影相比,潜在空间的投影显示了更密集的聚类。这表明,在潜在空间中,相同的数字彼此更接近。我们可以看到,数字8、7、5和3现在更容易区分,并且出现在小集群中。

5. 插值

为了进一步理解潜在空间的结构,我们可以比较图像空间和潜在空间中的插值效果。

图像空间中的线性插值

我们首先从数据集中获取两幅图像,并在它们之间进行线性插值。

这种混乱的过渡效果表明,图像空间本身的结构使得从一个图像平滑地转换到另一个图像变得不可能。

潜在空间中的线性插值

现在我们对潜在空间做同样的处理。我们取相同的起始和结束图像,并将它们输入编码器以获得它们的潜在空间表示。然后我们在两个潜在向量之间进行插值,并将这些输入到解码器中。

与图像空间的插值相比,潜在空间的插值效果更加令人信服。我们可以清楚地看到形状从一个数字慢慢地转变为另一个数字,而不是两个数字的简单混合。

6. 更多技术和样例

插值样例

在更丰富的数据集和更好的模型上,我们可以得到令人难以置信的视觉效果。

潜在空间算术

我们还可以在潜在空间中进行算术运算。这意味着我们可以添加或减去潜在空间表示,而不是简单的插值。

7. 总结

在这篇文章中,我们已经看到了几种技术来可视化嵌入在自编码器神经网络潜在空间中的学习特征。这些可视化有助于理解网络正在学习什么。在此基础上,我们可以利用潜在空间进行集群、压缩和许多其他应用程序。

8. 名词解释

端到端的复杂问题

“端到端的复杂问题”通常指的是那些需要多个步骤或组件协同工作才能解决的问题。在深度学习领域,这可能意味着一个系统需要从原始数据直接学习到最终输出,而不需要人为地进行中间步骤的干预或特征工程。

t-SNE

t-SNE(t分布随机邻域嵌入)是一种非线性降维技术,它用于将高维数据集嵌入到低维空间(通常是二维或三维),同时尽可能地保留数据点之间的相对距离。t-SNE的核心思想是将数据点在高维空间的相似度转换为在低维空间中的相似度,并通过优化过程来调整数据点的位置,使得在高维空间中距离较近的点在低维空间中也尽可能地靠近。

9. 实践

下面是一个使用t-SNE进行降维的代码示例:

import matplotlib.pyplot as plt
from sklearn.manifold import TSNE

tsne = TSNE(n_components=2)
x = [[1,2,2],[2,2,2],[3,3,3]]
y = [1,0,2]#y是x对应的标签
x_tsne = tsne.fit_transform(x)
plt.scatter(x_tsne[:,0],x_tsne[:,1],c=y)
plt.show()

10. 参考资料

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号