Redes Neurais Artificiais para leigos e curiosos

PET PAPO

Redes Neurais Artificiais para leigos e curiosos

Clique na pergunta para expandir ou assista a entrevista pelo nosso IGVT!

@petengenhariabiomedica

Prof. Dr. Wendel Melo

Redes neurais artificiais são modelos computacionais que podem ser utilizados em aplicações diversas, especialmente em situações relacionadas a reconhecimento e classificação de padrões. Em geral, nessas situações há dificuldade acentuada de adoção de técnicas algorítmicas tradicionais para resolução de problemas, por exemplo, em contextos onde seja preciso reconhecer um objeto numa fotografia ou classificar resultados de exames médicos. As redes neurais são inspiradas no sistema nervoso dos seres vivos e são construídas a partir de interconexões de estruturas menores denominadas neurônios, que nada mais são do que um modelo bastante simplificado dos neurônios presentes no sistema nervoso. As redes neurais possuem características marcantes como capacidade de adaptação por experiência (aprendizado), generalização a partir do que foi “aprendido”, armazenamento do conhecimento distribuído entre os diversos neurônios que compõem a rede, possibilidade de processamento em paralelo e tolerância a falhas quando parte da estrutura é corrompida.

Há uma discussão interessante sobre a definição mais apropriada para Inteligência Artificial (IA). Gosto de pensar que a IA é um ramo da ciência da computação que procura expandir a capacidade dos computadores executarem tarefas, tornado-os cada vez mais aptos a realizarem atividades que exigem inteligência quando são executadas por pessoas. É importante frisar que a IA não tem como objetivo imitar o cérebro humano. Primeiramente, porque ainda não compreendemos muito bem o funcionamento do nosso cérebro e da inteligência, e, portanto, é difícil imitá-los com precisão. Em segundo lugar, porque a estrutura de processamento da maioria dos computadores modernos é muito distinta do cérebro humano. Assim, a IA tem sido desenvolvida para ampliar o contexto de aplicação dos computadores se valendo das características e especificidades de processamento dos mesmos.

O aprendizado de máquina, por sua vez, é um sub-ramo da IA que está relacionado à capacidade de fazer computadores adquirirem conhecimento e forma automática através da análise de um conjunto de dados. É por essa razão que dados são considerados valiosos nos dias de hoje. Um conjunto de dados pode servir de insumo para técnicas de aprendizado de máquina que podem impactar a sociedade de diversas formas. Um exemplo recente e marcante é discutido no documentário Privacidade Hackeada, que relata o uso de dados de usuários de uma rede social para construir campanhas políticas mais eficazes, tendo tido possível grande impacto no resultado das eleições, o que, se concretizado, certamente trouxe notáveis consequências.

Por fim, as redes neurais são uma técnica de IA bastante utilizada para previsão; reconhecimento e classificação de padrões, dentre outras aplicações. Para serem utilizadas com sucesso, em geral as redes precisam aprender através de exemplos ou de experiência, o que envolve aprendizado de máquina.

Vale a pena ressaltar que o termo aprendizado de maquina sugere que os computadores estariam desenvolvendo uma consciência e se tornando cada vez mais humanos ao aprenderem coisas diversas. Todavia, na realidade, os computadores ainda estão longe de estarem desenvolvendo uma “consciência” e mesmo adotando técnicas que envolvem o aprendizado de máquina, ainda continuam executando instruções “burramente” sem terem qualquer noção sobre o que estão fazendo. O termo aprendizado de máquina está mais relacionado a percepção de um humano observando de fora a máquina analisar exemplos e apresentar resultados satisfatórios com base nesses. Para esse observador humano, pareceria que a máquina foi capaz de entender a tarefa sendo executada. Todavia, do ponto de vista da máquina, ela continua apenas seguindo instruções automaticamente, sem qualquer entendimento, reflexão ou consciência do que está realmente sendo feito.

