本技术涉及一种RNN驱动的语言模型训练技术及设备,该技术将长句子训练数据分割为至少两个时间序列部分,并为每个部分计算Nce损失值;进而根据Nce损失值更新模型参数,以优化语言模型性能。
背景技术
基于RNN(Recurrent Neural Network,循环神经网络)的语言模型实际上是一种预测模型,预测空间为字典空间,得到的结果为预测空间中各个事件的后验概率。目前,考虑到计算效率的问题,在训练基于RNN的语言模型时,通常使用Nce(Noise-ContrastiveEstimation,噪声对比估计)函数。在训练模型时,将所有正样本分为n批,每一批(即batch)中包括若干条数据,针对每一批,准备一组负样本;负样本是从预设的词库中抽取出来的。利用每个batch正样本与对应的负样本,计算Nce损失;计算出Nce损失后,使用BPTT(Backpropagation Through Time,随时间反向传播)算法更新模型的参数。
发明人发现RNN使用的是随时间方向传播,即沿着时间序列一步一步向反向传播梯度,这很容易造成梯度消失。梯度消失会导致模型训练时候的梯度无法影响到参数调节,从而导致收敛不足,造成训练好的语言模型的预测结果有偏差。
实现思路