Guia introdutório sobre AI, machine learning e computação cognitiva

14 min de leitura
Imagem de: Guia introdutório sobre AI, machine learning e computação cognitiva
Avatar do autor

Equipe TecMundo

@tec_mundo

Por milênios, os humanos idealizaram construir máquinas inteligentes. Desde então, a inteligência artificial (IA) teve altos e baixos, demonstrou sucessos e potenciais não alcançados. Hoje, as notícias são preenchidas com a aplicação de algoritmos de machine learning para solucionar novos problemas. De detecção e previsão do câncer a compreensão e resumo de imagens e processamento de linguagem natural, a IA está empoderando as pessoas e mudando nosso mundo.

A história da IA moderna tem todos os elementos de um roteiro de cinema. A partir da década de 1950, tendo foco em máquinas pensantes e personagens interessantes como Alan Turing e John von Neumann, a IA começou sua primeira ascensão. Décadas de altos e baixos e expectativas impossivelmente altas se seguiram, mas a IA e seus pioneiros avançaram. A IA agora está expondo seu verdadeiro potencial, concentrando-se em aplicativos e fornecendo tecnologias como deep learning e computação cognitiva.

Este artigo explora alguns dos aspectos importantes da IA e seus subcampos. Vamos começar com a linha do tempo da inteligência artificial e depois ir mais a fundo em cada um desses elementos.

Linha do tempo da Inteligência Artificial moderna

A partir da década de 1950, a IA moderna se concentrou no que foi chamado de IA forte, que se referia a algoritmos de inteligência artificial que poderiam executar qualquer tarefa intelectual realizada pelo cérebro humano. A falta de progresso em IA forte acabou por levar ao que é chamado de IA fraca ou à aplicação de técnicas de IA para problemas mais restritos. Até a década de 1980, a pesquisa em IA era dividida entre esses dois paradigmas. Porém, por volta de 1980, o machine learning se tornou uma área de pesquisa importante, com o objetivo de dar aos computadores a capacidade de aprender e construir modelos de aprendizagem para que eles pudessem realizar atividades como predições em domínios específicos.

Figura 1. Linha do tempo da IA moderna

Graphical timeline of modern artificial intelligence development

Com base na pesquisa da IA e machine learning, por volta do ano 2000 surgiu o deep learning. Os cientistas da computação usaram redes neurais em várias camadas com novas topologias e métodos de aprendizado. Essa evolução das redes neurais resolveu com sucesso problemas complexos em vários domínios.

Na última década, surgiu a computação cognitiva, cujo objetivo é criar sistemas que possam aprender e interagir naturalmente com os seres humanos. A computação cognitiva foi demonstrada pelo IBM Watson ™ ao derrotar adversários de classe mundial no programa de televisão Jeopardy!.

Neste artigo, iremos explorar cada uma dessas áreas e conhecer alguns dos algoritmos mais importantes que impulsionaram o sucesso da inteligência artificial.

IA Fundamental

Pesquisas anteriores a 1950 apresentaram a ideia de que o cérebro consistia em uma rede elétrica de pulsos que disparava e orquestrava de alguma forma o pensamento e a consciência. Alan Turing mostrou que qualquer cálculo poderia ser implementado digitalmente. Logo, a ideia de construir uma máquina que pudesse imitar o cérebro humano não poderia estar muito longe.

Muitas pesquisas iniciais se concentraram nesse aspecto forte da IA, mas esse período também introduziu os conceitos que servem de base para todo o machine learning e deep learning hoje.

Figura 2. Linha de tempo das abordagens à IA até os anos 80 

Graphical timeline of artificial intelligence approaches to the year 1980

Pesquisas em inteligência artificial

Muitos problemas na IA podem ser resolvidos através da busca por força bruta (como a primeira pesquisa de profundidade ou largura, mais conhecidas por depth first e breadth first). No entanto, considerando o espaço de pesquisa para problemas moderados, a pesquisa básica padece rapidamente. Um dos primeiros exemplos de IA como pesquisa foi o desenvolvimento de um programa de jogo de Damas. Arthur Samuel construiu o primeiro programa desse tipo na IBM 701 Electronic Data Processing Machine, implementando uma otimização para pesquisar árvores chamadas poda alfa-beta. Seu programa também registrou a recompensa por um movimento específico, permitindo que o aplicativo aprendesse com cada partida (tornando-o o primeiro programa de autoaprendizagem). Para melhorar a taxa de aprendizado do programa, Samuel o colocou para jogar sozinho, aumentando sua capacidade de jogar e aprender.

