Conteúdo


Um guia para iniciantes sobre inteligência artificial, aprendizado de máquina e computação cognitiva

Comments

Durante milênios, os humanos ponderaram a ideia de construir máquinas inteligentes. Desde então, a inteligência artificial (IA) teve altos e baixos, demonstrou sucessos e expectativas não atendidas. Hoje, as notícias são recheadas de algoritmos de aprendizado de máquina para novos problemas. Desde a detecção e a prevenção do câncer até o entendimento e a sumarização de imagens e o processamento de linguagem natural, a IA está capacitando pessoas e mudando o mundo.

O histórico da IA moderna tem todos os elementos de um grande drama. No início dos anos 50, com o foco em máquinas pensantes e em personagens interessantes, como Alan Turing e John von Neumann, a IA deu seu primeiro salto. Depois de décadas de altos e baixos e de grandes expectativas impossíveis de se atender, a IA e seus pioneiros fizeram grandes progressos. Hoje, a IA está expondo seu verdadeiro potencial, focada 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 um cronograma da IA e, em seguida, examinar cada um desses elementos.

Cronograma da IA moderna

No início dos anos 50, a IA moderna estava focada naquilo que era chamado de inteligência artificial forte, que se referia à IA que, geralmente, poderia executar qualquer tarefa intelectual que um humano pudesse realizar. A falta de progressos na IA forte eventualmente levava àquilo que era chamado de inteligência artificial fraca ou à aplicação de técnicas de IA para limitar problemas. Até os anos 80, as pesquisas de IA eram divididas entre esses dois paradigmas. Entretanto, em torno de 1980, o aprendizado de máquina se tornou uma área de pesquisa proeminente com o propósito de oferecer aos computadores a capacidade de aprender e desenvolver modelos para realizar atividades como previsão dentro de domínios específicos.

Figura 1. Um cronograma da inteligência artificial moderna
Cronograma gráfico do desenvolvimento moderno de inteligência artificial
Cronograma gráfico do desenvolvimento moderno de inteligência artificial

Após pesquisas investigativas sobre IA e aprendizado de máquina, por volta do ano 2000, surgiu o deep learning. Os cientistas da computação usavam redes neurais em várias camadas com novas topologias e métodos de aprendizado. Essa evolução das redes neurais resolveu com êxito problemas complexos em vários domínios.

Na década passada, surgiu a computação cognitiva, cujo objetivo é construir sistemas que possam conhecer e interagir naturalmente com humanos. A computação cognitiva foi revelada pelo IBM Watson ao derrotar com sucesso os oponentes mundiais no jogo Jeopardy.

Neste tutorial, vamos explorar cada uma dessas áreas e explicar alguns dos algoritmos importantes que levaram ao seu sucesso.

IA básica

Pesquisas realizadas antes dos anos 50 introduziram a ideia de que o cérebro consistia em uma rede elétrica de pulsos que acionavam e, de alguma forma, orquestravam o pensamento e a consciência. Alan Turing mostrou que qualquer cálculo poderia ser implementado digitalmente. Portanto, a ideia de construir uma máquina que pudesse imitar o cérebro humano não poderia ser tão remota.

Pesquisas muito antigas focavam nesse aspecto forte da IA, mas esse período também introduziu os conceitos básicos nos quais todo aprendizado de máquina e deep learning é baseado atualmente.

Figura 2. Cronograma das abordagens de inteligência artificial nos anos 80
Cronograma gráfico das abordagens de inteligência artificial para o ano de 1980
Cronograma gráfico das abordagens de inteligência artificial para o ano de 1980

Muitos problemas na IA podem ser resolvidos por meio de busca por força bruta (como profundidade ou amplitude de buscas). No entanto, considerando o espaço de busca para problemas moderados, a busca básica é a que mais sofre. Um dos exemplos mais antigos de IA como busca é o desenvolvimento de um programa para jogo de damas. Arthur Samuel desenvolveu o primeiro programa desse tipo na Máquina de Processamento de Dados Eletrônicos IBM 701, implementando uma otimização para árvores de busca chamada poda alfa-beta. Seu programa também ganhou reconhecimento por um avanço específico, que permitiu que o aplicativo aprendesse com cada jogo (se tornando o primeiro programa de autoaprendizado). Para aumentar a taxa de aprendizado do programa, Samuel o programou para jogar sozinho, aumentando sua capacidade de jogar e aprender.

