Atualmente, muito se fala em inteligência artificial. O Google investe, Microsoft, Amazon, Uber, Facebook, Apple… E essa lista não para por aqui. Nós sabemos que é uma tecnologia pujante, que, juntamente com a correta análise do Big Data, certamente será uma das ferramentas mais poderosas que nós teremos no futuro próximo.
A ideia deste artigo é falar um pouco da inteligência artificial, mais precisamente abordar os algoritmos das redes neurais artificiais (RNA), sua arquitetura, seu funcionamento e suas principais aplicações.
Embora muitos tenham a ideia de que redes neurais são sistemas computacionais que imitam o cérebro humano, na realidade, essa ideia de rede neural não passa de uma metáfora. Essa metáfora é totalmente plausível, pois as redes neurais artificiais tomam por base as redes neurais biológicas associadas ao processamento paralelo do cérebro humano.
A rede neural, em suma, é uma abordagem alternativa aos métodos estatísticos tradicionais utilizados para solucionar problemas de previsão de séries temporais. Apesar de parecer simples à primeira vista, é preciso sempre ter em mente a metáfora do cérebro humano, pois esse modelo matemático se baseia nesse funcionamento.
O neurônio biológico
Sendo assim, é necessário entender primeiramente como funciona o neurônio. Você pensou que aquelas aulas de biologia seriam inúteis né? Simploriamente falando, um neurônio é constituído por um corpo celular, que possui algumas ramificações chamadas de dendritos. O mesmo corpo celular possui um alongamento chamado axônio, cuja extremidade é chamada de telodendro. A passagem do impulso nervoso se dá na região da sinapse. Isso mesmo, aquela que é acelerada com uma pequena dose de álcool (lembre-se, eu disse pequena!). Essa área é composta pelo encontro dos dendritos de um neurônio com os axônios de outro. E sempre ocorre no sentido axônio, dendrito.
Você deve estar se perguntando por que isso é importante. Os neurônios funcionam baseados na lei do tudo ou nada. Ou seja, se o estímulo excitatório for muito pequeno, nenhuma propagação é efetuada. Por outro lado, desde que o limiar seja atingido, independentemente da sua intensidade, o potencial da ação do neurônio será o mesmo. Essa lei foi o primeiro passo para que se desenvolvesse o primeiro modelo matemático para o desenvolvimento das redes neurais artificiais.
Primeiro modelo de neurônio artificial
O primeiro modelo, concebido em 1943 por McCulloch e Pitis, é formado por um vetor de entrada, e as sinapses são representadas por pesos numéricos. Vide fórmula abaixo:
Na figura, X1 a Xn representam as variáveis de entrada i do neurônio de saída j. A entrada líquida é dada pela somatória dos pesos sinápticos de i=1 até n, onde ? é o limiar sináptico.
Posteriormente, muitos outros modelos matemáticos foram desenvolvidos: Perceptron, Adaline (extensão do Perceptron), Perceptron multicamadas (MLP), Algoritmo Backpropagation, Redes de Jordan e Elman, Algoritmo GDMH, Combinacional, Iterativo Multilayer, Multiplicativo-aditivo, Multilayer com Neurônio Ativo, Multiaplicativo-aditivo com Neurônio Ativo, Algoritmo Evolucionário, Rede ART, Rede Counter-propagation, Rede de Hopfield, Rede de Kohonen, Rede LVQ.
Apesar do grande número de modelos de RNA, aqui vamos citar apenas o modelo inicial e o Algoritmo Evolucionário.
O algoritmo de Darwin
Outro algoritmo muito utilizado para a resolução dos problemas atuais é o Algoritmo Evolucionário. Ele é baseado nos princípios da evolução biológica de Darwin, no qual o mais apto sobrevive. Por conta desse modelo evolucionário, esse algoritmo é bastante utilizado na aprendizagem de uma RNA. Basicamente, ele busca os pesos sinápticos que melhor representam a solução do problema.
Esse modelo utiliza muito bem a metáfora de Darwin.
Oi? O que Darwin tem a ver com inteligência artificial?
Vamos lá! À uma população inicial são aplicados operadores genéticos de mutação e cruzamento em cada indivíduo com o intuito de que eles evoluam e representem melhores soluções para o problema.
O algoritmo se inicia com uma população inicial gerada aleatoriamente. Nessa população, é avaliada a aptidão à sobrevivência de cada indivíduo. Em seguida, a aptidão dá a cada indivíduo uma pontuação baseada na pontuação desejada para a resposta almejada. Aqui, o cálculo da aptidão de cada indivíduo é realizado pela função do erro médio quadrático a seguir.
Ao final do cálculo de aptidão, é formada uma nova população de filhos por meio do processo de seleção e cruzamento. Nesse ponto, o processo de seleção por torneio escolhe os filhos que serão pais para gerar o processo de reprodução. Em seguida, é aplicado o operador genético de cruzamento, o que permite a troca de material genético dos pais, possibilitando assim que os filhos recebam as características dos pais. Então, na nova população de filhos, é aplicado o operador genético de mutação, alterando aleatoriamente o valor de um gene do indivíduo que tenha uma probabilidade mínima de mutação. Ao final de todo esse processo, a nova população passa pelo processo de elitismo, no qual o indivíduo menos apto é substituído pelo melhor indivíduo da população anterior.
As camadas
Se você está acompanhando bem o artigo, percebeu que todo algoritmo de RNA é baseado em um modelo matemático. E percebeu também que esse modelo matemático normalmente tem relações com modelos biológicos. Além disso, percebeu que ele é composto, muito rudemente falando, de somatórias, combinações, pesos e camadas. Vamos explicar agora o que são as camadas.
Quando falamos de RNA, existem três tipos de camadas: camada de entrada, intermediária ou oculta e camada de saída. As camadas intermediárias são as responsáveis por receber os dados advindos do meio externo. Essas entradas normalmente são normalizadas por funções de ativação e implicam uma melhor acurácia numérica perante as operações matemáticas. Já as camadas ocultas são constituídas pelos neurônios que são responsáveis pela extração das características associadas ao sistema a ser inferido. Aqui é onde ocorre praticamente todo o processamento interno da rede. E, por sua vez, as camadas finais são constituídas pelos neurônios que são responsáveis por produzir e apresentar os resultados finais advindos dos processamentos das camadas anteriores.
As camadas e a disposição dos neurônios são basicamente responsáveis pelos tipos de arquiteturas de RNA encontradas atualmente. Abaixo, segue um modelo de camadas e quantidade de neurônios.
Arquiteturas e aplicações
Essas arquiteturas são responsáveis pela performance da sua RNA. Ou seja, se você está querendo desenvolver um algoritmo de RNA para utilizar na sua aplicação, precisa pensar em qual arquitetura será mais útil na resolução do seu problema. A mesma arquitetura pode ser excelente para um problema, e nem tão boa para outro.
As RNAs são classificadas de acordo com a sua arquitetura em:
- Dinâmica;
- Fuzzy;
- Única camada;
- Múltiplas camadas.
Quando utilizar uma RNA? Para a utilização de RNAs, você pode utilizar basicamente o seguinte critério de classificação, lembrando que isso não é uma receita de bolo.
- Reconhecimento de padrões e classificação;
- Processamento de imagem e visão;
- Identificação de sistema e controle;
- Processamento de sinais.
Os itens acima podem ser considerados macrotemas. Abaixo, seguem algumas aplicações específicas:
- Reconhecimento de voz;
- Software de OCR;
- Identificação de spam;
- Cloud computing;
- Mercado financeiro;
- Agricultura;
- Previsão do tempo;
- Medicina.
Para se ter uma ideia do uso das RNAs na medicina, Karabatak, em 2009, apresentou um sistema de diagnóstico automático para câncer de mama, utilizando a base de dados Breast Cancer, baseado nas regras de associação e em uma RNA multilayer perceptron.
Espero que nestas poucas páginas eu tenha conseguido instigar a sua curiosidade sobre as RNAs. Caso você queira se aventurar neste mundo de IA, pense que as RNA são um modelo matemático que se apropria de padrões biológicos para desenvolver um sistema computacional capaz de evoluir por meio de treinamento.
Sendo assim, você vai precisar estudar muita matemática para desenvolver seus algoritmos, praticar a observação da natureza para elaborar seus modelos matemáticos, e ter muita paciência para testar seu algoritmo e sua arquitetura.
Não se esqueça: a tecnologia é apenas um meio para um fim. Saiba o que fazer com ela!