LSTM模型训练精准率高测试精准率很低解决办法

       前段时间训练一个问答模型(QA)时,发现一个有趣的问题,模型采用LSTM技术,encode-decode架构(见下图)。使用小语料集训练,测试精准率还行,当语料集达到2000组时,问题来了,训练精准率很高,但测试精准率非常低。

LSTM模型训练精准率高测试精准率很低解决办法_第1张图片

小语料集与大语料集测试精准率对比:

LSTM模型训练精准率高测试精准率很低解决办法_第2张图片

 

 

       测试精准率低的让人有点伤心,训练集增多,除了batch_size改大,其它没有修改呀,感觉一点思路都没有了,被这个坑卡住了3天,毫无进展。某天,正看着窗外的爬山虎发呆,突然想起培训老师说过,“数据是一批一批训练的,训练完一批数据以后才更新一次梯度”,一批一批训练,这个场景和成语“滥竽充数”很像呀。训练时是一批一批的训练,更新梯度依据的是这一批数据的平均loss值,单条对话的差异给抹平了,但测试一条条对话进行的,就好比南郭先生,整个乐队一起演奏时,谁也不知道他根本不会吹竽。马上把batch_size改为1进行一条一条的训练(随机梯度),发现效果非常好,问题解决。

LSTM模型训练精准率高测试精准率很低解决办法_第3张图片

 

 

你可能感兴趣的:(NLP)