拆解XLNet模型设计,回顾语言表征学习的思想演进( 五 )

[x, x, x, x, x{}, x, x, x, x, x]

为了从这个向量序列计算出对应的表征向量 h,我们必须对这个向量序列进行变换 (Transformation) 和整合 (Aggregation)。循环神经网络 (Recurrent Neural Network, RNN) 通过一个递归算子实现了这个目的:

我们按照一个顺序 (从左到右) 对上述向量序列编号:

[x, x, x, x, x, x, x, x, x, x]

按照编号的顺序,在第 t 位时,循环神经网络会根据第 t-1 位的表征 h 及当前的输入 x 算出当前位置的表征 h -- 这便是序列 [x, x, ..., x] 对应的表征。可以看到输入向量的相对位置决定了循环神经网络整合信息的计算顺序,或者说相对位置决定了计算图 (Computation Graph) 的构建。

5. 自回归语言模型

在拥有循环神经网络这一序列建模利器之后,我们可以对语境进行更精细的建模。由于 RNN 的运算模式是按顺序依次处理每个词,所以语境可以是目标词前面的所有词。

对于例子 ["我 1", "今天 2", "很 3","开心 4","5","因为 6","我 7","中 8","了 9",彩票 10"],如果编号顺序是从左到右的话,对应的输入-输出对为 (["我", "今天", "很"] "开心");而从右到左则对应的是 (["彩票", "了", "中", "我", "因为", ""] "开心")。因为目标词总是语境的下一个词,所以我们并不需要输入目标词的位置信息。如前所述,词的相对位置决定了词的输入顺序,所以词的位置也不再需要输入了。

推荐阅读