使用神经网络进行序列预测是众所周知的计算机科学问题,在语音识别、机器翻译、语言建模和其他领域中都有着广泛的应用。这种预测使用的模型对计算能力要求很高,这限制了它们的实际应用。
Facebook AI Research的科学家设计了自适应的softmax算法,这是一种为GPU定制的近似算法,可在庞大的单词量基础上高效地训练神经网络。如公开发表的论文中所描述的,自适应softmax利用单词在大语料库中的不均衡分布,形成可以最小化计算复杂度的群集。完全softmax与词汇库大小线性相关,而自适应softmax是次线性相关的,并且针对GPU进行了优化。
在开发softmax的同时,Facebook研究人员发布了开源库torch-rnnlib,帮助研究人员设计和测试GPU中的递归模型。有了torch.cudnn,可以使用NVIDIA CUDA Deep Neural Network库轻松访问基线。RNN、LSTM、GRU和其他递归神经网络都有具体的实现,研究人员可以很容易地把它们用于递归神经网络的设计。
Facebook研究人员在单个GPU上对该算法进行测试,速度达到了每秒12500个单词,同时保持精确度接近完全softmax。从基准困惑度来看,谷歌公司的Jozefowicz等人在2016年使用32个GPU训练了3个星期得到30的困惑度(越低越好),同时使用18个GPU训练了几天得到44的困惑度。Google使用Tensorflow实现的LSTM模型发布在Github上,它的主要作者在Reddit的相关话题中提出了一个有趣的方法来解释困惑度。相反地,自适应softmax可以在大约14小时内达到50的困惑度,在一两天内达到43.9的困惑度以及在六天内达到39.8的困惑度。如果没有CuDNN库,性能下降约30%。所有工具和技术都针对EuroParl和十亿字语料库进行过测试,这些语料库是当前可获得的最大的几个语料库。