Embora você possa aplicar a pesquisa com êxito a muitos problemas simples, a abordagem falha rapidamente à medida que o número de opções aumenta. Tome o jogo simples de Jogo da Velha como um exemplo. No início, há 9 possibilidades de movimentos. Cada movimento resulta em 8 possíveis contramovimentos, e assim por diante. A árvore completa dos movimentos do Jogo da Velha (não otimizada para rotação para remover duplicatas) contém 362.880 nós. Se você estender esse mesmo experimento mental ao xadrez ou ao Go, verá rapidamente o lado negativo da pesquisa.

Perceptrons

O perceptron foi um algoritmo de aprendizado supervisionado de classificação para redes neurais de camada única. Dado um vetor de recurso de entrada, o algoritmo perceptron pode aprender a classificar as entradas como pertencentes a uma classe específica. Usando um conjunto de treinamento, os pesos e desvios da rede podem ser atualizados para classificação linear. O perceptron foi implementado primeiro para o IBM 704 e, posteriormente, em um hardware customizado para reconhecimento de imagem.

Figura 3. Perceptron e a classificação linear

Graphical presentation of perceptrons and linear classification

Como classificador linear, o perceptron era capaz de lidar com problemas lineares separáveis. O principal exemplo das limitações do perceptron era sua incapacidade de aprender uma função OR (XOR) exclusiva. Os perceptrons multicamadas resolveram esse problema e abriram o caminho para algoritmos mais complexos, topologias de rede e deep learning.

Algoritmos de clustering

Com perceptrons, a abordagem foi supervisionada. Os usuários forneceram dados para treinar a rede e testá-la contra novos dados. Os algoritmos de clustering adotam uma abordagem diferente, chamada aprendizado não supervisionado. Nesse modelo, o algoritmo organiza um conjunto de vetores de recursos em clusters com base em um ou mais atributos dos dados.

Figura 4. Clustering em um espaço de recurso bidimensional

Um dos algoritmos mais simples que você pode implementar em uma pequena quantidade de código é chamado k-means. Nesse algoritmo, k indica o número de clusters aos quais você pode atribuir amostras. Você pode inicializar um cluster com um vetor de recurso aleatório e adicionar todas as outras amostras ao cluster mais próximo (considerando que cada amostra representa um vetor de recurso e uma distância euclidiana usada para identificar "distância"). À medida que você adiciona amostras a um cluster, seu centroide — ou seja, o centro do cluster — é recalculado. O algoritmo verifica as amostras novamente para garantir que elas existam no cluster mais próximo e termina quando nenhuma amostra altera a associação do cluster.

Embora o k-means seja relativamente eficiente, você deve especificar o k com antecedência. Dependendo dos dados, outras abordagens podem ser mais eficientes, como clustering hierárquico ou baseado em distribuição.

Árvores de decisão 

Intimamente relacionada ao armazenamento em cluster está a árvore de decisão. Uma árvore de decisão é um modelo preditivo de observações que levam a alguma conclusão. As conclusões são representadas como folhas na árvore, enquanto os nós são pontos de decisão onde uma observação diverge. As árvores de decisão são construídas a partir de algoritmos de aprendizado da árvore de decisão, onde o conjunto de dados é dividido em subconjuntos com base em testes de valor de atributo (por meio de um processo chamado particionamento recursivo).

Considere o exemplo na figura a seguir. Nesse conjunto de dados, podemos observar quando alguém foi produtivo com base em três fatores. Usando um algoritmo de aprendizado em árvore de decisão, é possível identificar atributos usando uma métrica (um exemplo é o ganho de informações). Nesse exemplo, o humor é um fator primordial da produtividade; portanto, dividimos o conjunto de dados de acordo com o fato de "bom humor" ser Sim ou Não. O lado Não é simples: sempre é improdutivo. Mas o lado Sim exige que o conjunto de dados seja dividido novamente com base nos outros dois atributos. O conjunto de dados tem cores para ilustrar onde as observações levaram aos nós de folhas.

Figura 5. Conjunto de dados simples e uma árvore de decisão resultante

4x9 table containing a simple data set and resulting decision tree

Um aspecto útil das árvores de decisão é sua organização inerente, que permite explicar (gráfica e facilmente) como você classifica um item. Os algoritmos populares de aprendizado da árvore de decisão incluem C4.5 e a Árvore de Classificação e Regressão.

Sistemas baseados em regras

O primeiro sistema construído com base em regras e inferência, chamado Dendral, foi desenvolvido em 1965, mas somente na década de 1970 esses chamados "sistemas experts" atingiram seu ponto máximo. Um sistema baseado em regras é aquele que armazena conhecimento e regras e usa um sistema de raciocínio para tirar conclusões.

