我正在对MSR-VTT数据集进行视频字幕
在此数据集中,我有10,000个视频,并且对于每个视频,我都有20个不同的字幕。
我的模型由seq2seq RNN组成。编码器的输入是视频功能,解码器的输入是嵌入式目标字幕,解码器的输出是预测字幕。
我想知道是否多次使用相同的带有不同字幕的视频是否有用。
由于找不到明确的信息,因此我尝试对其进行基准测试
我在1108个体育视频中对其进行了培训,该视频的批次大小为5,超过60个纪元。此配置每个周期大约需要211秒。
Epoch 1/60 ; Batch loss: 5.185806 ; Batch accuracy: 14.67% ; Test accuracy: 17.64%
Epoch 2/60 ; Batch loss: 4.453338 ; Batch accuracy: 18.51% ; Test accuracy: 20.15%
Epoch 3/60 ; Batch loss: 3.992785 ; Batch accuracy: 21.82% ; Test accuracy: 54.74%
...
Epoch 10/60 ; Batch loss: 2.388662 ; Batch accuracy: 59.83% ; Test accuracy: 58.30%
...
Epoch 20/60 ; Batch loss: 1.228056 ; Batch accuracy: 69.62% ; Test accuracy: 52.13%
...
Epoch 30/60 ; Batch loss: 0.739343; Batch accuracy: 84.27% ; Test accuracy: 51.37%
...
Epoch 40/60 ; Batch loss: 0.563297 ; Batch accuracy: 85.16% ; Test accuracy: 48.61%
...
Epoch 50/60 ; Batch loss: 0.452868 ; Batch accuracy: 87.68% ; Test accuracy: 56.11%
...
Epoch 60/60 ; Batch loss: 0.372100 ; Batch accuracy: 91.29% ; Test accuracy: 57.51%
然后我训练了相同 1108个体育视频,批量大小为64。
此配置每个周期大约需要470秒。
由于每个视频都有12个字幕,因此我的数据集中的样本总数为1108 * 12。
这就是为什么我采用此批处理大小(64〜= 12 * old_batch_size)的原因。因此,这两个模型启动优化器的次数相同。
Epoch 1/60 ; Batch loss: 5.356736 ; Batch accuracy: 09.00% ; Test accuracy: 20.15%
Epoch 2/60 ; Batch loss: 4.435441 ; Batch accuracy: 14.14% ; Test accuracy: 57.79%
Epoch 3/60 ; Batch loss: 4.070400 ; Batch accuracy: 70.55% ; Test accuracy: 62.52%
...
Epoch 10/60 ; Batch loss: 2.998837 ; Batch accuracy: 74.25% ; Test accuracy: 68.07%
...
Epoch 20/60 ; Batch loss: 2.253024 ; Batch accuracy: 78.94% ; Test accuracy: 65.48%
...
Epoch 30/60 ; Batch loss: 1.805156 ; Batch accuracy: 79.78% ; Test accuracy: 62.09%
...
Epoch 40/60 ; Batch loss: 1.449406 ; Batch accuracy: 82.08% ; Test accuracy: 61.10%
...
Epoch 50/60 ; Batch loss: 1.180308 ; Batch accuracy: 86.08% ; Test accuracy: 65.35%
...
Epoch 60/60 ; Batch loss: 0.989979 ; Batch accuracy: 88.45% ; Test accuracy: 63.45%
这是我的数据集的直观表示:
当我手动查看测试预测时,模型2的预测看起来比模型1的预测更准确。
此外,我对Model 2使用的批处理大小为64。这意味着,通过选择较小的批处理大小可以获得更好的结果。似乎我没有更好的模式1训练方法,因为批量已经很小了
另一方面,模型1具有更好的损失和训练准确性结果...
我应该得出什么结论?
Model 2是否会不断用新的字幕覆盖以前训练过的字幕,而不是添加新的字幕?
答案 0 :(得分:1)
我想知道多次使用相同标题不同字幕的视频是否有用。
我认为是肯定的。可以将视频解释为字幕的视频不是一对一映射。因此,可以根据视频上下文对权重进行更多的训练。
由于要字幕的视频不是一对一映射的。因此,即使神经网络无限密集,它也应该永远不会达到100%的训练精度(或损失为零),从而显着减少过度拟合。
当我手动查看测试预测时,模型2的预测看起来比模型1的预测更准确。
好!在这里可以看到相同的内容:
Model1; Batch accuracy: 91.29% ; Test accuracy: 57.51%
Model2; Batch accuracy: 88.45% ; Test accuracy: 63.45%
Increasing Generalization!!
此外,我对Model 2使用的批处理大小为64。这意味着,通过选择较小的批处理大小可以获得更好的结果。似乎我没有更好的模式1训练方法,因为批处理量已经很小。
我可能不是在这里对batch_size的值发表评论的合适人选,但将其增加一点应该值得一试。
batch_size是将先前的知识移至当前批次(基于学习率一段时间后尝试朝不同方向收敛)与一次又一次地学习相似知识(朝几乎相同方向收敛)之间的平衡。
>请记住,还有许多其他方法可以改善结果。
另一方面,模型1具有更好的损失和训练准确性结果... 我应该得出什么结论? ?
训练准确性结果和损失值说明了模型是如何根据训练数据而非验证/测试数据执行的。换句话说,损失很小的值可能意味着记忆。
Model 2是否会不断用新的字幕覆盖以前训练的字幕,而不是添加新的字幕。
取决于如何将数据拆分为批次。 是同一批次中的同一视频的多个标题,还是分布在多个批次中?
请记住,模型2具有多个标题,这可能是泛化的主要因素。从而增加了训练损失值。
谢谢!