Embora você possa fazer buscas para vários problemas simples, a abordagem falha rapidamente conforme aumenta o número de opções. Pegue o exemplo de um simples jogo da velha. No início do jogo, há nove movimentos possíveis. Cada movimento resulta em oito contramovimentos possíveis, e assim por diante. A árvore completa de movimentos para o jogo da velha (não otimizado para rotação para remover duplicações) é de 362.880 nós. Se estender esse mesmo exercício intelectual para xadrez ou Go, rapidamente você verá a desvantagem da busca.

Perceptrons

O perceptron foi um dos primeiros algoritmos de aprendizado supervisionados para redes neurais de camada única. Dado um vetor de recurso de entrada, o algoritmo perceptron poderia aprender a classificar entradas como pertencentes a uma classe específica. Utilizando um conjunto de treinamento, os pesos da rede e os vieses poderiam ser atualizados para classificação linear. O perceptron foi implementado pela primeira vez para o IBM 704 e, depois, em hardwares customizados para reconhecimento de imagem.

Figura 3. Perceptron e classificação linear
Apresentação gráfica dos perceptrons e classificação linear
Apresentação gráfica dos perceptrons e classificação linear

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

Algoritmos de armazenamento em cluster

Com os perceptrons, a abordagem era supervisionada. Os usuários forneciam dados para treinar a rede e depois testá-la com relação aos novos dados. Os algoritmos de armazenamento em cluster utilizam uma abordagem diferente chamada aprendizado não supervisionado. Nesse modelo, o algoritmo organiza um conjunto de vetores de recurso em clusters baseados em um ou mais atributos dos dados.

Figura 4. Armazenamento em cluster em um espaço de recurso bidimensional
Apresentação gráfica de clustering em um espaço de recurso bidimensional
Apresentação gráfica de clustering em um espaço de recurso bidimensional

Um dos algoritmos mais simples que podem ser implementados em uma pequena quantidade de código é chamado k-médias. Nesse algoritmo, k indica o número de clusters no qual é possível designar amostras. É possível inicializar um cluster com um vetor de recurso aleatório e, em seguida, incluir todas as outras amostras no cluster mais próximo (considerando que cada amostra representa um vetor de recurso e uma distância euclidiana utilizada para identificar a "distância"). Conforme você inclui amostras em um cluster, seu centroide—ou seja, o centro do cluster—é recalculado. O algoritmo então verifica as amostras novamente para assegurar que elas existem no cluster mais próximo e finaliza quando nenhuma amostra altera a associação do cluster.

Embora as k-médias sejam relativamente eficientes, você deve especificar k com antecedência. Dependendo dos dados, outras abordagens podem ser mais eficientes, como armazenamento em cluster hierárquico ou baseado em distribuição.

Árvores de decisão

Estritamente relacionada com o armazenamento em cluster está a árvore de decisão. Uma árvore de decisão é um modelo preditivo sobre observações que levam a alguma conclusão. As conclusões são representadas como folhas na árvore, enquanto os nós são os pontos de decisão nos quais uma observação diverge. Árvores de decisão são baseadas em algoritmos de aprendizado de árvore de decisão, em que o conjunto de dados é dividido em subconjuntos baseados nos testes de valor de atributo (por meio de um processo chamado particionamento recursivo).

Considere o exemplo na figura a seguir. Nesse conjunto de dados, é possível observar quando alguém foi produtivo com base em três fatores. Utilizando um algoritmo de aprendizado de árvore de decisão, posso identificar atributos utilizando uma métrica (um exemplo é o ganho de informações). Nesse exemplo, o humor é o principal fator na produtividade, portanto, eu divido o conjunto de dados dependendo se a opção para "bom humor" for Sim ou Não. O lado Não é simples: sempre improdutivo. Porém, o lado Sim requer que eu divida o conjunto de dados novamente com base nos outros dois atributos. Eu colori o conjunto de dados para ilustrar para onde as observações levaram os nós folha.

Figura 5. Um conjunto de dados simples e a árvore de decisão resultante
Tabela 4x9 contendo um conjunto de dados simples e árvore de decisão resultante
Tabela 4x9 contendo um conjunto de dados simples e árvore de decisão resultante

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

Sistemas baseados em regras

O primeiro sistema baseado em regras e inferência, chamado Dendral, foi desenvolvido em 1965, mas apenas nos anos 70 esses chamados "sistemas especialistas" fizeram avanços. Um sistema baseado em regras é aquele que armazena conhecimento e regras e que utiliza 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 (utilizando encadeamento de regras de avanço ou retrocesso) e uma interface com o usuário. Na figura a seguir, eu uso alguns conhecimentos ("Sócrates era um homem"), uma regra ("como homem, era mortal") e uma interação sobre quem é mortal.