Um sistema baseado em regras geralmente consiste em um conjunto de regras, uma base de conhecimento, um mecanismo de inferência (usando o encadeamento de regras para a frente ou para trás) e uma interface com o usuário. Na figura a seguir, são usados um conhecimento (“Sócrates era um homem”), uma regra (“se homem, então mortal”) e uma interação sobre quem é mortal.

Figura 6. Sistema baseado em regras

A rules-based system in the form of a flowchart

Os sistemas baseados em regras foram aplicados ao reconhecimento, planejamento e controle da fala e à identificação de doenças. Um sistema desenvolvido na década de 1990 para monitorar e diagnosticar a estabilidade da barragem, chamado Kaleidos, ainda está em operação hoje.

Machine learning

O machine learning é um subcampo da IA e da ciência da computação que tem suas raízes na estatística e na otimização matemática. Abrange técnicas de aprendizado supervisionado e não supervisionado para aplicativos de predição, análise e mineração de dados. Ele não é restrito ao deep learning; e nesta seção exploraremos alguns dos algoritmos que levaram a essa abordagem surpreendentemente eficiente.

Figura 7. Linha do tempo das abordagens em machine learning

 

Graphical image showing a timeline of machine learning approaches

Retropropagação

O verdadeiro poder das redes neurais são as variáveis multicamadas. O treinamento de perceptrons de camada única é direto, mas a rede resultante não é muito poderosa. A questão tornou-se: como podemos treinar redes que possuem várias camadas? Foi aqui que a retropropagação entrou.

A retropropagação é um algoritmo para o treinamento de redes neurais com muitas camadas e que funciona em duas fases. A primeira fase é a propagação de insumos através de uma rede neural para a camada final (chamada alimentação direta). Na segunda fase, o algoritmo calcula um erro e, em seguida, retropropaga esse erro (ajustando os pesos) da camada final para a primeira.

Figura 8. Retropropagação em resumo

Graphic showing phases 1 and 2 of the backpropagation process

Durante o treinamento, as camadas intermediárias da rede se organizam para mapear partes do espaço de entrada para o espaço de saída. A retropropagação, por meio do aprendizado supervisionado, identifica um erro no mapeamento de entrada para saída e, em seguida, ajusta os pesos de acordo com uma taxa de aprendizado para corrigir esse erro. A retropropagação continua sendo um aspecto importante do aprendizado de redes neurais. Com recursos de computação mais rápidos e baratos, continua a ser aplicado a redes maiores e mais densas.

Redes neurais convolucionais

As redes neurais convolucionais (CNNs) são redes neurais multicamadas que se inspiram no córtex visual do animal. A arquitetura é útil em várias aplicações, incluindo processamento de imagem. A primeira CNN foi criada por Yann LeCun; na época, a arquitetura focava em tarefas de reconhecimento de caracteres manuscritos, como a leitura de códigos postais.

A arquitetura LeNet CNN é composta de várias camadas que implementam a extração de recursos e a classificação. A imagem é dividida em campos receptivos que alimentam uma camada convolucional que extrai recursos da imagem de entrada. A próxima etapa é o agrupamento, que reduz a dimensionalidade dos recursos extraídos (por meio de amostragem reduzida), mantendo as informações mais importantes (normalmente por meio do agrupamento máximo). O algoritmo executa outra etapa de convolução e mineração que alimenta um perceptron multicamada totalmente conectado. A camada final de saída dessa rede é um conjunto de nós que identificam os recursos da imagem (nesse caso, um nó por número identificado). Os usuários podem treinar a rede por meio de retropropagação. 

Figura 9. Arquitetura LeNet de redes neurais convolucionais

Graphic showing the architectural phases of the LeNet CNN

O uso de deep layers para processamento, complicação, agrupamento e uma camada de classificação totalmente conectada abriu as portas para várias novas aplicações de redes neurais. Além do processamento de imagens, a CNN foi aplicada com sucesso ao reconhecimento de vídeo e a muitas tarefas no processamento de linguagem natural. As CNNs também foram implementadas com eficiência nas GPUs, melhorando bastante seu desempenho.

Memória de longo prazo

Lembre-se que, na discussão sobre retropropagação, a rede sendo treinada era de alimentação direta. Nessa arquitetura, os usuários alimentam entradas na rede e as propagam para frente pelas camadas ocultas até a camada de saída. Mas existem muitas outras topologias de redes neurais. Uma delas, investigada aqui, permite conexões entre nós para formar um ciclo direcionado. Essas redes são chamadas de redes neurais recorrentes e podem ser retrocedidas para as camadas anteriores ou para os nós subsequentes dentro da camada. Essa propriedade torna essas redes ideais para dados de séries temporais.

Em 1997, foi criado um tipo especial de rede recorrente, denominado LSTM (Long Short Term Memory). O LSTM consiste em células de memória que em uma rede armazenam valores por um curto ou longo prazo.

