Desenvolvimento

26 jun, 2017

Como funcionam os sistemas imunológicos artificiais

Publicidade

No mundo da IA, aos poucos, iremos perceber que todos os algoritmos são baseados em comportamentos biológicos – que “nada” mais são do que modelos matemáticos capazes de replicar este comportamento. Hoje, abordaremos o algoritmo e algum uso prático dos Sistemas Imunológicos Artificiais (SIA).

Para entender como o SIA funciona, primeiro, precisamos entender como funcionam os sistemas imunológicas biológicos dos vertebrados, que é o sistema utilizado como base. Existem dois tipos de sistemas imunológicos, o inato e o adaptativo. O sistema imunológico inato compreende a primeira barreira de defesa do sistema imunológico e permanece inalterado desde o nascimento do organismo. Este sistema é composto por macrófagos e neutrófilos, que são células fagocitárias, responsáveis pela fagocitose, processo de ingestão, das bactérias, dentre outros.

O sistema adaptativo, por outro lado, é dotado de uma resposta imunológica mais eficaz, visto que a construção desta resposta é baseada em partes de antígenos dos patógenos. São considerados antígenos qualquer substância que, ao entrar em um organismo, é capaz de ativar o sistema imune. É composto, em sua maioria, por linfócitos (glóbulos brancos) produzidos na medula óssea e no timo. Cada linfócito é portador de antígenos de receptores de um antígeno com uma determinada especificidade. Então, quando um linfócito encontra com um “antígeno ativador”, ele se transforma em uma célula efetora, que é responsável por combater especificamente as partículas infecciosas. A partir daí, esta célula é capaz de se proliferar, gerando clones. Este fenômeno recebe o nome de teoria da seleção clonal.

Assim, os algoritmos imunológicos são baseados nos processos imunológicos. O processo imunológico, de uma maneira muito simplória, ocorre da seguinte maneira:

A partir daí, começamos nossa aventura matemática computacional. Este modelo tem como objetivo simular processos evolutivos naturais com o intuito de resolver problemas de exploração combinatória e multimodais. Utilizando este modelo de computação evolutiva, somos capazes de otimizar sistemas computacionais e desenvolver poderosas abordagens para o machine learning.

Para implementar um SIA, precisamos entender um pouco de teoria dos grafos, que não vamos abordar com profundidade. Caso você tenha interesse, recomendo que estude um pouco por fora.

Vamos pensar da seguinte maneira: você tem um problema e precisa encontrar um conjunto solução para resolvê-lo. Você gera uma população formada por anticorpos (árvores geradoras).

Anticorpo em forma de árvore

Esses anticorpos geram novos indivíduos, que possuem as mesmas características dos anticorpos do pai. Esses clones evoluem por meio de operadores de maturação, gerando uma nova população. Para realizar esta mutação, basta sortear N arestas que fazem parte do anticorpo (grafo inicial), e trocá-las por outras que pertencem ao conjunto de corte, gerando assim, a árvore final.

Uma função fitness é utilizada com o intuito de favorecer a reprodução dos indivíduos que tiveram contato com o antígeno e conseguiram se transformar em células efetoras. Assim, a medida da afinidade, ou função fitness, é dada pelo grau de possibilidade da árvore geradora ter custo menor ou igual ao da menor árvore geradora mínima. Associada ao grafo crisp.

Para maior efetividade do seu algoritmo, é interessante que você tenha uma população bastante diversificada. A diversidade populacional é calculada pela razão entre o número de indivíduos únicos e o tamanho da população.

O SIA é extremamente utilizado em data mining, otimização, robótica, reconhecimento de padrões e machine learning, pois é capaz de tratar os dados de uma forma mais eficaz e nos dar uma resposta mais assertiva, como veremos no exemplo abaixo. Além do SIA de seleção clonal apresentado neste artigo, existem outros tantos modelos de SIA como, SIA de seleção negativa e SIA clonal com seleção negativa, por exemplo.

Um exemplo um pouco mais prático é a utilização da SIA no controle de redes elétricas inteligentes, os chamados Smart Grids. Imagine a seguinte situação: existe uma central distribuidora de energia, que possui outros vários pontos reguladores espalhados pela rede. Segundo a legislação brasileira, a tensão elétrica deve permanecer em um patamar específico, não podendo ser superior ou inferior a este valor. Para isso, existem mecanismos capazes de aumentar ou diminuir a tensão nestes pontos.

A tensão varia de acordo com N fatores, um deles é o consumo da população e a produção. Em um horário de pico, esta tensão tende a subir, e é aí que estes controladores de tensão precisam agir. Existe uma técnica chamada IVVC, ou integrated volt var control. A princípio, a resolução deste problema parece simples. Porém, se você tiver a dimensão real de uma rede elétrica, suas ramificações, infraestrutura e precariedade, vai saber que este problema não é tão simples. Caso você altere a tensão em algum ponto da rede, isso gera um efeito borboleta em toda a rede, alterando assim, outros N pontos. Como se não bastasse, todo este controle precisa ser feito em tempo real.

Com esse cenário em mente, é possível entender que precisamos de constante monitoramento, uma análise preditiva da situação, e uma rápida resposta. Este é um dos cenários reais no qual é possível identificar a implementação deste tipo de solução.

Muitos outros cenários são passíveis de resolução com os algoritmos de SAI. Para compreender um pouco mais sobre o assunto, eu recomendo o estudo de modelagem matemática e algoritmos avançados. Este estudo, possibilitará a melhora do seu desempenho cognitivo devido ao seu apelo dedutivo e lógico, assim, te proporcionando uma evolução como desenvolvedor.