Figura 6. Um sistema baseado em regras
Um sistema baseado em regras na forma de um fluxograma
Um sistema baseado em regras na forma de um fluxograma

Os sistemas baseados em regras são aplicados em reconhecimento de discurso, planejamento e controle e identificação de doenças. Um sistema desenvolvido nos anos 90 para monitorar e diagnosticar a estabilidade de barragens chamado Kaleidos continua em operação até hoje.

Aprendizado de máquina

O aprendizado de máquina é um subcampo da IA e da ciência da computação que tem suas raízes na otimização matemática e estatística. O aprendizado de máquina cobre técnicas de aprendizado supervisionado e não supervisionado para aplicativos nas áreas de previsão, análise e mineração de dados. Ele não se restringe ao deep learning e, nesta seção, vamos explorar alguns dos algoritmos que levam a essa abordagem surpreendentemente eficiente.

Figura 7. Cronograma das abordagens de aprendizado de máquina
Imagem gráfica mostrando uma linha do tempo de abordagens de aprendizado de máquina
Imagem gráfica mostrando uma linha do tempo de abordagens de aprendizado de máquina

Retropropagação

O verdadeiro poder das redes neurais está em sua variante multicamadas. O treinamento de perceptrons de camada única é simples, mas a rede resultante não é tão eficiente. Daí a questão: como podemos treinar redes com diversas camadas? É aí que entra a retropropagação.

A retropropagação é um algoritmo para treinamento de redes neurais com várias camadas. Ela funciona em duas fases. A primeira fase é a propagação de entradas por meio de uma rede neural para a camada final (chamada feed-forward). Na segunda fase, o algoritmo calcula um erro e, em seguida, faz a retropropagação desse erro (ajustando os pesos) da camada final para a primeira.

Figura 8. Resumo sobre a retropropagação
Gráfico mostrando as fases 1 e 2 do processo de retropropagação
Gráfico mostrando as fases 1 e 2 do processo de retropropagação

Durante o treinamento, camadas intermediárias da rede se organizam para mapear partes do espaço de entrada para o espaço de saída. Por meio do aprendizado supervisionado, a retropropagação identifica um erro no mapeamento de entrada para saída e, então, 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 rede neural. Com recursos de computação mais rápidos e baratos, ela continua sendo aplicada em redes maiores e mais densas.

Redes neurais convolucionais

Redes neurais convolucionais (CNNs) são redes neurais multicamadas que se inspiram no córtex visual animal. A arquitetura é útil em vários aplicativos, inclusive o processamento de imagem. A primeira CNN foi criada por Yann LeCun e, naquele momento, a arquitetura estava focada em tarefas de reconhecimento de caractere manuscritos, como leitura de códigos de endereçamento postal.

A arquitetura LeNet CNN é composta por várias camadas que implementam extração de recurso e, depois, classificação. A imagem é dividida em campos receptivos que são refletidos em 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 down-sampling) enquanto retém as informações mais importantes (geralmente por meio de agrupamento máximo). O algoritmo então executa outra etapa de convolução e de agrupamento que é refletida em um perceptron multicamadas totalmente conectado. A camada de saída final dessa rede é um conjunto de nós que identifica recursos da imagem (neste caso, um nó por número identificado). Os usuários podem treinar a rede por meio de retropropagação.

Figura 9. A arquitetura de rede neural convolucional LeNet
Gráfico mostrando as fases arquitetônicas da LeNet CNN
Gráfico mostrando as fases arquitetônicas da LeNet CNN

O uso de camadas profundas de processamento, convolução, centralização e de uma camada de classificação totalmente conectada abriu as portas para várias novas aplicações de redes neurais. Além do processamento de imagem, a CNN foi aplicada com sucesso no reconhecimento de vídeo e em diversas tarefas dentro do processamento de linguagem natural. CNNs também foram implementadas em GPUs de forma bastante eficiente, melhorando significativamente seu desempenho.

Long Short-term Memory

Você se lembra na discussão sobre retropropagação que a rede sendo treinada era feed-forward. Nessa arquitetura, os usuários integram entradas à rede e as propagam por meio de camadas ocultas para a camada de saída. Porém, existem várias outras topologias de rede neural. Uma, que eu investigo aqui, permite que as conexões entre os nós formem um ciclo direto. Essas redes são chamadas de redes neurais recorrentes e podem retroalimentar camadas anteriores ou nós subsequentes dentro de sua camada. Essa propriedade torna essas redes ideais para dados de série temporal.