Figura 10. Rede com memória de longo prazo e célula de memória

Graphic showing how an LSTM works and a memory cell

Uma célula de memória contém portas que controlam o fluxo de informações de dentro para fora da célula. A porta de entrada controla quando novas informações podem fluir para a memória. O portão de esquecer controla por quanto tempo uma informação existente é mantida. Finalmente, o portão de saída controla quando as informações contidas na célula são usadas na saída da célula. A célula também contém pesos que controlam cada porta. O algoritmo de treinamento, comumente a retropropagação ao longo do tempo (uma variante da retropropagação), otimiza esses pesos com base no erro resultante.

O LSTM foi aplicado em reconhecimento de fala, reconhecimento de manuscritos, sínteses de texto em fala, legenda de imagens e várias outras tarefas. Voltaremos ao LSTM em breve.

Deep learning

O deep learning é um conjunto de métodos relativamente novos que vêm mudando o aprendizado de máquina de maneiras fundamentais. O deep learning não é um algoritmo por si só, mas uma família de algoritmos que implementam deep networks com aprendizado não supervisionado. Essas redes são tão profundas que são necessários novos métodos de computação, como GPUs, para construí-las (além de clusters de nós de computação).

Até o momento este artigo explorou dois algoritmos de deep learning: CNNs e LSTMs. Eles foram combinados para realizar várias tarefas surpreendentemente inteligentes. Como mostrado na figura a seguir, CNNs e LSTMs foram usados para identificar uma imagem ou um vídeo e depois descrevê-los em linguagem natural.

Figure 11. Combinação de redes neurais convolucionais e memórias de longo prazo para descrição de imagensGraphic showing an original image of a kitten and how combining convolutional neural networks and long short-term memory networks for image description

Algoritmos de deep learning também foram aplicados a reconhecimento facial, identificação de tuberculose com 96% de precisão, controle de veículos autônomos e muitos outros problemas complexos.

No entanto, apesar dos resultados da aplicação de algoritmos de deep learning, existem problemas que ainda precisamos resolver. Uma aplicação recente de deep learning na detecção de câncer de pele descobriu que o algoritmo era mais preciso do que um dermatologista certificado. Porém, enquanto os dermatologistas poderiam enumerar os fatores que levaram ao diagnóstico, não há como identificar quais fatores um programa de aprendizado profundo usou em sua classificação. Isso é chamado de problema da caixa preta do deep learning.

Outra aplicação, chamada Deep Patient, foi capaz de prever com sucesso a doença com base nos registros médicos de um paciente. Ela provou ser consideravelmente melhor na previsão de doenças do que os médicos — mesmo para a esquizofrenia, que é notoriamente difícil de prever. Portanto, mesmo que os modelos funcionem bem, ninguém pode acessar as redes neurais massivas para identificar exatamente o porquê.

Computação cognitiva

A inteligência artificial e o machine learning são exemplos de inspiração biológica. E enquanto a IA inicial estava focada nos grandes objetivos como o de construir máquinas que imitam o cérebro humano, a computação cognitiva está trabalhando nessa direção.

A computação cognitiva, baseada em redes neurais e deep learning, está aplicando o conhecimento da ciência cognitiva para construir sistemas que simulam processos de pensamento humano. No entanto, em vez de se concentrar em um conjunto singular de tecnologias, a computação cognitiva abrange várias disciplinas, incluindo machine learning, processamento de linguagem natural, visão e interface homem-computador.

Um exemplo de computação cognitiva é o IBM Watson, que demonstrou interações avançadas de perguntas e respostas no Jeopardy! e foi estendido pela IBM através de um conjunto de serviços da web. Esses serviços expõem interfaces de programação de aplicativos para reconhecimento visual, função de conversão de texto em texto, texto em fala, compreensão e tradução de idiomas e mecanismos de conversação para criar poderosos agentes virtuais.

Indo além

Este artigo abordou apenas uma fração da história da IA e suas últimas abordagens em redes neurais e deep learning. Embora a IA e o machine learning tenham sofrido altos e baixos, novas abordagens como o deep learning e a computação cognitiva contribuíram fortemente para evolução dessas questões. Uma máquina consciente ainda pode estar fora de alcance, mas sistemas que ajudam a melhorar a vida das pessoas já estão presentes hoje em nosso dia a dia.

Para obter mais informações sobre o desenvolvimento de soluções cognitivas de IoT para detecção de anomalias usando o deep learning, consulte Introdução ao deep learning e redes de memória de longo prazo.

Comentários

Conteúdo disponível somente online
Guia introdutório sobre AI, machine learning e computação cognitiva