Facebook 基于十亿单词量构建了一个高效的神经网络模型

阅读数:1167 2016 年 12 月 21 日

话题:语言 & 开发架构AI

使用神经网络进行序列预测是众所周知的计算机科学问题,在语音识别、机器翻译、语言建模和其他领域中都有着广泛的应用。这种预测使用的模型对计算能力要求很高,这限制了它们的实际应用。

Facebook AI Research 的科学家设计自适应的 softmax 算法,这是一种为 GPU 定制的近似算法,可在庞大的单词量基础上高效地训练神经网络。如公开发表的论文中所描述的,自适应 softmax 利用单词在大语料库中的不均衡分布,形成可以最小化计算复杂度的群集。完全 softmax 与词汇库大小线性相关,而自适应 softmax 是次线性相关的,并且针对 GPU 进行了优化。

在开发 softmax 的同时,Facebook 研究人员发布了开源库torch-rnnlib,帮助研究人员设计和测试 GPU 中的递归模型。有了torch.cudnn,可以使用NVIDIA CUDA Deep Neural Network库轻松访问基线。RNNLSTMGRU和其他递归神经网络都有具体的实现,研究人员可以很容易地把它们用于递归神经网络的设计。

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十亿字语料库进行过测试,这些语料库是当前可获得的最大的几个语料库。

查看英文原文Facebook Builds an Efficient Neural Network Model over a Billion Words


感谢薛命灯对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。