Em 1997, foi criado um tipo especial de rede recorrente chamado Long Short-term Memory (LSTM). O LSTM consiste em células de memória que, dentro de uma rede, se lembram de valores de períodos curtos ou longos.

Figura 10. Uma rede Long Short-term Memory e a célula de memória
Gráfico mostrando como funciona um LSTM e uma célula de memória
Gráfico mostrando como funciona um LSTM e uma célula de memória

Uma célula de memória contém portas que controlam como as informações entram e saem dela. A porta de entrada controla quando as novas informações podem entrar na memória. A porta de esquecimento controla por quanto tempo uma informação existente fica retida. Por fim, a porta 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 chamado de retropropagação no tempo (uma variação da retropropagação), otimiza esses pesos com base no erro resultante.

O LSTM foi aplicado ao reconhecimento de discurso, ao reconhecimento de caligrafia, à síntese de texto para fala, à legenda de imagem e a várias outras tarefas. Vou revisar brevemente o LSTM.

Deep learning

Deep learning é um conjunto relativamente novo de métodos que está mudando o aprendizado de máquina de formas fundamentais. O deep learning não é um algoritmo propriamente dito, mas uma família de algoritmos que implementam redes profundas com aprendizado sem supervisão. Essas redes são tão profundas que novos métodos de cálculo, como GPUs, são necessários para construí-las (além de clusters de nós de cálculo).

Este artigo explorou dois algoritmos deep learning até agora: CNNs e LSTMs. Esses algoritmos foram combinados para realizar diversas tarefas surpreendentemente inteligentes. Conforme mostrado na figura a seguir, CNNs e LSTMs foram utilizados para identificar e, depois, descrever uma imagem ou um vídeo em língua natural.

Figura 11. Combinando redes neurais convolucionais e redes Long Short-term Memory para descrição de imagem
Gráfico mostrando uma imagem original de um gatinho e como combinar redes neurais convolucionais e redes longas de memória de curto prazo
Gráfico mostrando uma imagem original de um gatinho e como combinar redes neurais convolucionais e redes longas de memória de curto prazo

Algoritmos deep learning também foram aplicados ao reconhecimento facial, à identificação de tuberculose com 96 por cento de precisão, a veículos autônomos e a vários outros problemas complexos.

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

Outro aplicativo, chamado Deep Patient, podia prever uma doença com sucesso, dados os registros médicos do paciente. O aplicativo se provou muito melhor no prognóstico de doenças do que os médicos—mesmo para esquizofrenia, que é notoriamente difícil de diagnosticar. Portanto, mesmo que os modelos funcionem bem, nenhum pode alcançar grandes redes neurais para identificar o porquê.

Computação cognitiva

A IA e o aprendizado de máquina são preenchidos por exemplos de inspiração biológica. E enquanto a antiga IA estava focada nos grandes objetivos de construção de máquinas que imitassem o cérebro humano, a computação cognitiva está se esforçando para atingir esse objetivo.

A computação cognitiva, baseada em redes neurais e deep learning, está aplicando conhecimento de ciências cognitivas para desenvolver sistemas que simulem processos do pensamento humano. Entretanto, em vez de focar em um único conjunto de tecnologias, a computação cognitiva cobre diversas disciplinas, inclusive aprendizado de máquina, processamento de língua natural, visão e interação humano-computador.

Um exemplo de computação cognitiva é o IBM Watson, que demonstrou interações de pergunta e resposta de última geração sobre o Jeopardy mas que a IBM prolongou por meio de um conjunto de serviços da web. Esses serviços expõem interfaces de programação de aplicativos para funções de reconhecimento visual, de fala para texto e de texto para fala; entendimento e tradução de idiomas; e mecanismos de conversação para construir poderosos agentes virtuais.

Indo além

Este artigo cobriu apenas uma fração da história da IA e o que há de mais recente nas abordagens de rede neural e deep learning. Embora a IA e o aprendizado de máquina tenham seus altos e baixos, novas abordagens como deep learning e computação cognitiva elevaram significativamente o nível nessas disciplinas. Uma máquina consciente ainda pode ser inacessível, mas os sistemas que ajudam a melhorar a vida das pessoas estão por toda parte.

Para obter mais informações sobre como desenvolver soluções IoT cognitivas para detecção de anomalias utilizando deep learning, consulte Introdução ao deep learning e às redes Long-short Term Memory.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cognitive computing
ArticleID=1062456
ArticleTitle=Um guia para iniciantes sobre inteligência artificial, aprendizado de máquina e computação cognitiva
publish-date=06012017