你好,
有没有办法在不使用beam的情况下获取生成问题的置信度分数?
我看到在使用beam时,每个token都会返回'scores'集合(我可能可以计算所有生成token的混合平均值),但是,我想知道是否可以在不使用beam>1的情况下实现这一点?
谢谢,
Anshoo
rkkpypqq1#
你好@anshoomehra,
beam size=1的分数可以在以下链接中找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。
w80xi6nr2#
你好,@anshoomehra@donglixp ,你能分享一下如何计算序列的置信度分数吗?谢谢。
hm2xizp93#
beam size=1的分数可以在以下链接找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。
谢谢!@donglixp --- 关于如何将每个token的分数融合以计算问题级别的分数有什么想法吗?我尝试了简单地对所有项求平均,但是由于一些token的得分很低,即使问题质量很好,显示出的分数仍然相当令人困惑。
vnzz0bqm4#
在 decode_seq2seq.py 的第225行,你可以像下面这样捕获预测词的分数。目前我正在对最终得分最高的词进行简单平均,但这并没有给我一个相当有意义的分数(请参阅作者上方的注解)。如果你能找到一种更好地融合这些分数的方法,请分享一下。谢谢!
if self.args.beam_size > 1: traces = {k: v.tolist() for k, v in traces.items()} output_ids = traces['pred_seq'] output_scores = traces['scores']
axr492tv5#
感谢@anshoomehra,我看到了这段代码,我想我只是在beam大小>1的所有序列中计算一个概率分数;不确定对于beam大小=1的情况会有什么期望。
@donglixp 作为后续问题,您是否在解码工作中使用beam search / 其他类型的采样(例如top k / top p等),现在看来在这个仓库中发布的代码似乎没有任何序列分数计算/进一步重新排序?谢谢。
cwdobuhd6#
关于这个@donglixp的更新,似乎有必要使用标准的top k束评分技术来筛选出不良结果。
t1rydlwq7#
感谢@anshoomehra,我看到了那段代码,我想我只是在beam大小>1的所有序列中计算一个概率分数;不确定对于beam大小=1的情况会有什么期望。
@donglixp 作为后续问题,您在解码工作中(如论文所示)是否使用了beam search / 其他类型的采样(例如 top k / top p 等),现在看来在这个仓库中似乎没有任何序列分数计算 / 进一步重新排序?谢谢。
Hi @felicitywang ,我们在unilm/s2s-ft/s2s_ft/modeling_decoding.py的第1516行使用beam search来获取前k个结果:| | kk_scores, kk_ids=torch.topk(log_scores, k=K) |
sycxhyv78#
关于这个@donglixp的更新,似乎有必要使用标准的top k束搜索技术来筛选出不好的结果。每个束搜索结果的分数可以在https://github.com/microsoft/unilm/blob/master/s2s-ft/s2s_ft/modeling_decoding.py#L1692找到。
8条答案
按热度按时间rkkpypqq1#
你好@anshoomehra,
beam size=1的分数可以在以下链接中找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。
w80xi6nr2#
你好,@anshoomehra@donglixp ,你能分享一下如何计算序列的置信度分数吗?谢谢。
hm2xizp93#
你好@anshoomehra,
beam size=1的分数可以在以下链接找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。
谢谢!@donglixp --- 关于如何将每个token的分数融合以计算问题级别的分数有什么想法吗?我尝试了简单地对所有项求平均,但是由于一些token的得分很低,即使问题质量很好,显示出的分数仍然相当令人困惑。
vnzz0bqm4#
你好,@anshoomehra@donglixp ,你能分享一下如何计算序列的置信度分数吗?谢谢。
在 decode_seq2seq.py 的第225行,你可以像下面这样捕获预测词的分数。目前我正在对最终得分最高的词进行简单平均,但这并没有给我一个相当有意义的分数(请参阅作者上方的注解)。如果你能找到一种更好地融合这些分数的方法,请分享一下。谢谢!
axr492tv5#
感谢@anshoomehra,我看到了这段代码,我想我只是在beam大小>1的所有序列中计算一个概率分数;不确定对于beam大小=1的情况会有什么期望。
@donglixp 作为后续问题,您是否在解码工作中使用beam search / 其他类型的采样(例如top k / top p等),现在看来在这个仓库中发布的代码似乎没有任何序列分数计算/进一步重新排序?谢谢。
cwdobuhd6#
关于这个@donglixp的更新,似乎有必要使用标准的top k束评分技术来筛选出不良结果。
t1rydlwq7#
感谢@anshoomehra,我看到了那段代码,我想我只是在beam大小>1的所有序列中计算一个概率分数;不确定对于beam大小=1的情况会有什么期望。
@donglixp 作为后续问题,您在解码工作中(如论文所示)是否使用了beam search / 其他类型的采样(例如 top k / top p 等),现在看来在这个仓库中似乎没有任何序列分数计算 / 进一步重新排序?谢谢。
Hi @felicitywang ,我们在unilm/s2s-ft/s2s_ft/modeling_decoding.py的第1516行使用beam search来获取前k个结果:
| | kk_scores, kk_ids=torch.topk(log_scores, k=K) |
sycxhyv78#
关于这个@donglixp的更新,似乎有必要使用标准的top k束搜索技术来筛选出不好的结果。
每个束搜索结果的分数可以在https://github.com/microsoft/unilm/blob/master/s2s-ft/s2s_ft/modeling_decoding.py#L1692找到。