我想了解"维度"的含义。在嵌入词中。
当我以NLP任务的矩阵形式嵌入一个单词时,维度扮演什么角色?有没有一个可以帮助我理解这个概念的视觉例子?
答案 0 :(得分:6)
Word嵌入只是从单词到向量的映射。单词中的维度 嵌入是指这些载体的长度。
这些映射有不同的格式。大多数预先培训的嵌入都是
可用作空格分隔的文本文件,其中每行包含一个单词
第一个位置,以及它旁边的矢量表示。如果你要拆分
这些行,您会发现它们的长度为1 + dim
,其中dim
是单词向量的维度,1
对应于正在表示的单词。有关真实示例,请参阅GloVe pre-trained
vectors。
例如,如果您下载glove.twitter.27B.zip
,请将其解压缩,然后运行以下python代码:
#!/usr/bin/python3
with open('glove.twitter.27B.50d.txt') as f:
lines = f.readlines()
lines = [line.rstrip().split() for line in lines]
print(len(lines)) # number of words (aka vocabulary size)
print(len(lines[0])) # length of a line
print(lines[130][0]) # word 130
print(lines[130][1:]) # vector representation of word 130
print(len(lines[130][1:])) # dimensionality of word 130
你会得到输出
1193514
51
people
['1.4653', '0.4827', ..., '-0.10117', '0.077996'] # shortened for illustration purposes
50
有些无关,但同样重要的是,这些文件中的行根据在嵌入式训练的语料库中找到的词频(最常见的词首先)进行排序。
您还可以将这些嵌入表示为字典 键是单词,值是表示单词向量的列表。长度 这些列表中的单词向量的维度。
更常见的做法是将它们表示为矩阵(也称为查找)
表格),维度(V x D)
,其中V
是词汇量大小(即,如何)
你有很多单词),D
是每个单词向量的维度。在
在这种情况下,您需要保留一个单独的字典,将每个单词映射到它
矩阵中对应的行。
关于角色维度扮演的问题,您需要一些理论背景知识。但简而言之,嵌入单词的空间提供了很好的属性,使NLP系统能够更好地运行。这些属性之一是具有相似含义的单词在空间上彼此接近,即具有类似的向量表示,如通过诸如Euclidean distance或cosine similarity的距离度量所测量的。
您可以可视化多个单词嵌入{3}}的3D投影,例如,看到“道路”最近的单词是“高速公路”,“道路”,以及Word2Vec 10K
嵌入中的“路由”。
有关更详细的解释,我建议您阅读Christopher Olah撰写的here“Word Embeddings”部分。
有关使用单词嵌入(为分布式表示的实例)的原因的更多理论,比使用例如单热编码(本地表示)更好,我建议阅读Geoffrey Hinton等人的this post的第一部分。
答案 1 :(得分:4)
像word2vec或GloVe这样的单词嵌入不会在二维矩阵中嵌入单词,它们使用一维向量。 "维度"指这些载体的大小。它与词汇量的大小是分开的,词汇量是你实际保留向量而不仅仅是丢弃的词的数量。
理论上,较大的向量可以存储更多信息,因为它们具有更多可能的状态。在实践中,除了300-500之外没有太多的好处,并且在一些应用中甚至更小的载体工作正常。
这是GloVe homepage的图片。
向量的维数显示在左轴上;例如,减少它会使图表更短。每列是一个单独的向量,每个像素的颜色由向量中该位置的数字确定。
答案 2 :(得分:1)
我不是专家,但我认为维度只代表已经分配给单词的变量(也就是属性或特征),尽管可能还有更多。每个维度的含义和维度的总数将特定于您的模型。
我最近在Tensor Flow库中看到了这个嵌入式可视化: https://www.tensorflow.org/get_started/embedding_viz
这特别有助于将高维模型降低到人类可感知的程度。如果您有三个以上的变量,那么可视化群集非常困难(除非您显然是Stephen Hawking)。
此wikipedia article on dimensional reduction及相关网页讨论了如何在维度中表示要素以及过多的问题。
答案 3 :(得分:1)
“维数” 表示其编码的特征总数。实际上,这是对定义的过度简化,但是稍后会谈到。
功能选择通常不是手动的,它是通过培训过程中的隐藏层来自动的。根据文献的语料库,选择最有用的维度(特征)。例如,如果文学是关于浪漫小说的,则与数学的文学相比,性别的维度更有可能被呈现。 / p>
(例如)您有神经网络为 100,000 个唯一单词生成的 100个维度的单词嵌入矢量(例如),通常,对目的的调查没有多大用处每个维度,并尝试通过“功能名称”标记每个维度。因为每个维度代表的特征可能不是简单且正交的,并且由于该过程是自动的,所以没有人确切知道每个维度代表什么。
要获得更多了解该主题的见识,您可能会发现此post有用。
答案 4 :(得分:0)
根据Neural Network Methods for Natural Language Processing
之书Goldenberg
,dimensionality
中的word embeddings
(demb
)指的是第一权重矩阵中的列数(输入之间的权重) (word2vec
之类的嵌入算法)。图像中的N
的字词嵌入为dimensionality
:
有关更多信息,请参考以下链接: https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/
答案 5 :(得分:0)
文本数据必须先转换为数字数据,然后才能输入任何机器学习算法。 单词嵌入是将每个单词映射到向量的一种方法。
在代数中,向量是空间中具有比例和方向的点。 用更简单的术语来说,向量是一维垂直数组(或者说是具有一列的矩阵),而维数是该一维垂直数组中的元素数。
像Glove,Word2vec这样的预训练单词嵌入模型为每个单词提供了多维选项,例如50、100、200、300。每个单词代表D维空间中的一个点,同义词单词彼此之间的距离更近。尺寸越高,精度越高,但计算需求也将更高。