假设我正在使用100个单词的词汇量训练RNN进行分类。我可以跳过嵌入并将句子作为单热点向量传递,但是将单热点向量用于100个特征的空间似乎在内存方面非常浪费。随着词汇的增长,情况变得越来越糟。有什么原因导致我无法创建自己的嵌入,将0-100中的每个值都转换为二进制并存储为长度为7的数组,即0=[0,0,0,0,0,0,0]
,1=[1,0,0,0,0,0,0]
,..., 100=[1,1,0,0,1,0,0]
?我意识到维数很低,但除此之外,我不确定这种随机嵌入是否是个坏主意,因为单词向量之间没有像GLoVe那样的关系。顺便说一句,我不能在这里使用预制的嵌入物,并且我的样本量并不大,这就是为什么我要探索制作自己的嵌入物的原因。
答案 0 :(得分:0)
很好的逻辑,但它缺少嵌入的两个重要功能。
1)我们使用词嵌入来获得相似词的几乎相似的矢量表示。 例如,苹果和芒果将具有几乎相同的表示形式。板球和足球将具有几乎相同的表示形式。您可能会问为什么这有好处。答案是,想像一下,我们大部分只在Apple上训练了Model。如果我们的测试与Mangos有关,即使我们没有对Mangoes进行明确培训,我们也会得到适当的答案。
ex: Training: I like Apples, I drink apple juice every day.
Testing: I like Mangoes, I drink _____ juice every day.
即使我们没有明确地对芒果进行训练,空白处仍将填充“芒果”。 这通过对芒果和苹果使用相似的矢量表示来实现。您的方法无法实现。
2)您是否不认为即使按照您的逻辑向量也将是稀疏的?我同意,与One hot编码相比,它更好,但与Word Embeddings相比,它没有。 90%的单词嵌入向量都不为零。但就您而言,只有50%。