Tem este artigo a finalidade de introduzir o leitor ao estudo conceitual e também prático de um dos assuntos pertencentes ao estudo mais avançado da informática que trata das redes neurais artificiais (RNA) e consequentemente a inteligência artificial (IA), utilizando de uma linguagem simplificada e acessível a todos os interessados por esta interessante área da tecnologia da informação (informática), conhecida por "inteligência artificial" ou IA.

            A partir da década de 80 vivenciamos o resurgimento dos assuntos relacionados as redes neurais artificiais. Este é um assunto muito interessante para o pessoal de programação de computadores no sentido de fornecer uma outra forma, um outro paradigma da própria computação, que é diferente da que normalmente trabalhamos por ser normalmente baseada em algoritmos. Já nas redes neurais artificiais utilizamos de outros conceitos que possibilitam inclusive a resolução de problemas de maneira mais efetiva do que a forma proporcionada pelas linguagens de programação disponíveis na atualidade.

            A intenção das redes neurais é a resolução de problemas, alguns dos quais bem avançados, utilizando uma forma não-algorítmica e de uma maneira, ou seja, em uma estrutura que lembra o funcionamento do próprio cérebro humano com sua rede de neurônios, sinapses etc...

            Atualmente muito se fala em computação paralela e esta é justamente uma das principais características das redes neurais, pois o conceito faz parte da construção da estrutura deste tipo de processamento computacional que por este motivo nos leva a possibilidade de um desempenho superior aos modelos convencionais, permitindo novamente que a máquina solucione problemas complexos.

            Historicamente falando, o primeiro modelo artificial de um neurônio biológico foi realizado por Warren McCulloch e Walter Pitts, no incrível ano de 1943, digo incrível pelo fato de que nesta época não existia sequer a informática como conhecemos hoje, não existia o computador pessoal ou PC, porém existia a ideia matemática da construção de uma imitação do funcionamento do cérebro e então foi possível conceber uma nova forma de resolver problemas com aplicações práticas além do que podia ser imaginado na época.

            Ter inteligência é ter também a capacidade de aprender

            Uma rede neural antes de ser colocada em uso deverá passar por um processo de "treinamento", onde são realizados testes e coletados resultado do funcionamento da mesma de forma que a solução dos problemas propostos sejam atingidos com o mínimo de erro. A cada teste são realizados ajustes nos "pesos" matemáticos nas fórmulas existentes dentro da implementação de cada "neurônio" da rede de forma que após aprendido determinada tarefa o sistema irá funcionar por si só.

            Um exemplo de uma das redes neurais mais antigas são as redes Perceptron. Foi inventada por Frank Rosenblatt em 1957 e de maneira similar ao neurônio que temos no cérebro há entradas de dados que no nosso cérebro são realizados pelos "dentritos", que no neurônio recebe os impulsos nervosos, mas no caso dos computadores recebem variáveis ou valores tais como x1, x2, x3 etc... Então tais valores são calculados, processados e se ultrapassarem determinado limiar ou valor pré-estabelecido será disparado um valor de saída "1", mas se o valor calculado for menor do que o limiar a saída será de "-1". A diferença entre a saída calculada e os dados de entrada é justamente o resultado aprendizado deste neurônio que é realizado ajustando os pesos matemáticos.

            Pensando em um exemplo para melhor entendimento do treinamento de uma rede neural imagine que você está treinando uma rede neural para reconhecer o comando vocálico "abrir porta!". Então você faz a entrada no sistema dizendo o comando e o que a rede deverá fazer é acionar o motor que abre a porta de sua casa. Nas primeiras tentativas poderá ocorrer de você executar o comando e o sistema não responder, então você ajusta os pesos sinápticos até o que o mesmo responda. Em outras ocasiões poderá ocorrer de você dizer algo semelhante como "abrir torta!" e o sistema responder de forma errada o que demandaria mais ajustes até que o sistema "aprenda" que deverá disparar a resposta apenas quando a entrada vocálica for exatamente o que desejamos.

            É justamente no treinamento da rede neural que mora sua fragilidade. A grande questão é como podemos garantir que a rede interpretou exatamente o que se espera dela? Podemos realizar testes e mais testes, porém será que é possível termos absoluta certeza ao ponto de deixarmos a mesma realizar uma tarefa que está sujeito a algum risco de vida por exemplo, como nos casos de algumas aplicações críticas?

            Difícil garantirmos que a rede do exemplo citado acima aprenda exatamente aquilo que desejamos a partir de exemplos, pois como poderemos dar entrada no sistema de todos os tipos de sons de forma que a rede aprenda que deverá responder apenas ao "abrir porta!"?

            O processo de treinamento da rede pode ser demorado e demandar certo sacrifício, mas uma rede bem treinada uma será teoricamente capaz de atender nossas expectativas, simulando certa "inteligência" ou capacidade de interpretar dados (ou estímulos) e fornecer respostas que simulem certa forma de inteligência, naturalmente que artificial.

            Assim fazendo um paralelo a rede neural biológica, se o percentual de excitação do neurônio for suficientemente alto, a célula "dispara" seu impulso nervoso sendo então transmitido para as células seguintes, em uma rede neural. Por incrível que parece é através basicamente deste sistema que a maioria de nossas funções cerebrais funcionam.

            Um sistema do tipo perceptron poderá trabalhar com uma complexidade de várias camadas, o que nos remete a complexidade de nosso próprio sistema nervoso, mas conforme podemos perceber, na informática a base de tudo é a matemática, sendo na realidade um sistema de redes neurais basicamente um sistema operando com cálculos e funções matemáticas, mas organizado de tal forma que possibilitaria a uma máquina reconhecer uma imagem ou um som, uma voz, a semelhança do ser humano. Há empresas inclusive utilizando de redes neurais artificiais para realizar análises financeiras. Fato este que nos prova que estamos cada vez mais simulando a inteligência utilizando para isto de uma máquina, ou seja, um meio artificial.

            Veja abaixo as principais aplicações das redes neurais em nosso dia-a-dia e você perceberá até mesmo que já interagiu com elas, sem mesmo estar ciente.

            Aplicações das redes neurais no processamento de imagens e sinais:

            Na área de imagens temos a aplicação das redes neurais no reconhecimento de caracteres, como é o caso do scanner que ao colocar um texto como o de uma revista um software de reconhecimento de caracteres realiza leitura da imagem e transforma em texto já "digitado", no Microsoft Word, por exemplo. Com um pouco mais de aperfeiçoamento no sistema será talvez possível criar uma "inteligência" tal que possibilitará o reconhecimento da própria escrita à mão.

            Lembro de um PocketPC da Microsoft (atualmente foi substituído pelos Tablets) que tive oportunidade de trabalhar e no dispositivo havia uma função que treinando um pouco sua caligrafia era possível com uma caneta apropriada (que já vinha com o mesmo) escrever na tela e o software interpretava o escrito, utilizando dos princípios aqui detalhados, e então transcrevia em caracteres o que era escrito de forma manual porém dentro do software que era um editor de texto simplificado, tal como o Word da Microsoft.

            Na questão dos sons o reconhecimento da fala é algo também muito interessante com as redes neurais, pois já existem editores de textos que após um treinamento onde normalmente uma pessoa lê um texto pré-determinado é possível então treinar a rede para que reconheça sua voz e a partir de então apenas com a fala transcrever um texto para um software editor tal como o Microsoft Word.

            Ainda na questão do reconhecimento de imagens temos por exemplo o reconhecimento de faces para sistemas de identificação criminal ou até mesmo para um controle da qualidade em uma linha de produção de determinado produto que quando apresentado algum defeito visual o próprio sistema irá alertar.

            Recentemente vi um notebook que "desbloqueava" através da leitura da face da pessoa, utilizando de sua webcam. Possivelmente isto será comum em celulares e outros dispositivos dentro de breve.

            Um professor meu de faculdade da área de Inteligência Artificial comentou certa vez para mim que em sua tese de mestrado estava relacionado a um projeto de leitura de imagens por redes neurais, utilizando de satélites, onde o sistema deverá identificar navios inimigos.

            Recentemente abri uma conta em determinado banco e o sistema de senha também já conta com leitura da palma da mão e também por biometria, processos estes, ou melhor dizendo, problemas não-algorítmos, que são realizados pelas redes neurais.

            Talvez futuramente será comum inclusive a leitura da retina, como hoje vemos mais comumente nos filmes de ficção científica.

           

            Aplicações das redes neurais na bioinformática

            A bioinformática está em constante evolução e há grandes projetos envolvendo o estudo do Genoma. Estes projetos, na área biológica, normalmente geram grande quantidade de dados que precisam ser analisados. Uma análise, digamos, "manual" deste dados é humanamente impossível, levando muito tempo e com altos custos. Dai então vemos grande utilidade prática para a redes neurais ao trabalhar com problemas complexos.

            Imaginemos um sistema como este onde seria talvez possível inclusive que o mesmo realize diagnósticos e acompanhamento de doenças entre outras aplicações prática na área da saúde médica e biológica.

            O que podemos esperar do futuro das redes neurais?

            Desde o seu surgimento o computador foi comparado a um "cérebro mecânico", com capacidades de realizar cálculos muito maior do que qualquer ser humano, porém ao mesmo tempo foi temido pelo fato de ser talvez um concorrente ou substituto da humanidade em alguns aspéctos.

            Em um mundo onde a inteligência artificial está cada vez mais presente, a exemplo de recursos de reconhecimento de voz que encontramos no iPhone e em softwares diversos os estudos de redes neurais deverão ser cada vez mais estimulantes aos interessados na informática, sendo esta inclusive uma nova área a ser explorada.

            Como fã de filmes de Ficção Científica como Star Trek fico a imaginar daqui a cem ou duzentos anos qual patamar teremos atingido com a inteligência artificial. Nos filmes vemos computadores que interagem com o ser humano por comandos vocálicos de forma tão natural que facilmente são confundidos com o próprio ser humano tamanha perfeição da simulação da inteligência realizada pelo computador, será que chegaremos lá?

            No filme "2001 - uma odisseia no espaço" vemos um computador com personalidade própria, mas que se rebela contra as pessoas da nave espacial.

            Na trinologia "Matrix" ou em "O exterminador do futuro" também assistimos repetidamente a ficção representando o maior medo da humanidade: que as máquinas se rebelam contra nós, após adquirirem tamanha inteligência.

            Talvez estes filmes sejam apenas a exteriorização de nossos próprios medos, porém também mostram uma resposta sobre a questão de onde pode nos levar a inteligência, seja ela biológica ou não.