Existem diferentes categorias de redes neurais. Todavia, redes neurais clássicas podem aprender através de exemplos no que chamamos de treinamento supervisionado. Por exemplo, supomos que desejamos que a rede seja capaz de analisar tomografias e detectar se um paciente pode ter algum problema, como por exemplo, câncer. Poderíamos projetar uma rede que recebesse as imagens de tomografias como entrada, e tendo feito isso, passamos ao treinamento da rede, onde apresentamos um conjunto diverso de tomografias de pacientes sabidamente com câncer. Cada uma dessas tomografias seria então uma amostra de treinamento, e as apresentaríamos ao algoritmo dizendo: olha, isso aqui são tomografias de pacientes com câncer. Também seria preciso apresentar uma série de tomografias de paciente sabidamente saudáveis dizendo: olha, essas aqui são tomografias de pacientes saudáveis. Ao analisar os dois conjuntos, a rede de alguma forma aprende a reconhecer o padrão de tomografias onde há a doença e o padrão de tomografias onde o paciente está saudável. Esse aprendizado ocorre através do ajuste dos parâmetros numéricos de cada neurônio da rede de modo a fazer com que a rede apresente uma boa taxa de acertos para as amostras de treinamento. Assim, ao analisar uma nova tomografia com resultado desconhecido, espera-se que a rede seja capaz de usar o conhecimento adquirido para detectar com qual dos dois padrões aquela nova tomografia tem mais similaridade. A rede poderia então apresentar uma resposta do tipo: Esse paciente tem X% de chance de possuir um câncer baseado nos padrões aprendidos. Note aqui a importância de haver um conjunto vasto e diversos de amostras com resultado previamente conhecido para realizar o treinamento supervisionado com êxito. Se esse conjunto de amostras de treinamento não contemplar um tipo específico de câncer, por exemplo, a rede não será capaz de reconhecê-lo, o que poderia fazê-la dar um resultado falso negativo, o que poderia ter consequências sérias dependendo do contexto. Por fim, é válido frisar que há outras formas de treinamento, como, por exemplo, treinamento por reforço (recompensa), treinamento semi-supervisionado e treinamento não supervisionado, embora este último seja um pouco incomum no caso das redes neurais.

Depois da etapa de treinamento onde ocorre o aprendizado, a rede neural pode então ser utilizada para reconhecer ou classificar os padrões treinados. É importante frisar que resultados tendem a serem catastróficos quando uma rede neural ou mesmo algoritmo de IA em geral é colocado diante de uma situação não prevista pelos seus desenvolvedores, isto é, uma situação não treinada. Os algoritmos de IA ainda estão um pouco longe de conseguirem simular a capacidade humana de “improvisar” diante de novos cenários. Todavia, além do reconhecimento e classificação de padrões, as RNA’s também podem ser utilizadas como aproximadoras de funções desconhecidas (por exemplo, podemos tentar treinar uma rede para prever o comportamento futuro de ações de uma empresa da bolsa de valores baseada em dados sobre o comportamento passado). Com essa característica, pode-se também construir sistemas de previsão. As RNA’s também podem ser usadas para corrigir padrões de dados imprecisos (por exemplo, uma imagem ou áudio com ruído podem ser “purificados”), em agrupamento de dados (clusterização), controle de processos, resolução de problemas de otimização, etc. O céu é o limite…

Já vivemos num mundo infestado de redes neurais. As redes neurais são estudadas desde a década de 1950, tendo altos e baixos quanto ao interesse dos pesquisadores. Podemos dizer que nos dias de hoje estamos em novo período de alta das técnicas de RNA’s e IA em geral. As RNA’s, por exemplo, já estão presentes nas mais variadas aplicações e sistemas. Você abre a câmera do celular para tirar uma selfie e o aplicativo reconhece o seu rosto. Você pode dar comandos de voz para assistentes virtuais que podem reconhecer o que foi falado. Se você avançar um sinal vermelho com pardal, é tirada uma foto do seu carro. O sistema deve ser capaz de olhar a imagem, detectar onde está a placa do carro e reconhecer os dígitos da placa para enviar uma generosa multa para a sua casa. Cada vez mais investidores usam “robôs” para tentar obter ganhos com ações na bolsa de valores. Há também filtros de e-mails que classificam mensagens como spam. Temos ainda sistemas de pilotagem automática, veículos autônomos, sistemas de produção, sistemas de segurança e monitoramento, sistemas de controle, de tomada de decisões, sistemas de aprovação de crédito, de previsão de vendas… tudo isso que foi citado pode contemplar o uso de redes neurais.

As RNA’s já estão ao alcance de todos. Inclusive, existem muitas ferramentas computacionais que facilitam a vida de qualquer pessoa que queira montar uma RNA ou IA em geral. Em ambientes de programação como Python e R é possível montar redes neurais e treiná-las de modo bem prático e rápido, sem exigência de conhecimento profundo sobre a teoria por trás das mesmas. Para quem tem o apelo mais prático, vale a pena aprender a linguagem de programação Python e estudar bibliotecas como Tensorflow e Scikit-learn. Para quem deseja compreender um pouco de teoria, em língua portuguesa temos o livro Redes Neurais Artificiais para Engenharia e Ciências Aplicadas, de Ivan da Silva et. al., que traz uma visão bastante didática e simplificada do assunto. Para quem quiser ir mais fundo na teoria do assunto, há o clássico Redes Neurais: Princípios e Prática de Simon Haykin. Existe ainda uma infinidade de livros em língua inglesa sobre o assunto, e, é claro, muitos tutoriais e vídeos gratuitos bem interessantes na internet também. É só ir à caça!

Quer saber mais? Entre em contato com o professor

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *