這個問題很簡單,但是這麼簡單的問題,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的意思。呵呵呵呵,這樣輸出真的不怕有人誤會嗎?