Entender as técnicas de aprendizado profundo usadas para o NLP (processamento de linguagem natural)
As técnicas estatísticas eram relativamente boas em tarefas de NLP (Processamento de Linguagem Natural), 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 nlp (processamento de linguagem natural) para tarefas como tradução é um aprendizado profundo.
Quando você deseja traduzir texto, não deve apenas traduzir cada palavra para outro idioma. Você pode se lembrar dos serviços de tradução de anos atrás que traduziram frases muito literalmente, muitas vezes resultando em resultados interessantes. Em vez disso, você deseja que um modelo de linguagem entenda o significado (ou semântica) de um texto e use essas informações para criar uma frase gramaticalmente correta no idioma de destino.
Entenda as 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. As inserções de palavras resolveram o problema de não conseguir definir a relação semântica entre palavras.
Antes das inserções de palavras, um desafio predominante com o NLP era detectar a relação semântica entre palavras. As inserções de palavras representam palavras em um espaço vetor, de modo 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 coocorrê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 corpus 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 uso. Além de encontrar bike
e car
no mesmo texto, você também pode encontrá-los sendo usados ao descrever coisas semelhantes. Por exemplo, alguém pode dirigir um bike
ou um car
, ou comprar um bike
ou car
numa loja.
O modelo aprende que as duas palavras geralmente são encontradas em contextos semelhantes e, portanto, plota os vetores de palavra para bike
e car
próximos um do outro no espaço vetorial.
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:
Diagrama mostrando vetores de palavras para bicicleta e carro em um espaço vetorial, em comparação com dirigir e comprar.
Boat
[2, 1, 4] está perto dedrive
eshop
, refletindo que você pode dirigir um barco e visitar lojas perto de corpos d'água.- #D0 [7, 5, 1] mais próximo de #D1 do que de #D2, já que carros e motos são usados em terra ao invés de na água.
- #D0 [6, 8, 0] está mais próximo de #D1 na dimensão de atividade #C2 e próximo a #D3 na dimensão de tipo de veículo #C4.
- #D0 [8, 4, 3] está perto de #B1, #D2 e #B3, mas longe de #D4, pois descreve um tipo diferente de atividade.
- #D0 [1, 3, 5] está mais próximo de #D1 porque essas palavras são frequentemente 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 a coordenadas em um plano bidimensional.
Embora as inserções de palavras sejam uma ótima abordagem para detectar a relação semântica entre palavras, ela ainda tem seus problemas. Por exemplo, palavras com intenções diferentes como #D0 e #D1 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
sendo semanticamente relacionada a uma vasta gama de palavras.
Adicionando memória a modelos 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 (RNRs).
Os RNNs consistem em várias etapas sequenciais. Cada etapa usa uma entrada e um estado oculto. Imagine que a entrada em cada etapa seja 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 informar a um modelo de linguagem que deve 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]
:
#B0 #A1 #A2 Diagrama que mostra a frase tokenizada para apresentar as palavras mais importantes em uma sentença como tokens individuais. #A3 #A4 #C5
O RNN usa cada token como 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 semelhante a Starry Night
Diagrama mostrando uma rede recorrente com múltiplos passos. Cada etapa utiliza uma entrada e um estado oculto para produzir uma saída.
No exemplo, o estado oculto contém as informações #B0, #B1, #B2 e #B3 . Com RNNs, cada um desses tokens é igualmente importante no estado oculto e, portanto, igualmente considerado ao prever a saída.
Os 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 sinal podem ser perdidas.
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 abrir espaço para informações novas e mais recentes.
Quando lemos esta frase, sabemos que apenas certas palavras são essenciais para prever a última palavra. No entanto, um 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 ignoradas porque há muitas outras informações irrelevantes influenciando o modelo.
Aprimorando RNNs com memória de longo curto prazo
Uma solução para o problema de sinal fraco com RNNs é um tipo mais recente de RNN: Memória de longo curto prazo (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 mantidos por mais tempo.