在我问这个问题之前,让我先说一下这个问题已经在很多文章中得到了回答,但是我仍然很难理解词嵌入的基本格式。
让我们从句子“我喜欢狗”开始。假设采用简单的哈希方法,则可以在向量[1、4、6]中表示“我喜欢狗”,其中向量的元素对应于每个单词的哈希(假设这些不是单词中唯一的单词) 。据我了解,该向量被馈送到一个嵌入层,该层在RNN的输入张量上添加了额外的嵌入维数(不必是普通RNN)。
对于批处理中的单个条目,嵌入张量(假设嵌入尺寸为2)将如下所示:
[[4.55,6.78],->我
[3.12,8.17],->喜欢
[1.87,10.95]]->狗
此张量具有(1、3、2)形状。第二个轴的长度(在这种情况下为3)是否总是等于输入向量的长度,从而表示序列中的每个单词?或者我是否对张量流嵌入的工作原理有基本的误解?
要澄清一下:假设我有一个更长的句子,包含600个单词,那么嵌入后的每个单词会以其原始顺序被记住,并由为嵌入尺寸选择的任意大小的向量表示(我们说15) ,从而形成嵌入式张量的形状(batch_size,600,15)?
注意:这些只是随机数,并不代表任何特殊含义。
答案 0 :(得分:1)
是和是。因此,如果您具有“ I” [4.55,6.78],“ like” [3.12,8.17]和“ dogs” [1.87,10.95],则每个嵌入式表示形式大致直接等同于每个单词,因此顺序不是嵌入完成后丢失。是的,对于批量600个单词的句子和嵌入维度15,形状将是(batch_size,600,15)。我认为您间接问的问题是“每个单词是否直接与单个嵌入向量相关联”长度为embedding_dimension?” aka“'I'是否与其他单词/嵌入向量无关地直接与[4.55,6.78]相关?”在大多数情况下,答案是肯定的。
对于它的价值,将其像语言一样思考是很有用的。对每个单词进行一个哈希表示(不包括重复值)或一个具有唯一值的分类列,有点类似于经典的汉语,每个单词都具有唯一字符。嵌入式表示形式更类似于英语,其中“单词”是字母(浮点数)的固定数字(嵌入尺寸)。优势类似于我们在英语中获得优势的方式。例如,“ dog”与“ dogs”具有3个相似的字符,因为它们是非常相关的概念。同样,您可以通过将“ dog”表示为[1.23 4.56 7.89 1.12],将“ dogs”表示为[1.23 4.56 7.89 9.87]或类似的东西来利用嵌入的优势。
随机,但我希望这会有所帮助。祝你好运~~ =)