变换器的输出如何进行束搜索?

根据我的理解(如果我错了请纠正我),束搜索是广度优先搜索的一种,它只探索可能性“图”中最可能的b个选项的路径,其中b是束的大小。

为了计算/评分每个选项,特别是在我所从事的自然语言处理领域,我们通常通过计算一个标记的概率来计算一个可能性的得分,该概率基于在此之前的所有内容。

这在循环架构中是合理的,你只需运行你的模型和解码器,通过最佳的b个初始标记,获取第二个标记的概率,对应于每个初始标记。最终,你会得到带有概率的序列,你只需选择概率最高的那个。

然而,在变换器架构中,模型没有这种循环性,输出是整个词汇表中每个位置每个词的概率(批次大小,最大序列长度,词汇大小)。我如何解释这个输出以进行束搜索?我可以获取输入序列的编码,但由于没有使用前一个输出作为下一个标记解码的输入的这种循环性,我如何计算从最佳b个标记衍生出的所有可能序列的概率呢?


回答:

束搜索的操作与循环模型完全相同。解码器不是循环的(它是自注意力的),但它仍然是自回归的,即生成一个标记是基于之前生成的标记的条件。

在训练时,自注意力是被屏蔽的,使其只能关注当前生成的词左侧的词。这模拟了推理时的设置,因为你确实只有左侧的上下文(因为右侧的上下文尚未生成)。

唯一的区别是,在RNN解码器中,你在每个束搜索步骤中只使用最后的RNN状态。而在变换器中,你总是需要保留整个假设,并对整个左侧上下文进行自注意力处理。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注