我正在关注这个博客。在其中他谈到了如何在 keras 中构建语言模型。他展示了如何在 keras 中构建一个简单的模型。
分离后,我们需要对输出字进行一次热编码。这意味着将其从整数转换为 0 值向量,每个值对应词汇表中的每个单词,1 表示单词整数值索引处的特定单词。
这样模型就可以学习预测下一个单词的概率分布,并且除了下一个实际单词之外的所有单词的学习基础事实都是 0。
Keras 提供了 to_categorical(),可用于对每个输入-输出序列对的输出单词进行热编码。
他使用以下内容:
y = to_categorical(y, num_classes=vocab_size)
就他而言,词汇量是可控的。我正在处理大小> 1 亿的词汇量。我想我不应该像他那样对输出使用 one-hot 编码。有什么替代方案吗?
y
的嵌入层。对于 100M 的 voca,这很容易给出几十亿个参数
到 2024 年,答案将是具有固定词汇量的子词分词器,例如 BPE 或 SentencePiece。