A Capacidade (e Limitação) de Máquinas Entenderem a nossa Língua

Esse é o primeiro texto do Intervalo de Confiança sobre NLP (Natural Language Processing), as técnicas computacionais para fazer sistemas capazes de entender as línguas humanas. Essa área abrange diversas aplicações: o Google Translate, a Siri, o teclado do seu celular, entre muitas outras que são menos visíveis. No do NLP, está o aprendizado de máquina, permitindo que modelos estatísticos aprendam diversas nuances linguísticas.

Neste texto, não vou entrar nas técnicas de NLP em si, mas falar de algumas características comuns a praticamente todas elas que acabam impondo certas limitações práticas. Mais especificamente, em como certas coisas são óbvias e naturais para nós, humanos, mas incrivelmente difíceis até para máquinas capazes de traduzir textos entre dezenas de línguas.

Aprendizado de Humanos e de Máquinas

As crianças aprendem a falar ouvindo os adultos e os imitando, primeiro só com palavras soltas mas logo aprendendo padrões de linguagem para formar frases mais longas. Os sistemas de NLP, baseados em machine learning, de certa forma são parecidos: aprendem analisando padrões em grandes quantidades de texto.

Usando todo o poder de computadores modernos, os sistemas de NLP são capazes de analisar milhares de palavras por segundo, associando-as com suas traduções em outras línguas, com o sentimento que passam ou quais perguntas respondem. Mas há um probleminha aí.

Toda essa capacidade de análise, por mais bem-sucedida que seja, não tem referenciais no mundo real. Quando uma criança, por exemplo, aprende a falar “carro”, ela sabe que aquela sequência de sons se refere a um certo tipo de objeto. Já um algoritmo de NLP, não; ele só conhece a palavra escrita — ou, quando muito, sua versão falada.

Nossos melhores modelos são capazes de rotular “carro” como substantivo ou traduzi-lo para outras línguas, mas não tem ideia do que se trata aquele conceito. Sistemas de visão computacional são até capazes de identificar carros em imagens, e fazem um belo trabalho dirigindo carros autômatos, mas tudo isso só porque foram treinados à exaustão para identificar veículos, pessoas, e outras coisas que aparecem no trânsito. E como foram treinados só para isso, não sabem de outras coisas aparentemente óbvias a respeito de carros.

Um exemplo: logo que uma criança aprende o que é um carro, ela já saberá que carros são maiores que formigas, mas menores que um prédio. Ou que carros costumam fazer barulhos quando se movem, ou que são muito pesados. Já sistemas de NLP não se dão conta de nada disso; aliás, mesmo após analisar bilhões de palavras, os modelos computacionais têm dificuldade de dizer se uma mala é maior que o seu conteúdo ou não.

Bom, e por que os modelos computacionais não aprendem? Se fosse normal escrever coisas como “carros são maiores que formigas”, um sistema de NLP aprenderia este conceito facilmente, mas raramente escrevemos coisas já tão óbvias para as pessoas. Se quiséssemos, poderíamos até compilar um conjunto de dados explicitando vários fatos como este (e o link acima é um exemplo disso), mas somos limitados pelo fato de que são incontáveis todos os conceitos que sabemos sem que ninguém precise nos ensinar. Simplesmente não seria viável escrever todos eles apenas para ensinar aos nossos sistemas descolados da realidade.

Sistemas que geram texto também produzem absurdos lógicos. Em um experimento que fiz gerando textos no estilo de artigos da Wikipedia com o GPT-2, um dos modelos mais poderosos atualmente para escrever texto como se fosse gente, ele aprendeu bastante bem a língua portuguesa em geral, com textos gramaticais, seguindo a concordância e tudo o mais. O mesmo não vale para a coerência com o mundo real, por exemplo. Em um dos textos escritos automaticamente, o modelo descrevia uma empresa fictícia (como esperado), dizia sua data de fundação, mas em seguida descrevia sua atuação antes da fundação. Este não é um caso isolado; há diversas inconsistências semelhantes nos textos que este tipo de modelo gera.

Existe uma solução

Se queremos nossos sistemas de NLP com uma inteligência mais próxima da humana, existe uma solução para esses problemas? Aqui entramos no reino da especulação. 

As limitações que apontei aqui sugerem que uma condição necessária para essa inteligência é a capacidade de percepção do mundo real; de imagens, sons, pessoas, objetos, movimentos, cheiros, e tudo o mais que nós percebemos à nossa volta. Um sistema capaz disso teria acesso a dados muito mais ricos, e assim evitaria os contrassensos que a nossa IA atual produz.

Mas repito, isso é apenas especulação. A neurociência ainda entende relativamente pouco de como funciona o aprendizado humano em linhas gerais, e não temos nenhuma garantia de que aprendizado de máquina, ou mais especificamente o aprendizado baseado em deep learning que representa o atual estado da arte em NLP e visão computacional, seria capaz de igualar as capacidades humanas. De qualquer forma, acredito que é nessa direção que as pesquisas em IA seguirão nos próximos anos.

Nota do Editor: Se você gostou deste texto, não esqueça de escutar o episódio sobre NLP, neste link.

Author: Erick Fonseca

Formado em computação, com doutorado em NLP, e fazendo pesquisa nessa área. Fascinado pelas línguas humanas, e de vez em quando tenta aprender mais uma delas. Twitter: https://twitter.com/Erick404