Entender as técnicas de aprendizado profundo usadas para processamento de linguagem natural (NLP)

Concluído

As técnicas estatísticas eram relativamente boas em tarefas de processamento de linguagem natural (NLP), como classificação de texto. Para tarefas como tradução, ainda havia muito espaço para melhorias.

Uma técnica recente que avançou o campo de processamento de linguagem natural (NLP) para tarefas como tradução é o aprendizado profundo.

Quando você deseja traduzir texto, não deve apenas traduzir cada palavra para outro idioma. Talvez você se lembre dos serviços de tradução de anos atrás que traduziam frases muito literalmente, muitas vezes resultando em resultados interessantes. Em vez disso, você deseja que um modelo de linguagem entenda o significado (ou a semântica) de um texto e use essas informações para criar uma frase gramaticalmente correta no idioma de destino.

Entender inserções de palavras

Um dos principais conceitos introduzidos pela aplicação de técnicas de aprendizado profundo ao NLP são as inserções de palavras. Inserções de palavras resolveram o problema de não poder definir a relação semântica entre palavras.

Antes das incorporações de palavras, um desafio predominante em NLP era detectar a relação semântica entre palavras. As inserções de palavras representam palavras em um espaço de vetor, para que a relação entre palavras possa ser facilmente descrita e calculada.

As inserções de palavras são criadas durante o aprendizado auto-supervisionado. Durante o processo de treinamento, o modelo analisa os padrões de cooccurrência de palavras em frases e aprende a representá-los como vetores. Os vetores representam as palavras com coordenadas em um espaço multidimensional. A distância entre palavras pode então ser calculada determinando a distância entre os vetores relativos, descrevendo a relação semântica entre palavras.

Imagine que você treine um modelo em um grande corpo de dados de texto. Durante o processo de treinamento, o modelo descobre que as palavras bike e car geralmente são usadas nos mesmos padrões de palavras. Ao lado de localizar bike e car no mesmo texto, você também pode encontrar cada uma delas para serem usadas ao descrever coisas semelhantes. Por exemplo, alguém pode dirigir um bike ou um car ou comprar um bike ou um car em uma loja.

O modelo aprende que as duas palavras geralmente são encontradas em contextos semelhantes e, portanto, plota a palavra vetores para bike e car perto umas das outras no espaço de vetor.

Imagine que temos um espaço de vetor tridimensional em que cada dimensão corresponde a um recurso semântico. Nesse caso, digamos que as dimensões representem fatores como tipo de veículo, modo de transporte e atividade. Em seguida, podemos atribuir vetores hipotéticos às palavras com base em suas relações semânticas:

Diagram showing word embeddings for bike and car in a vector space, compared to drive and shop.

  1. Boat [2, 1, 4] está perto de drive e shop, refletindo que você pode dirigir um barco e visitar lojas perto de corpos d'água.
  2. Car [7, 5, 1] mais perto de bike do que boat, pois carros e bicicletas são usados em terra e não na água.
  3. Bike [6, 8, 0] está mais próximo de drive na dimensão de atividade e próximo de car na dimensão de tipo de veículo.
  4. Drive [8, 4, 3] é próximo de boat, car e bike, mas longe de shop, pois descreve um tipo diferente de atividade.
  5. Shop [1, 3, 5] está mais próximo de bike, pois essas palavras são mais comumente usadas juntas.

Observação

No exemplo, um plano tridimensional é usado para descrever inserções de palavras e espaços de vetor em termos simples. Espaços vetoriais geralmente são planos multidimensionais com vetores que representam uma posição nesse espaço, semelhante às coordenadas em um plano bidimensional.

Embora as incorporações de palavras sejam uma ótima abordagem para detectar a relação semântica entre palavras, elas ainda têm seus problemas. Por exemplo, palavras com intenções diferentes como love e hate geralmente aparecem relacionadas porque são usadas em contexto semelhante. Outro problema era que o modelo usaria apenas uma entrada por palavra, resultando em uma palavra com significados diferentes como bank para ser semanticamente relacionada a uma matriz selvagem de palavras.

