这个问题很简单,但是这么简单的问题,OpenNMT也能让人产生误解,也算是本事啦。
我们在训练模型的时候,可以看到OpenNMT会不断生成类似:
Step 50/400; acc:11.54; ppl:1714.07; xent:7.45; lr:1.00000; 662/656 tok/s; 86 sec
这样的输出,分别代表什么含义呢?Acc还好理解,就是Accuracy的缩写,但是ppl呢,是什么loss吗?我注意到在训练过程中其最小值接近1,那应该不是loss,但是搜索了一下OpenNMT的在线帮助,竟然没搜到直接的说明,只有这里:
http://opennmt.net/OpenNMT-py/onmt.html?highlight=ppl#onmt.utils.Statistics.ppl
解释了ppl方法是compute perplexity用的,所以这个ppl实际上就是perplexity了。
如果我们直接搜索ppl和xent,将不会有什么有用的信息。
在这里看到:http://opennmt.net/OpenNMT-py/onmt.html?highlight=xent#onmt.utils.Statistics.xent
xent原来是cross entropy的意思。呵呵呵呵,这样输出真的不怕有人误会吗?