Processamento de Linguagem Natural com Deep Learning: Uma nova Era
Uma visão de como Deep Learning está revolucionado o Processamento de Linguagem Natural — do Google Tradutor a assistentes cognitivos pessoais — e transformando nossas vidas.
Se você parar pra pensar, a maior parte do seu tempo é gasto com linguagem natural, seja comunicando verbalmente com seus amigos e familiares, trocando emails e mensagens no Whatsapp, ou até mesmo assistindo vídeos e lendo blogs sobre “Processamento de Linguagem Natural com Deep Learning”. A linguagem natural é a interface humana de comunicação. Mas, a tradução da linguagem natural humana para as máquinas tem sido um grande desafio há décadas. Os problemas de Processamento de Linguagem Natural ou Natural Language Processing (NLP) são difíceis de serem resolvidos, de forma computacional, porque existem diversos desafios que os computadores não estão prontos para lidar, tais como ambiguidade, ausência de padrão na linguagem e entendimento do contexto.
O surgimento do conceito de word embeddings deu uma luz no fim do túnel para resolver estes problemas. Os word embeddings são representações vetoriais das palavras, que permitem capturar o contexto e relacionamento das palavras nos documentos (Figura 1), sem a necessidade de realizar engenharia de features com anotações exaustivas nas sentenças. A avalanche de word embeddings começou em 2013 quando pesquisadores do Google publicaram um artigo, propondo o famoso Word2Vec, que usa redes neurais pequenas para calcular os word embeddings baseado no contexto das palavras.
O Word2Vec ignora se as palavras ocorrem mais frequentemente em determinado contexto. Por isso, pesquisadores de Stanford publicaram um artigo apresentando o GloVe que foca nas co-ocorrências das palavras em todo o corpus, calculando a probabilidade de duas palavras ocorrem juntas. Mesmo assim, um problema continuava em aberto: generalização de palavras desconhecidas. Por isso, em 2016, o Facebook lançou o FastText para resolver este problema dividindo as palavras em n-gramas, ao invés de palavras individuais (1-gram) como o Word2Vec, sendo possível formar palavras desconhecidas ou palavras do corpus a partir da junção de sub-palavras.
Os word embeddings (calculados pelo Word2Vec, GloVe e FastText) representam uma palavra como um vetor, capturando todas as características de uma palavra em um único vetor. Por isso, eles possuem uma grande limitação de não conseguirem representar significados diferentes das palavras em diferentes contextos (polissemia). Por exemplo, a palavra “banco” em Português possui múltiplos significados dependendo do contexto. Os word embeddings não capturam também outros conceitos de alto nível, tais como anáforas, dependências de longo prazo, concordância e negação. As soluções atuais tem resolvido estes problemas utilizando modelos de linguagem com arquiteturas Deep Learning.
Mas, afinal, o que é Deep Learning?
O artigo “Deep Learning: do Conceito às Aplicações ”, do ninja Marlesson Santana, explica muito bem o conceito. Deep Learning ou Redes Neurais Profunda são um subgrupo de técnicas de aprendizado de máquina que utilizam redes neurais profundas para o treinamento de modelos. A unidade mais básica de uma rede neural é o neurônio artificial (modelado conforme o comportamento de um neurônio humano), formados pelas entradas de dados (dendritos), por funções de processamento de dados (corpo central) e pelas saídas (axônios). A partir do modelo de um neurônio artificial é possível construir uma rede neural artificial, conectando os neurônios para formar a arquitetura da rede neural. Uma rede neural inclui uma camada de entrada, uma ou mais camadas ocultas que recebem informações da camada de entrada e geram informações para uma última camada de saída. Conforme o número de camadas ocultas dentro de uma rede neural aumenta, redes neurais profundas são formadas. A Figura 2 apresenta uma comparação entre Redes Neurais e Redes Neurais Profundas.
Sejnowski e seu grupo de pesquisa tiveram um papel importante na criação das arquiteturas Deep Learning, na década de 80, mas o alto tempo de treinamento, utilizando CPUs, tornava inviável o uso de muitas camadas nas redes neurais em problemas reais. O cenário começou a mudar a partir de 2012, com a conquista da competição ImageNet pela equipe do Professor Geoffrey Hinton, utilizando o modelo ConvNet (criado por Yann LeCun, atualmente vice-presidente e chefe cientista de inteligência artificial no Facebook). O modelo ConvNet possui uma arquitetura de redes neurais profundas e seu treinamento só foi possível ser realizado graças a utilização das GPUs (Graphics Processing Unit).
O crescimento do uso de Deep Learning em visão computacional, principalmente a partir de 2013 e 2014 (Figura 3), marcou uma evolução extraordinária no número de pesquisas em aprendizado de máquina. Esta evolução criou uma nova era também na área de processamento de linguagem natural, transformando a vida das pessoas e como elas interagem com os sistemas, desde o Google Tradutor até assistentes pessoais com Siri e Google Now.
Processamento de Linguagem Natural com Deep Learning
“Processamento de Linguagem Natural teve mais progresso nos últimos três anos do que qualquer outro campo de aprendizado de máquina.” Clement Delangue, CEO do Hugging Face.
A revolução na área de NLP com Deep Learning teve início em 2018 com o lançamento dos modelos de linguagem pré-treinados ELMo e ULMFiT. Mas, foi a proposta de uma nova arquitetura de redes neurais, denominada Transformer, baseada unicamente em mecanismos de atenção, que mudaria para sempre as pesquisas nessa área.
A arquitetura Transformer, apresentada na Figura 4, tem como entrada os word embeddings dos tokens, sendo o módulo Positional Encoding responsável por adicionar, dentro do embedding de cada token, a informação da posição relativa ou absoluta do token na sequência. O Transformer é uma arquitetura composta por encoders e decoders. O encoder consiste de um conjunto de camadas de encoders que processam a entrada iterativamente. O decoder consiste de um conjunto de camadas de decoder que processam a saída do encoder, utilizando a informação contextual dela para gerar a sequência de saída.
O encoder recebe como entrada o embedding de cada token com a informação relativa ou absoluta do token na sequência de entrada, adicionada pelo Positional Encoding. Cada camada de encoder consiste basicamente de dois mecanismos principais: mecanismo de atenção e rede neural feed-foward. O mecanismo de Atenção foca apenas nas partes importantes da sequência de entrada. Ele recebe um conjunto de entradas da camada de encoder anterior e ajuda a analisar outras palavras da sequência de entrada enquanto codifica uma palavra específica, criando pesos de relevância de cada entrada em relação a todas as outras para gerar um conjunto de encodings de saída. A rede neural feed-forward processa cada encoding de saída do mecanismo de atenção individualmente e os envia como entrada tanto para o próximo encoder, quanto para os decoders.
O decoder possui as mesmas camadas do encoder, mas entre elas uma camada de atenção que ajuda o decoder a focar nas partes relevantes da sequência de entrada. O primeiro decoder recebe como entrada o embedding de cada token da sequência de saída, junto com a informação relativa ou absoluta do token na sequência, adicionada pelo Positional Encoding. O decoder só pode utilizar os tokens anteriores da sequência de saída na predição e, por isso, são adicionadas máscaras nas posições futuras para prevenir o fluxo reverso de informações. O último decoder é seguido por uma transformação linear e uma camada softmax para produzir a saída de probabilidades sobre o vocabulário.
A arquitetura Transformer permitiu que o treinamento fosse realizado com um volume muito maior de dados do que era possível antes. Isso levou ao desenvolvimento de modelos de linguagem pré-treinados, tais como Bidirectional Encoder Representations from Transformers (BERT), XLNET, Text-To-Text Transfer Transformer (T5) e Generative Pre-trained Transformer (GPT), que são previamente treinados e, posteriormente, são submetidos a um treinamento com um ajuste fino (fine-tuning) nas tarefas específicas de linguagem.
Apesar de ter sido publicado em 2017, poucas pessoas notaram a publicação o novo artigo “Attention is all you need” com ideias do Google Brain para a nova arquitetura Transformer. Foi o lançamento do BERT, no final de 2018, que deu destaque a arquitetura Transformer, superando o estado da arte, até então, em diversas tarefas. Depois de algum tempo, diversas variações do BERT foram criadas para ajudar a melhorar a acurácia e reduzir o custo computacional dele. Dentre estas variações destacam-se os modelos de linguagem Robustly optimized BERT approach (RoBERTa), TinyBERT, ALBERT (A Lite BERT) e DistilBERT.
O modelo GPT também evoluiu para os modelos GPT-2 e GPT-3, criados pelo time do OpenAI. O lançamento do GPT-2 gerou grande “surpresa” na área de NLP quando o time do OpenAI comunicou que não seria disponibilizado o código fonte da maior versão do GPT-2 porque, se “caísse em mãos erradas”, poderia gerar problemas para a sociedade, como a criação de fake news. E não parou por aí. O novo modelo GPT-3 levou o GPT para um novo nível, aumentando de 1,5 bilhões de parâmetros no GPT-2 para 175 bilhões de parâmetros com o GPT-3.
Os principais modelos de linguagem demonstram uma acurácia impressionante em diferentes tarefas de NLP, mas são treinados com um grande número de parâmetros (Figura 5) e alto custo computacional, tornando o treinamento destes modelos inviável para a maior parte dos pesquisadores e empresas que não possuem recursos computacionais suficientes para o treinamento dos modelos. Para resolver este problema, diversos grupos de pesquisa estão trabalhando no aumento da eficiência computacional dos modelos de linguagem pré-treinados, sem sacrificar a acurácia. Dentre estas abordagens, quatro métodos têm se destacado com resultados promissores: Reformer, Longformer, ELECTRA e Linformer.
Conclusão
O momento ImageNet, em 2012, marcou o início de um enorme interesse de pesquisadores e empresas no mundo todo por Deep Learning. Já o ano de 2018 determinou o início da revolução da área de NLP com os modelos de linguagem pré-treinados, como ELMo, GPT e BERT, que produziram avanços significativos em várias tarefas de linguagem natural, tais como inferência, análise de sentimento e tradução de linguagem, em um curto espaço de tempo. Semelhante ao momento em que a máquina superou humanos em tarefas de reconhecimento de imagens em 2015, a máquina também superou o ser humano em algumas tarefas de NLP, como perguntas e respostas pelo BERT no SQuAD em 2018.
Neste artigo apresentamos alguns avanços na área de NLP com Deep Learning e como estes avanços têm revolucionado esta área. Podemos ver que existe, de um lado, a tendência de construir modelos cada vez maiores, como o GPT-3 com 175 bilhões de parâmetros, que demandam hardware muito potentes para o treinamento. De outro lado, existe um esforço da comunidade NLP para reduzir a complexidade computacional destes modelos, sem sacrificar a acurácia, tornando viável para diversos grupos de pesquisa e empresas do mundo treinarem modelos de linguagem dentro da própria estrutura de hardware.
Nos próximos anos, com as máquinas sendo cada vez mais capazes de entender a linguagem natural, o NLP irá influenciar ainda mais o cotidiano das pessoas. Finalizo o artigo com as palavras de Satya Nadella (CEO da Microsoft): “NLP continuará a transformar a forma que a tecnologia nos entende e nos ajuda”.
Referências
- https://mitpress.mit.edu/books/deep-learning-revolution
- https://medium.com/digital-catapult/why-the-ai-revolution-is-really-a-deep-learning-revolution-23e45da2ba3a
- https://arxiv.org/ftp/arxiv/papers/1911/1911.05289.pdf
- https://techcrunch.com/sponsor/nvidia/how-the-revolution-of-natural-language-processing-is-changing-the-way-companies-understand-text/
- https://www.tensorflow.org/tutorials/text/transformer