自制嵌入可以用于RNN,还是必须经过培训?

时间:2018-07-16 19:13:36

标签: tensorflow keras rnn word-embedding

假设我正在使用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那样的关系。顺便说一句,我不能在这里使用预制的嵌入物,并且我的样本量并不大,这就是为什么我要探索制作自己的嵌入物的原因。

1 个答案:

答案 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%。