假设我们有一个 RNN 模型,它输出在语料库上训练的给定上下文(或没有上下文)的单词的概率。我们可以将序列中每个单词的概率链接起来,以获得句子本身的整体概率。但是,因为我们是链式的,句子的概率(或可能性)会随着长度的增加而下降。即使我们使用对数概率,情况也是如此。
无论如何我们可以标准化这些概率吗?这是我在构建语言模型时面临的一个有趣的子问题。我有一个包含 900 万个句子的语料库,其长度从 2 到 30 不等。但是所有的句子都是有效的,我用这些作为语料库来训练 LM。
现在,我正在获取一个数据子集并对其进行更改,例如将句子改组或切成两半,预先或附加一个随机单词等等。这是为了创建一个不需要有效的“假句子”。我想做的是在所有有效句子的可能性上获得某种阈值,然后当我使用 RNN 计算假句子的概率时,它应该相当小或与计算的阈值不同。
tldr; 像这样的句子
"the cat sat on the red mat"
"the cat sat on a mat"
"a cat sat on the red mat with brown coffee stains"
应该都具有可比较的概率/分数/度量,而句子如
"cat cat mat on the brown red sat is"
"not mat in door on cat"
有一个较低的分数。