我以自然语言处理为例,因为这是我有更多经验的领域,所以我鼓励其他人分享他们在其他领域的见解,如计算机视觉、生物统计学、时间序列等。我确信在这些领域有类似的例子。
我同意有时模型可视化可能毫无意义,但我认为这种可视化的主要目的是帮助我们检查模型是否真的与人类直觉或其他(非计算)模型相关。此外,可以对数据执行探索性数据分析。
假设我们有一个使用Gensim从维基百科语料库构建的词嵌入模型
model = gensim.models.Word2Vec(sentences, min_count=2)
然后,我们将为该语料库中至少出现两次的每个单词提供一个 100 维向量。因此,如果我们想可视化这些单词,我们必须使用 t-sne 算法将它们减少到 2 或 3 维。这是非常有趣的特征出现的地方。
举个例子:
矢量(“国王”)+矢量(“男人”)-矢量(“女人”)=矢量(“女王”)
这里每个方向都编码某些语义特征。同样可以在 3d 中完成
(来源:tensorflow.org)
看看在这个例子中,过去时如何位于与其分词相关的某个位置。性别也是一样。国家和首都也是如此。
在词嵌入世界中,更老更幼稚的模型没有这个属性。
有关更多详细信息,请参阅此斯坦福讲座。
简单的词向量表示:word2vec、GloVe
它们只限于将相似的词聚集在一起而不考虑语义(性别或动词时态没有被编码为方向)。毫不奇怪,具有语义编码作为低维方向的模型更准确。更重要的是,它们可以用来以更合适的方式探索每个数据点。
在这种特殊情况下,我不认为 t-SNE 本身用于帮助分类,它更像是对您的模型的健全性检查,有时是为了深入了解您正在使用的特定语料库。至于向量不再在原始特征空间中的问题。Richard Socher 在讲座(上面的链接)中解释说,低维向量与其更大的表示以及其他统计属性共享统计分布,这使得在低维嵌入向量中进行可视化分析是合理的。
其他资源和图像来源:
一个词值得一千个向量
学习词嵌入的动机