Adicionar memória a modelos de NLP

Entender o texto não é apenas entender palavras individuais, apresentadas isoladamente. As palavras podem diferir em seu significado, dependendo do contexto em que são apresentadas. Em outras palavras, a frase em torno de uma palavra importa para o significado da palavra.

Usando RNNs para incluir o contexto de uma palavra

Antes do aprendizado profundo, incluir o contexto de uma palavra era uma tarefa muito complexa e dispendiosa. Um dos primeiros avanços na inclusão do contexto foram as Redes neurais recorrentes (RNNs).

As RNNs consistem em várias etapas sequenciais. Cada etapa usa uma entrada e um estado oculto. Imagine a entrada em cada etapa como uma nova palavra. Cada etapa também produz uma saída. O estado oculto pode servir como uma memória da rede, armazenando a saída da etapa anterior e passando-a como entrada para a próxima etapa.

Imagine uma frase como:

Vincent Van Gogh was a painter most known for creating stunning and emotionally expressive artworks, including ...

Para saber qual palavra vem a seguir, você precisa se lembrar do nome do pintor. A frase precisa ser concluída, pois a última palavra ainda está ausente. Uma palavra ausente ou mascarada em tarefas NLP geralmente é representada com [MASK]. Usando o token especial [MASK] em uma frase, você pode permitir que um modelo de linguagem saiba que ele precisa prever qual é o token ou valor ausente.

Simplificando a frase de exemplo, você pode fornecer a seguinte entrada para um RNN: Vincent was a painter known for [MASK]

Diagram showing the sentence tokenized to present the most important words in a sentence as individual tokens.

A RNN usa cada token como uma entrada, processa-o e atualiza o estado oculto com uma memória desse token. Quando o próximo token é processado como nova entrada, o estado oculto da etapa anterior é atualizado.

Por fim, o último token é apresentado como entrada para o modelo, ou seja, o token [MASK]. Indicando que há informações ausentes e que o modelo precisa prever seu valor. Em seguida, o RNN usa o estado oculto para prever que a saída deve ser algo como Starry Night

Diagram showing a recurrent network with multiple steps. Each step takes an input and hidden state as input and produces an output.

No exemplo, o estado oculto contém as informações Vincent, is, painter e know. Com RNNs, cada um desses tokens é igualmente importante no estado oculto e, portanto, igualmente considerado ao prever a saída.

As RNNs permitem que o contexto seja incluído ao decifrar o significado de uma palavra em relação à frase completa. No entanto, como o estado oculto de um RNN é atualizado com cada token, as informações relevantes reais, ou o sinal, podem ser perdidos.

No exemplo fornecido, o nome de Vincent Van Gogh está no início da frase, enquanto a máscara está no final. Na etapa final, quando a máscara é apresentada como entrada, o estado oculto pode conter uma grande quantidade de informações irrelevantes para prever a saída da máscara. Como o estado oculto tem um tamanho limitado, as informações relevantes podem até ser excluídas para liberar espaço para informações novas e mais recentes.

Quando lemos esta frase, sabemos que apenas determinadas palavras são essenciais para prever a última palavra. No entanto, uma RNN inclui todas as informações (relevantes e irrelevantes) em um estado oculto. Como resultado, as informações relevantes podem se tornar um sinal fraco no estado oculto, o que significa que elas podem ser negligenciadas porque há muitas outras informações irrelevantes influenciando o modelo.

Aprimorando RNNs com memória temporária longa

Uma solução para o problema de sinal fraco com RNNs é um tipo mais recente de RNN: Memória temporária longa (LSTM). O LSTM é capaz de processar dados sequenciais mantendo um estado oculto que é atualizado em cada etapa. Com o LSTM, o modelo pode decidir o que lembrar e o que esquecer. Ao fazer isso, o contexto que não é relevante ou não fornece informações valiosas pode ser ignorado e sinais importantes podem ser persistidos por mais tempo.