Redes Neurais
E se os programas de computador fossem capazes de se
aperfeiçoar, com o tempo de uso, para satisfazer cada vez melhor as necessidades
de seus usuários? Essa possibilidade, de grande valor para as empresas de
software, está cada vez mais próxima da realidade graças a tecnologias de
inteligência artificial que permitem que os programas “aprendam” com o que seus
usuários fazem. As redes neurais são uma dessas tecnologias.
Redes Neurais o que são?
De acordo com Ian Carvalho, que trabalha na área de pesquisa
em uma multinacional de tecnologia, as redes neurais são modelos de computação
inspirados no cérebro humano, que têm como objetivo processar informação ou
reconhecer padrões.
Elas se diferenciam dos programas de computadores mais
tradicionais, principalmente, porque sua programação não é feita completamente
por seres humanos. Embora ela seja construída e treinada por programadores,
eles têm acesso apenas aos dados de entrada e saída dela.
Segundo Carvalho, “Redes neurais funcionam como caixas
pretas. Ou seja, você tem acesso à entrada e à saída, mas não sabe exatamente o
que acontece em seu interior. Isso faz com que seja difícil depurar erros e
saber porque certas saídas foram resultados de suas respectivas entradas”.
Pode parecer curioso que um programa de computador não seja
plenamente compreendido pelos seus próprios criadores. No entanto, isso
acontece por conta da maneira como as redes neurais funcionam. Para entender
melhor esse aspecto, é necessário que nos aprofundemos mais na forma como elas
são construídas.
Aprofundando-se nas redes neurais
Dentro dos neurônios, cada entrada é multiplicada por um
determinado valor. Os valores de todas as entradas são somados e, então, o
resultado é convertido para a saída do neurônio e enviado para o neurônio seguinte.
Esse valor, no entanto, é “aprendido” pela rede durante um processo de
treinamento.
No treinamento, um programador “alimenta” a rede com uma
série de dados de entrada e os resultados de saída esperados. De acordo com
Carvalho, a rede, então, compara todas as informações disponíveis e reforça os
valores de multiplicação das entradas que gera as saídas esperadas. As redes
podem ter diversas camadas de neurônios, e redes com muitas camadas são
chamadas de redes "profundas"; daí o nome "deep learning"
usado para se referir a processos de aprendizagem de máquina que usam essas
redes.
A humanidade sempre desenvolveu máquinas para nos auxiliar.
Elas aperfeiçoam nossa potência ou velocidade, reduzindo o tempo de trabalho ou
aumentando nossa força. São poucas as máquinas que fazem o que o ser humano não
faz, mas todas fazem o que fazemos de uma forma muito mais eficaz.
Recentemente, principalmente a partir da Terceira Revolução
Industrial, com o desenvolvimento de computadores e a implantação de sistemas
informatizamos no trabalho, muitos pesquisadores vêm desenvolvendo máquinas
para nos ajudar a pensar melhor. Conseguimos até agora, com bastante eficácia,
melhorar nossa força, nosso rendimento, nossa velocidade, mas mal arranhamos a
capacidade de melhorar nossa inteligência. Isso acontece principalmente porque
mal conhecemos como ela funciona.
Computadores fazem parte do nosso dia-a-dia, principalmente
do trabalho. Muitas pessoas defendem que a inteligência é fruto do pensamento
lógico e desenvolveram vários sistemas lógicos diferentes, culminando na
criação dos computadores. Outras pessoas defendem que a inteligência humana é
fruto de como nosso cérebro é organizado. Esse grupo desenvolveu, na década de
1940 e 1950, a teoria das Redes Neurais.
Essas redes eram tão promissoras, que vários pesquisadores
acharam que isso não daria certo ou esse modelo nunca alcançaria as previsões
feitas até então. Durante mais de 20 anos, as pesquisas sobre redes neurais
caíram em descrédito e mais ênfase foi dada à computação lógica conhecida e
utilizada atualmente.
Porém, de um tempo para cá, principalmente devido ao avanço
das neurociências, as pesquisas sobre redes neurais foram retomadas e muita
coisa foi desenvolvida. Existem pesquisas, por exemplo, para o desenvolvimento
de neurocomputadores. Para se entender melhor o que são as Redes Neurais e como
seria os computadores baseados nelas, vale à pena conhecer como funcionam os
neurônios. Neurônios funcionam melhor quando ligados a outros neurônios.
Construindo conexões
Isso significa que durante o processo de treinamento, a rede
neural cria conexões entre as saídas de um neurônio e a entrada de outro que
não são totalmente conhecidas pelos programadores. Isso porque não são eles que
determinam os valores de multiplicação das entradas de cada neurônio, mas a
própria rede, com base nos dados de entrada e na saída esperada.
Fica claro, portanto, que o processo de treinamento é
essencial para a criação de uma rede neural. Segundo o professor Gomi, “o
grande desafio na área de redes neurais tem sido encontrar métodos efetivos
para treiná-las de forma que sua função seja executada com a menor taxa de
erros possível”.
Por outro lado, isso também representa uma das principais
vantagens desse método sobre as demais tecnologias de aprendizagem de máquina.
Segundo a professora titular do Instituto de Ciências Matemáticas e
Computacionais da USP, Roseli Romero, “a vantagem das redes neurais é que elas
podem aprender com exemplos. A partir deles, elas têm a capacidade de
generalizar”.
Com isso, as redes neurais são capazes de lidar até mesmo com
situações para as quais não foram especificamente preparadas. Conforme Roseli
explica, uma rede treinada para reconhecer imagens geométricas, por exemplo,
“será capaz de classificar ou reconhecer imagens que se pareçam com aquelas
aprendidas, mesmo que elas não estejam posicionadas exatamente na mesma posição
das imagens usadas para o treinamento”.
É por meio dessa característica, por exemplo, que um sistema
de reconhecimento facial consegue reconhecer um rosto mesmo que parte dele
esteja escurecida. Ou, ainda, que um sistema de reconhecimento de fala (como o
do buscador do Google para smartphones) seja capaz de entender o que você disse
mesmo com ruído de fundo.
Outro motivo para que essa técnica de aprendizagem de
máquina tenha frequentemente sido preferida em relação a outras, segundo
Roseli, é o desenvolvimento do hardware de computadores. “Com o aumento da
capacidade computacional dos computadores de hoje, com as placas gráficas
disponíveis, tornou-se possível trabalhar com quantidades enormes de dados”,
diz.
O Comportamento dos Neurônios
Os neurônios são as células que formam o nosso cérebro. Elas
são compostas basicamente por três partes: os dentritos, que captam informações
ou do ambiente ou de outras células, o corpo celular ou Soma, responsável pelo
processamento das informações, e um axônio, para distribuir a informação
processada para outros neurônios ou células do corpo. Só que uma célula
dificilmente trabalha sozinha. Quanto mais células trabalharem em conjunto,
mais elas podem processar e mais eficaz torna-se o trabalho. Logo, para o
melhor rendimento do sistema são necessários muitos neurônios.
Dos Neurônios às Redes Neurais
Foi pensando em como os neurônios trabalham que
pesquisadores desenvolveram neurônios artificiais. Cada um tem dois ou mais
receptores de entrada, responsáveis por perceberem um determinado tipo de
sinal. Eles também possuem um corpo de processadores, responsável por um
sistema de feedback que modifica sua própria programação dependendo dos dados
de entrada e saída. Finalmente, eles possuem uma saída binária para apresentar
a resposta “Sim” ou “Não”, dependendo do resultado do processamento.
Um neurônio artificial tenta imitar o comportamento de um neurônio natural.
Um neurônio artificial é capaz de um único processamento.
Cada entrada recebe somente um tipo de sinal ou informação. Como um neurônio
pode possuir várias entradas, então ele pode perceber diferentes sinais. Porém,
ligar vários neurônios similares em rede, faz com que o sistema consiga
processar mais informações e oferecer mais resultados.
Por exemplo, é possível criar um sistema para identificação
de bananas e maças. Para tal, cria-se neurônios sensíveis a cor e forma. Os de
cor percebem o amarelo e o vermelho. Os de forma percebem o redondo e o
comprido. Cada neurônio, então, possui quatro entradas, uma para cada
informação.
Para obter um melhor rendimento do sistema, cria-se uma rede
em camadas: uma primeira camada com quatro neurônios (um para cada sinal de
entrada), uma segunda camada oculta de processamento com três neurônios e uma
camada de saída com dois neurônios, um para avisar quando é uma maça e outro
para avisar quando é uma banana.
Uma rede neural é
capaz de identificar diferentes padrões.
O segredo não está na arquitetura dessa rede, mas na forma
como ela processa: Redes Neurais não rodam programas, elas aprendem!
O aprendizado das Redes Neurais
Não existe uma programação pré-definida dos neurônios
artificiais, como existem nas portas lógicas utilizadas nos circuitos
computacionais. Ao invés disso, eles possuem um sistema de feedback que
modifica sua programação. Cada informação processada gera um peso, dependendo
do resultado. Se for um acerto, ela ganha um ponto, se for um erro, ela perde
meio ponto.
Dessa forma, a rede neural do exemplo acima testa várias
vezes a percepção do objeto. A cada acerto, os neurônios envolvidos no
processamento ganham um ponto e aquela rede é reforçada. A cada erro, esses
neurônios perdem meio ponto. Dessa forma, o sistema cria a rotina de seguir o
caminho com mais pontos sempre. Quanto mais tentativas, mais aprimorado fica o
sistema, chegando, ao final de um processo de aprendizado, a executar tarefas
quase sem erro algum.
Uma rede neural não precisa de memória para executar suas
tarefas aprendidas. A grande vantagem disso é que para executar tarefas, uma
rede neural não precisa guardar instruções de comando e executá-las de forma
lógica, como num computador tradicional. Ao invés disso, a rede aprende o que é
preciso ser feito e executa a função. Dessa forma, uma mesma rede, se ela for
capacitada com os neurônios necessários para tal, é capaz de executar várias
funções diferentes, independente de espaço de memória.
Isso porque em uma mesma rede é possível criar várias regras
diferentes. No exemplo acima, podemos ainda ensinar a rede a detectar bolas amarelas
ou bastões vermelhos, utilizando os mesmos neurônios e as mesmas regras. A
diferença é q precisaríamos capacitá-las com neurônios de saída extras para
cada nova informação que queremos dela e outros neurônios ocultos para
facilitar o processamento. Mas isso não implica em criarmos novas regras ou
novas programações, somente em ensinar o sistema e executar novas funções
utilizando a mesma rede existente.
Em sistemas mais elaborados, uma rede neural consegue
aprender qualquer função que uma pessoa possa saber e não há limites para a
quantidade de informação que ela possa processar.
Dificuldades de aprendizado
Mesmo com esses avanços, no entanto, as redes neurais ainda
têm seus limites. Conforme aponta Gomi, elas “são boas para determinadas
tarefas, como reconhecimento de padrões. Mesmo assim, é preciso ter em mente
que a eficácia na execução de determinada tarefa depende da qualidade do
conjunto de treinamento, e que não há garantia de que uma rede neural dará
sempre uma resposta correta”.
Por esse motivo, Gomi opina que ainda é necessário ter
cautela no uso dessa tecnologia. “Aplicações críticas, como em diagnóstico
médico ou identificação de fraudes, só devem ser executadas sob o comando de
profissionais qualificados e treinados para o uso dessas redes neurais”, diz.
Segundo Carvalho, “mesmo com o avanço da área nos últimos
anos, algumas tarefas ainda não podem ser ensinadas aos computadores devido ao
alto nível de complexidade”. O pesquisador também lembra que em, alguns casos,
métodos mais simples podem ser mais eficientes para executar algumas tarefas.
Inteligência?
Segundo a professora Romero, “as redes neurais foram
inspiradas no funcionamento do cérebro humano”, ainda que “alguns modelos [de
redes neurais] sejam mais biologicamente plausíveis do que outros. Em outras
palavras, ainda não entendemos direito como nosso cérebro funciona, mas é
possível que seja de uma maneira semelhante a essas redes.
No entanto, Romero ressalta que “mesmo o modelo de redes
neurais multi-camadas, que não é considerado um modelo plausível, possui um
poder de classificação e reconhecimento incrível, comparável ao desempenho dos
seres humanos”. Isso reforça o quanto a tecnologia é impressionante.
E, de acordo com Romero, não há problema algum em dizer que
as redes neurais tornam os sistemas “inteligentes”: “Quando vemos o mundo, o
tempo todo estamos recebendo imagens, analisando e tomando decisões em função
dos sinais que estamos recebendo. É exatamente isso que os sistemas de redes
neurais propiciam aos sistemas computacionais: que eles fiquem mais
inteligentes”.
Inteligência Artificial (IA)
As redes neurais são principalmente utilizadas para criar
sistemas de inteligência artificial. Os computadores tradicionais podem fazer
isso de forma simulada, mas sua principal função é seguir regras ou comandos
oferecidos pelo usuário. Assim, a inteligência artificial gerada por
computadores tradicionais são simulações de inteligência real, ou seja,
apresentam respostas segundo regras e comandos de um programa pré-estabelecido.
Um sistema inteligente é capaz de resolver problemas de
forma eficaz. Acontece que a verdadeira inteligência não é a capacidade de
seguir regras, mas sim a capacidade de resolver problemas. Mais inteligente é o
sistema que consegue resolver problemas diferentes de forma eficaz. Baseado
nisso, temos então duas formas diferentes de inteligência artificial, ou IA, a
simbólica e a conexionista.
A IA simbólica simula o comportamento inteligente. Ela é
baseada em uma programação que indica quais respostas devem ser dadas diante de
determinados comandos. Essa IA é a utilizada em programas “inteligentes”, como
corretores ortográficos ou simuladores dos mais variados. A questão é que esses
programas dificilmente aprendem coisas novas, somente se você incluir novas
programações. Essa é a IA mais comum.
A IA conexionista simula a estrutura do cérebro, pois
acredita-se que a inteligência está na forma de processar informação e não na
informação processada. Como o sistema do cérebro é inteligente, usa-se tal
modelo para desenvolver IA. Assim, os sistemas de IA baseados em redes neurais
conseguem aprender com seus erros e executar diferentes processos, independente
de instruções.
As Redes Neurais e o Perceptron
Não só pensando nisso, mas principalmente tentando
desenvolver melhores formas de inteligência artificial, alguns pesquisadores
começaram a estudar o funcionamento dos neurônios. Em especial, Frank
Rosenblatt pesquisou a estrutura da retina humana. Ela é composta por vários
neurônios sensoriais, responsáveis por perceber as cores e as formas. Cada um
desses neurônios transmite uma resposta em rede para vários outros neurônios
que então enviam suas informações para o cérebro para finalmente processá-las e
transformá-las em imagens. Essa é a base de funcionamento dos neurônios
artificiais, que levaram ao desenvolvimento do Perceptron.
No início, um
computador ocupava uma grande sala de trabalho.
O Perceptron foi à primeira máquina criada para
processamento de informação feita sobre o sistema de redes neurais. Ele foi o
primeiro sistema de processamento pequeno o suficiente para ser usado por uma
pessoa, diferente dos computadores da época que ocupavam salas enormes com seus
processadores. Ele foi considerada por muitos como o pai do computador pessoal.
Atualmente, o Perceptron é conhecido como a forma de
processamento de informação baseado em redes neurais. Ele é construído com
neurônios artificiais, formando redes de processamento. Uma rede dessas é
chamada de Perceptron.
Diferenças entre Computador e Perceptron
A melhor forma de compreender a singularidade desse sistema
é compará-lo ao computador. Talvez a característica mais marcante de um
Perceptron seja que ele não executa programas, mas os aprende. Em um
computador, instala-se instruções de comando que formam um programa. Em um
perceptron, treina-o para executá-los. As informações não são gravadas, mas
aprendidas.
Um computador funciona a partir da execução de operações
lógicas, rodando programas que podem ser reduzidos à combinação de
procedimentos de lógica booleana. Por sua vez, um perceptron é capaz de
processos não-lógicos, comparações e transformações, pois seus sistema não é
condicionado a um funcionamento lógico e linear.
Essas são as
principais diferenças entre um computador e um perceptron.
Ao mesmo tempo, um perceptron é capaz de múltiplos
processamentos e testes de hipóteses em paralelo, enquanto computadores
funcionam com um processamento em cada circuito de cada vez. Isso faz com que a
velocidade de processamento do perceptron seja muito maior do que a de um
computador tradicional.
Finalmente, um computador está preso à sua programação. Ele
só executa aquilo que foi programado. Enquanto isso, um perceptron pode
perceber novas possibilidades, aprender com as tentativas e erros e apresentar
novos resultados.
Computador neuromórfico
O professor Robinson Pino e seus colegas da Universidade de
Boise, nos Estados Unidos, deram um passo importante rumo à construção do seu
apregoado computador neuromórfico.
O circuito foi construído com memristores, componentes
eletrônicos capazes de se "lembrar" das correntes elétricas que
passaram por eles, o que faz com que sejam chamados de sinapses artificiais.
Os cientistas acreditam que essas sinapses artificiais poderão
ser usadas para construir computadores cujo funcionamento se assemelhe ao
funcionamento do cérebro humano.
Sinapses artificiais
O grupo do professor Pino construiu um processador
neuromórfico que é basicamente uma rede neural formada por 100 memristores, ou
100 sinapses artificiais.
Os memristores foram construídos pela própria equipe, à base
de calcogeneto, contendo Ge2Se3, e prata, uma inovação nessa área ainda
nascente.
Os resultados demonstram que a rede neural de memristores
pode ser programada para cada estado memristivo individual - eles programaram
três estados diferentes de cada sinapse artificial.
Embora ainda esteja em seus estágios iniciais de
desenvolvimento, essa capacidade de programação em multi-estados é altamente
promissora, apontando para uma abordagem potencialmenet muito mais eficiente do
que, por exemplo, os primeiros processadores cognitivos da IBM, apresentados há
pouco mais de um mês.
Conclusão
Sabe-se que nenhuma máquina é capaz de superar a
inteligência humana. Muitas são capazes de vários processamentos por segundo,
de calcular inúmeras possibilidades, mas nenhum computador é capaz de aprender
com seus erros. Já os perceptrons nos mostram que podemos construir máquinas
realmente inteligentes, capazes de aprender, de errar, de melhorar e
principalmente, que não são presos a programações que podem falhar. O que
limita uma máquina dessas é sua própria experiência.
Aliado a isso e ao uso de nanotecnologia, podemos esperar
grandes avanços nos computadores e na forma como entendemos a mente humanao. O
que virá disso tudo, só o futuro pode dizer.
Referências
Chip neural: rumo ao computador neuromórfico
Disponível em: http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=chip-neural-computador-neuromorfico#.WDCYaX2uYZM
Acessado dia 19 de Novembro de 2016
Saiba como as redes neurais deixam os computadores 'inteligentes'
Disponível em: http://olhardigital.uol.com.br/pro/noticia/saiba-como-as-redes-neurais-deixam-os-computadores-inteligentes/60876
Acessado dia 19 de Novembro de 2016
O que são Redes Neurais?
Acessado dia 19 de Novembro de 2016
Comentários
Postar um comentário