本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【j2开奖】重磅 | 亿万词汇构建神经网络,Facebook提出语言模型训练新算法

时间:2016-10-26 17:44来源:本港台直播 作者:118开奖 点击:
参与:杜夏德、武竞 Facebook 人工智能研究(FAIR)设计出一种新式的 softmax 函数逼近,专用于 GPU,帮助其在语言模型的基础上通过巨量词汇来有效训练神经网络。 由于在语音识别、机

参与:杜夏德、武竞

Facebook 人工智能研究(FAIR)设计出一种新式的 softmax 函数逼近,专用于 GPU,帮助其在语言模型的基础上通过巨量词汇来有效训练神经网络

由于在语音识别、机器翻译或语言建模等领域的优异表现,用于序列预测的神经网络最近重新获得关注。然而这些模型都需要巨量的计算,这反而限制了它们的应用。

在语言建模领域,最近的研究进展用到了海量的大型模型,这些大型模型只能在大型 GPU 集群上训练,并且一次需要几周时间。这些处理密集型工作很棒,也有利于探索大型计算基础设备,但这些计算设备对于学术界来说通常十分昂贵,投入生产也不实际,以至于限制了研究的速度、再生产能力和结果的可用性。

意识到这种计算上的瓶颈,Facebook 人工智能研究(FAIR)设计出一种新式的 softmax 函数逼近,专用于 GPUs,帮助其在语言模型的基础上通过巨量词汇来有效训练神经网络。我们的方法叫做自适应 softmax(adaptive softmax),利用不平衡词分布形成簇(cluster),这种簇能明确地减少对计算复杂度的期望,从而规避对词汇量的线性依赖。这种方法通过利用流行架构的特殊性和矩阵-矩阵向量运算(matrix-matrix vector operations)进一步减少了训练和测试时的计算成本。这使得它特别适合于 GPU,而以往的方法,如分层 softmax,NCE 和重要性采样,都是为标准的 CPU 设计的。

FAIR 也开发并正在开源一个名为 torch-rnnlib 的库,这个库允许研究者设计出新的循环模型并在 GPU 上以最小的代价测试这些原型(prototypes)。它也允许通过绑定 torch.cudnn 无缝对接快速基线。几个标准循环网络,如 RNN、LSTM 和 GRU 都已经被部署进来,下面我们将展示如何利用这个库来设计一个新的循环网络。

这些工具和技术后来被一起用来应对标准基准,如 Euro Parl 和 One Billion word,这些都是因需要使用巨大的词汇量而复杂的训练环境,让我们无法在 GPU 上拟合一个大模型和 full softmax。结果显示我们在单一的 GPU 上每秒能处理 12500 个单词,通过标准逼近,大大升了效率,减少了从试验到结果的时间,同时得到的精确度接近于 full softmax 的精确度。这就能让学界和业界的工程师与研究者都能在短时间内在资源有限的情况下训练出最好的模型。

利用 torch-rnnlib 建立一个循环模型

循环模型的定义有很多,我遵循的是这一条:循环网络随着离散时间对变量序列建模。它遵循马尔可夫的属性,其未来的状态只取决于它的现状。最简单的循环模型是 Elman 的循环模型。根据当下的输入变量 x[t] 以及之前的状态,在每个时间步骤 t,就会输出一个 y[t]。更确切的说,Elman 的循环模型可以通过下面的等式来定义:

h[t] = f(R * h[t-1] + A * x[t]),

y[t] = B * h[t]

其中,h 代表网络(隐藏的)内在的状态,f 是 sigmoid 函数。Elman 之后就有人出了更复杂的循环模型,如 LSTM、GRU 或者 SCRNN。

什么是语言模型?

语言建模的目的是在一个给定词典中的一个词序列上学习一个概率分布。该联合分布被定义为给定状态下的词的条件分布的一个乘积。确切地说,一个 T 词序列 w[1],...,w[T] 的概率被给定为的 P(w[1],..., w[T])) = P(w[T]|w[T-1],..., w[1])...P(w[1]).

这个问题通常由基于计数统计的非参数模型解决(详见 Goodman, 2001)。最近,基于循环神经网络的参数模型在语言建模上才流行起来(例如,Jozefowicz 等人, 2016,obtained state-of-the-art performance on the 1B word dataset)。

如何用 Torch-rnnlib 建立一个标准的模型

我们给出了用于建构带有循环连接的三个不同的 API:

1.nn.{RNN, LSTM, GRU} 接口可以用来建构在所有层都带有相同数量隐藏单元的循环网络。

  

wzatv:【j2开奖】重磅 | 亿万词汇构建神经网络,Facebook提出语言模型训练新算法

2.rnnlib.recurrentnetwork 的接口能用于构建任意形状的循环网络。上一个和这个接口都为你考虑到了节省隐藏状态。

  

wzatv:【j2开奖】重磅 | 亿万词汇构建神经网络,Facebook提出语言模型训练新算法

3.nn. SequenceTable 接口能用来将计算像一个『scan』一样链接起来。nn. RecurrentTable 构建器(constructor)仅仅是一个轻量级的封装,能随着时间为你克隆循环模块。然而,要注意的是这是最低层级的接口,你还需要 rnnlib.setupRecurrent(model, initializationfunctions) 来设定循环隐藏状态行为。

  

wzatv:【j2开奖】重磅 | 亿万词汇构建神经网络,Facebook提出语言模型训练新算法

建立你自己的循环网络

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容