Resumo: [NAACL18 Best Paper] Deep contextualized word representations


(Christian S. Perone) #1

Segue um resumo do paper do ELMo, que ganhou o prêmio de melhor artigo no NAACL 2018. Um dos avanços mais importantes em relação a word embeddings/sentence embeddings deste ano na minha opinião.

Título: Deep contextualized word representations
Autores: Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, Luke Zettlemoyer
ArXiv: 1802.05365

Representações de palavras (word embeddings) tradicionais como o Word2Vec, GloVe, etc, produzem uma representação para cada token (palavra, ou sub-palavra no caso do fastText) independente do contexto em que a palavra ocorre na frase. Entretanto, representações que ignoram o contexto, não conseguem explorar a polissemia, onde uma palavra pode ter um significado muito diferente dependendo do contexto (quem estiver interessado sobre a relação destas representações, eu escrevi um post sobre a relação delas e de como são aprendidas em relação a filosofia da linguagem).

O ELMo (Embeddings from Language Models), representação proposta pelo artigo, é baseado em um modelo de linguagem neural (estes modelos tem esse nome porque modelam a linguagem utilizando uma rede neural, não confundir com rede neural biológica). A vantagem destes modelos é que a representação de um token (palavra, etc) é baseado não em co-ocorrência como no caso do word2vec, mas sim em todo o contexto.

O modelo que o ELMo utiliza é um model bi-direcional (que combina predição de tokens no sentido natural de leitura tanto quanto no sentido reverso, o que facilita muito a predição, especialmente em NLP). Ele concatena no mesmo feature vector a representação de múltiplos níveis da rede, incorporando dessa forma representações que contém informações superficiais (que são predictors do número de tokens no contexto, etc) e também representações que contém informação semântica. o ELMo porém não é apenas uma representação, ele é um módulo que contém as representações e também um peso para cada nível delas onde durante o treino (ao incorporar este módulo) a rede aprende estes pesos de cada representação de acordo com a task, e funciona como um tipo de atenção (attention) sobre os múltiplos níveis de representação que ele extraiu (fórmula abaixo):

\mathbf{ELMo}^{task}_k = E(R_k; \Theta^{task}) = \underbrace{\gamma^{task}}_{\text{escala vetor inteiro}} \sum_{j=0}^L \underbrace{s^{task}_j}_{\text{pesos}} \underbrace{\mathbf{h}^{LM}_{k,j}}_{\text{feature cada camada}}

(na fórmula acima, dá para ver os pesos representados pelo s^{task}_j, ele também incorpora um parâmetro representado por \gamma para controlar a escala do vetor inteiro após o somatório dos pesos de atenção com os vetores de representação de cada camada).

O inconveniente deste modelo é que ele é obviamente mais lento que modelos rasos como o word2vec e também não produz resultados determinísticos, ou seja, cada palavra pode ter uma representação diferente dependendo do contexto que foi utilizado no language model.

Os resultados em várias tasks são mostradas na tabela abaixo do paper:

Como se pode notar, o ELMo produziu melhoria em todas tasks em que ele foi incorporado. Ele também foi um dos melhores modelos em várias tasks onde fizemos a avaliação usando o bag-of-words (sensível a permutação nesse caso por conta do language model) do ELMo, o resumo deste outro paper está neste link.

Um exemplo que mostra a importância da polissemia é este abaixo (retirado do paper também):

Para quem tiver interesse, existem vários modelos pré-treinados do ELMo no framework que os autores mantém: AllenNLP. Neste framework o módulo do ELMo já vem com a opção para você gerar os embeddings apenas ou também para incorporar o módulo inteiro (juntamente com os parâmetros de atenção) no seu modelo.


(Christian S. Perone) #2

Coincidentemente saiu hoje o paper “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding” (https://arxiv.org/abs/1810.04805), que parece ser bem interessante também.