fastText中Subword输入向量是什么?哈希子词向量形式困惑
Subword输入向量到底怎么回事?
先给你掰明白核心逻辑:你说的哈希得到数字,这个数字是subword在嵌入矩阵里的索引,模型实际用的输入向量是这个索引对应的嵌入向量,不是哈希数字本身。
拿你举的例子说:
- 你提到单词
eating的独热向量[0,0,0,1,0,0,0,0,0],本质是它在词汇表排第4位(索引从0算就是3),模型实际输入的是这个位置对应的嵌入向量(独热只是直观展示,训练时直接用索引查表就行)。 - 至于subword“eat”“ati”“ing”:
- 第一步,它们会被哈希映射到唯一整数索引(比如假设“eat”哈希后是5,“ati”是7,“ing”是2);
- 第二步,用这个索引去查subword嵌入矩阵,拿到对应的稠密向量。比如“eat”对应的就是矩阵第5行的向量,长这样:
[0.2, 0.1, -0.3, ...](长度和模型的嵌入维度一致); - 划重点:单词的独热向量是词汇表维度的稀疏向量,而subword的输入向量是嵌入维度的稠密向量——这是两个不同阶段的表示,独热是索引的稀疏写法,嵌入向量才是模型真正接收的输入。
额外补充(对应相关论文的核心思路)
用哈希处理subword是为了搞定未登录词(OOV)的问题:就算某个单词不在总词汇表里,拆成subword后也能靠这些小单元的组合来表示。哈希出来的数字就是个“地址”,用来快速找到嵌入矩阵里对应的向量,最终输入模型的是这个向量,不是哈希数字。
内容的提问来源于stack exchange,提问作者Gin
相关产品推荐
相关产品推荐

