了解ELMo的演示文稿数量

时间:2019-03-01 15:04:38

标签: python nlp pytorch allennlp elmo

我正在尝试将ELMo用作较大的PyTorch模型的一部分。给出了一个基本示例here

  

这是一个torch.nn.Module子类,可计算任意数量的ELMo   表示法,并为每种方法引入可训练的标量权重。对于   例如,此代码段计算了两层表示(例如   在我们的论文的SNLI和SQuAD模型中):

from allennlp.modules.elmo import Elmo, batch_to_ids

options_file = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json"
weight_file = "https://s3-us-west-2.amazonaws.com/allennlp/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5"

# Compute two different representation for each token.
# Each representation is a linear weighted combination for the
# 3 layers in ELMo (i.e., charcnn, the outputs of the two BiLSTM))
elmo = Elmo(options_file, weight_file, 2, dropout=0)

# use batch_to_ids to convert sentences to character ids
sentences = [['First', 'sentence', '.'], ['Another', '.']]
character_ids = batch_to_ids(sentences)

embeddings = elmo(character_ids)

# embeddings['elmo_representations'] is length two list of tensors.
# Each element contains one layer of ELMo representations with shape
# (2, 3, 1024).
#   2    - the batch size
#   3    - the sequence length of the batch
#   1024 - the length of each ELMo vector

我的问题与“陈述”有关。您可以将它们与普通的word2vec输出层进行比较吗?您可以选择许多 ELMo如何进行回馈(增加第n维),但是这些生成的表示形式之间有什么区别,它们的典型用途是什么?

为了给您一个想法,对于以上代码,embeddings['elmo_representations']返回一个包含两个项目(两个表示层)的列表,但是它们是相同的。

简而言之,如何在ELMo中定义“表示”?

1 个答案:

答案 0 :(得分:1)

请参见the original paper的3.2节。

  

ELMo是biLM中中间层表示形式的特定于任务的组合。 L层biLM为每个令牌计算一组2L + 1个表示形式

以前在第3.1节中说过:

  最新的最新神经语言模型计算上下文无关的令牌表示(通过令牌嵌入或字符上的CNN),然后将其传递给前LSTM的L层。在每个位置k,每个LSTM层输出一个上下文相关的表示。顶层LSTM输出用于通过Softmax层预测下一个令牌。

为回答您的问题,这些表示形式是这些基于L LSTM的上下文相关表示形式。