Em 1959, Arthur Samuel (1901-1990), funcionário da IBM e graduado pelo Massachusetts Technical Institute, escreveu um artigo que mudou a forma como os computadores eram programados.
O problema enfrentado por Samuel não era grande: tratava-se simplesmente de desenvolver um programa capaz de jogar damas. Ele analisou uma posição no tabuleiro, levando em conta vários fatores. Ele então atribuiu a cada um deles uma importância maior ou menor por meio de um valor numérico e produziu o movimento com maior probabilidade de vencer o jogo com base nessa configuração analisada.
A desvantagem é que não se sabia quais fatores eram mais importantes para determinar a melhor jogada a ser feita. E é aí que reside a grande contribuição de Samuel.
Um jogador de damas muito perspicaz
Em vez de atribuir valores específicos, ele os atribuiu de forma aleatória. É claro que isso resultaria em um programa com um péssimo desempenho no jogo. A ideia brilhante foi fazê-lo jogar contra adversários humanos e tentar modificar os valores com base na experiência do jogo.
Quando o software perdia uma jogada, ele a analisava colocando-se no lugar do humano, comparando a ação tomada em cada jogada com o que o programa teria feito em seu lugar. Dessa forma, ele melhorava seu desempenho estudando o adversário e aprendendo com seus erros.
Samuel não havia programado um algoritmo para jogar damas, ele o havia projetado para aprender a jogar damas. E ele foi capaz de fazer isso mesmo além das capacidades de seu programador.
Foi uma experiência pioneira do que hoje é conhecido como aprendizado de máquina, que está por trás de avanços tão difundidos como diagnóstico médico de inteligência artificial, reconhecimento de voz, veículos autônomos, assistentes virtuais e os mais recentes modelos de linguagem como o ChatGPT.
Autonomia para aprender
Muitos deles foram alimentados pelo aprimoramento de modelos, também paramétricos, que chamamos de redes neurais. Nesses novos modelos, não há uma função fixa como no programa de Samuel, mas qualquer função pode ser aproximada, e o número de parâmetros aumenta de alguns para centenas de milhões.
Além disso, não é mais necessário um ser humano para que o programa aprenda com ele: os sistemas atuais aprendem com a infinidade de dados disponíveis em todos os domínios do conhecimento.
Entretanto, a tecnologia por trás de todos esses modelos recentes não é muito revolucionária. A maneira como seus parâmetros são ajustados é uma modificação do método de ajuste gradient descent, que remonta ao final do século XIX, aplicado às redes neurais na década de 1980.
O sucesso recente se deve à sofisticação dos modelos e à sua complexidade, bem como à enorme disponibilidade de dados para treinamento. Mas os cientistas não deixaram de lado outro aspecto importante do aprendizado de máquina: a evolução.
Algoritmos genéticos
Os seres vivos também podem, de forma simplificada, ser descritos como funções parametrizadas, cujos parâmetros são genes. Dependendo dos valores assumidos por esses genes, um ser vivo ou outro é produzido, com uma ou outra característica.
É a evolução que, de forma semelhante ao programa de Samuel, vem selecionando os valores adequados dos genes para gerar seres vivos com maior probabilidade de sobrevivência, descartando ao longo do caminho enormes quantidades de valores inadequados.
Até mesmo os sistemas neurais dos seres vivos são o produto de um processo de experimentar soluções alternativas ao longo de milhões de anos para encontrar a combinação evolutivamente mais eficiente.
Foi a partir dessa ideia que John Holland (1929-2015) projetou, em 1975, o primeiro programa de aprendizado evolutivo e desenvolveu o que ele chamou de genetic algorithms.
A ideia de um algoritmo evolutivo é expressar o programa por meio de um código, à imagem do código genético, capaz de representar um determinado comportamento. Se o código for modificado, o programa se comportará de forma diferente.
Se chegarmos a um determinado código, ele será capaz de exibir um comportamento altamente eficiente. Como nos sistemas neurais, partimos de um código aleatório que é aprimorado por uma versão artificial da seleção natural.
Os programas de melhor desempenho farão a codificação cruzada de seus códigos, gerando novos programas, em uma versão computacional da reprodução sexual.
Desde seu surgimento, houve inúmeros avanços em tais algoritmos. Eles também foram aplicados com sucesso à seleção de parâmetros em problemas que, de outra forma, seriam intratáveis.
O futuro da inteligência artificial pode estar na combinação dessas duas perspectivas, neural e evolutiva. Os sistemas evolutivos poderiam ser úteis na geração automática de modelos neurais cada vez mais complexos ou até mesmo de novos métodos de aprendizado.
Da mesma forma que a seleção natural foi capaz de produzir sistemas neurais capazes de gerar comportamentos cada vez mais complexos por meio de sua evolução gradual, os algoritmos evolutivos poderiam ser a chave para a produção de modelos cada vez mais sofisticados de inteligência artificial, mais bem adaptados aos requisitos necessários, e mais inteligentes.
O campo de sistemas evolutivos e sistemas biologicamente inspirados tem um grande potencial que estamos apenas começando a vislumbrar. Sem dúvida, ele receberá muita atenção nos próximos anos.
Editor-chefe: Daniel Stycer