【问题标题】:How to evaluate inference accuracy for seq2seq video captionnig model?如何评估 seq2seq 视频字幕模型的推理准确性?
【发布时间】:2019-12-30 08:08:15
【问题描述】:

我已经建立了一个视频字幕模型。
它由一个Seq2seq模型组成,以视频为输入,输出自然语言

我获得了非常好的测试结果但可怕的推理结果:

Epoch 1 ; Batch loss: 5.181570 ; Batch accuracy: 60.28% ; Test accuracy: 00.89%
...
Epoch 128 ; Batch loss: 0.628466 ; Batch accuracy: 96.31% ; Test accuracy: 00.81% 

说明

由于我的准确度函数,这个准确度很低:它逐字比较给定的结果和标题。

由于教师的强制机制,此计算适用于训练,但不适用于推理。

示例

真实的描述:

  • a football match is going on <end>
  • the football player are made a goal <end>
  • the crowd cheers as soccer players work hard to gain control of the ball <end>

生成的描述:

a group of young men play a game of soccer <end>

我的模型正确地理解了正在发生的事情,但它并没有像等待的描述那样准确地(逐字地)表达它......
对于这个具体的例子,准确度值只有 1/31。

如何明智地计算推理精度?

我想过提取句子的关键字。然后尝试查看是否可以在字幕中找到预测句子中包含的所有关键字。
但我还必须检查句子是否是正确的英文句子......

也许您想用一种更简单的方法来计算准确度。告诉我!

【问题讨论】:

    标签: tensorflow deep-learning recurrent-neural-network seq2seq


    【解决方案1】:

    用户Bleu Score 又名双语评估学生分数,用于比较假设和参考。

    def bleu_score(hypotheses, references):
        return nltk.translate.bleu_score.corpus_bleu(references, hypotheses)
    

    例子:

    # two references for one document
    from nltk.translate.bleu_score import corpus_bleu
    references = [[['this', 'is', 'a', 'test'], ['this', 'is' 'test']]]
    hypotheses = [['this', 'is', 'a', 'test']]
    score = corpus_bleu(references, hypotheses)
    print(score)
    

    输出:

    1.0
    

    其他方法有:

    1. 流星

    2. ROUGE_L

    3. 苹果酒

    关注:https://github.com/arjun-kava/Video2Description/blob/VideoCaption/cocoeval.py

    【讨论】:

    • 嗯,使用 BLEU 分数,我在同一个示例中获得了 1.6034157163765524e-231 的分数。我认为 BLEU 用于具有相同含义但以其他方式编写的句子。在这里,一些字幕描述了视频中的不同细节。
    • 您可以使用答案中更新的其他方法。通常,BLEU 版本是验证此类问题的标准。
    猜你喜欢
    • 2019-09-16
    • 2016-08-08
    • 2018-08-26
    • 2021-08-26
    • 1970-01-01
    • 2020-06-24
    • 2015-06-18
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多