unilm 生成问题置信度分数

nbysray5  于 5个月前  发布在  其他
关注(0)|答案(8)|浏览(67)

你好,

有没有办法在不使用beam的情况下获取生成问题的置信度分数?

我看到在使用beam时,每个token都会返回'scores'集合(我可能可以计算所有生成token的混合平均值),但是,我想知道是否可以在不使用beam>1的情况下实现这一点?

谢谢,

Anshoo

rkkpypqq

rkkpypqq1#

你好@anshoomehra,

beam size=1的分数可以在以下链接中找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。

w80xi6nr

w80xi6nr2#

你好,@anshoomehra@donglixp ,你能分享一下如何计算序列的置信度分数吗?谢谢。

hm2xizp9

hm2xizp93#

你好@anshoomehra,

beam size=1的分数可以在以下链接找到:https://github.com/microsoft/unilm/blob/master/src/pytorch_pretrained_bert/modeling.py#L1449。

谢谢!@donglixp --- 关于如何将每个token的分数融合以计算问题级别的分数有什么想法吗?我尝试了简单地对所有项求平均,但是由于一些token的得分很低,即使问题质量很好,显示出的分数仍然相当令人困惑。

vnzz0bqm

vnzz0bqm4#

你好,@anshoomehra@donglixp ,你能分享一下如何计算序列的置信度分数吗?谢谢。

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']
axr492tv

axr492tv5#

感谢@anshoomehra,我看到了这段代码,我想我只是在beam大小>1的所有序列中计算一个概率分数;不确定对于beam大小=1的情况会有什么期望。

@donglixp 作为后续问题,您是否在解码工作中使用beam search / 其他类型的采样(例如top k / top p等),现在看来在这个仓库中发布的代码似乎没有任何序列分数计算/进一步重新排序?谢谢。

cwdobuhd

cwdobuhd6#

关于这个@donglixp的更新,似乎有必要使用标准的top k束评分技术来筛选出不良结果。

t1rydlwq

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) |

sycxhyv7

sycxhyv78#

关于这个@donglixp的更新,似乎有必要使用标准的top k束搜索技术来筛选出不好的结果。
每个束搜索结果的分数可以在https://github.com/microsoft/unilm/blob/master/s2s-ft/s2s_ft/modeling_decoding.py#L1692找到。

相关问题