http://revistapesquisa.fapesp.br
por Bruno de Pierro
Os algoritmos estão em toda parte. Quando a bolsa sobe ou desce, eles geralmente estão envolvidos. Segundo dados divulgados em 2016 pelo Instituto de Pesquisa Econômica Aplicada (Ipea), robôs investidores programados para reagir instantaneamente ante determinadas situações são responsáveis por mais de 40% das decisões de compra e venda no mercado de ações no país – nos Estados Unidos, o percentual chegou a 70%. O sucesso de uma simples pesquisa no Google depende de uma dessas receitas escritas em linguagem de programação computacional, que é capaz de filtrar em segundos bilhões de páginas na web – a importância de uma página, definida por um algoritmo, baseia-se na quantidade e na boa procedência de links que remetem a ela. Na fronteira da pesquisa em engenharia automotiva, conjuntos de algoritmos utilizados por carros autônomos processam informações captadas por câmeras e sensores, tomando instantaneamente as decisões ao volante sem intervenção humana.
Embora influenciem até mesmo atividades cotidianas prosaicas, como a procura de atalhos no trânsito com a ajuda de aplicativos de celular, os algoritmos costumam ser vistos como objetos intangíveis pela população em geral – que sente seus efeitos, mas não conhece ou compreende seu formato e modo de ação. Um algoritmo nada mais é do que uma sequência de etapas para resolver um problema ou realizar uma tarefa de forma automática, quer ele tenha apenas uma dezena de linhas de programação ou milhões delas empilhadas em uma espécie de pergaminho virtual. “É o átomo de qualquer processo computacional”, define o cientista da computação Roberto Marcondes Cesar Junior, pesquisador do Instituto de Matemática e Estatística da Universidade de São Paulo (IME-USP).
Tome-se o exemplo da sequência de passos realizada pelo algoritmo do Facebook. A escolha do que vai aparecer no feed de notícias de um usuário depende, em primeiro lugar, do conjunto de postagens produzidas ou que circulam entre os amigos. Em linhas gerais, o algoritmo analisa essas informações, descarta posts denunciados como de conteúdo violento ou impróprio, os que pareçam spam ou os que tenham uma linguagem identificada como “caça-cliques”, com exageros de marketing. Por fim, o algoritmo atribui uma nota para cada uma das publicações com base no histórico da atividade do usuário, tentando supor o quanto ele seria suscetível a curtir ou compartilhar aquela informação. Recentemente, o algoritmo foi modificado para reduzir o alcance de publicações oriundas de sites de notícias.
A construção de um algoritmo segue três etapas. A primeira consiste em identificar com precisão o problema a ser resolvido – e encontrar uma solução para ele. Nessa fase, o cientista da computação necessita da orientação de profissionais que entendam da tarefa a ser executada. Podem ser médicos, no caso de um algoritmo que analisa exames de imagem; sociólogos, se o objetivo for identificar padrões de violência em regiões de uma cidade; ou psicólogos e demógrafos na construção, por exemplo, de um aplicativo de paquera. “O desafio é mostrar que a solução do problema existe do ponto de vista prático, que não se trata de um problema de complexidade exponencial, aquele para o qual o tempo necessário para produzir uma resposta pode crescer exponencialmente, tornando-o impraticável”, explica o cientista da computação Jayme Szwarcfiter, pesquisador da Universidade Federal do Rio de Janeiro (UFRJ).
A segunda etapa ainda não envolve operações matemáticas: consiste em descrever a sequência de passos no idioma corrente, para que todos possam compreender. Por último, essa descrição é traduzida para alguma linguagem de programação. Só assim o computador consegue entender os comandos – que podem ser ordens simples, operações matemáticas e até algoritmos dentro de algoritmos –, tudo em uma sequência lógica e precisa. É nesse momento que entram em cena os programadores, profissionais incumbidos de escrever os algoritmos ou trechos deles. A depender da complexidade da missão, equipes extensas de programadores trabalham em conjunto e dividem tarefas.
Em sua origem, algoritmos são sistemas lógicos tão antigos quanto a matemática. “A expressão vem da latinização do nome do matemático e astrônomo árabe Mohamed al-Khwarizmi, que no século IX escreveu trabalhos de referência sobre álgebra”, explica a cientista da computação Cristina Gomes Fernandes, professora do IME-USP. Eles ganharam novos propósitos na segunda metade do século passado com o desenvolvimento dos computadores – por meio deles, foi possível criar rotinas para as máquinas trabalharem. A combinação de dois fatores explica por que suas aplicações no mundo real vêm se multiplicando e eles se tornaram a base do desenvolvimento de softwares complexos. O primeiro foi a ampliação da capacidade de processamento dos computadores, que aceleraram a velocidade da execução de tarefas complexas. E o segundo foi o advento do Big Data, o barateamento da coleta e do armazenamento de quantidades gigantescas de informações, que deram aos algoritmos a possibilidade de identificar padrões imperceptíveis ao olhar humano em atividades de todo tipo. A manufatura avançada ou Indústria 4.0, com sua promessa de ampliar a produtividade de linhas de produção, depende de algoritmos de inteligência artificial para monitorar plantas industriais em tempo real e tomar decisões sobre recomposição de estoques, logística e paradas de manutenção.
Um dos efeitos da disseminação dos algoritmos na computação foi o impulso à inteligência artificial, um campo de estudo criado na década de 1950 que desenvolve mecanismos capazes de simular o raciocínio humano. Com cálculos computacionais cada vez mais velozes e acervos de informação com os quais é possível fazer comparações estatísticas, as máquinas ganharam a capacidade de modificar seu funcionamento a partir de experiências acumuladas e melhorar seu desempenho, em um processo associativo que mimetiza a aprendizagem.
A capacidade de computadores vencerem humanos em jogos de tabuleiro mostra como esse campo tem evoluído. Em 1997, o supercomputador Deep Blue, da IBM, conseguiu pela primeira vez vencer o então campeão mundial de xadrez, o russo Gary Kasparov. Capaz de simular aproximadamente 200 milhões de posições do xadrez por segundo, a máquina antevia o comportamento do adversário várias jogadas à frente. Mas essa estratégia não funcionava em um jogo de origem chinesa, o Go, porque os lances possíveis eram numerosos demais para serem antecipados – o rol de possibilidades é maior do que a quantidade de átomos no universo. Pois, em março de 2016, a barreira do Go foi vencida: o programa AlphaGo, criado pela DeepMind, subsidiária do Google, conseguiu superar o campeão mundial do jogo, o sul-coreano Lee Sedol.
Em vez de considerar milhões de possibilidades, o algoritmo do programa arrumou uma estratégia mais restrita. Foi abastecido com dados de partidas de Go disputadas entre os melhores competidores, fez uma análise estatística identificando as jogadas mais comuns e eficientes e passou a trabalhar com um conjunto pequeno de variáveis, logo vencendo os jogadores humanos. Mas o feito não parou aí. No ano passado, a DeepMind apresentou um novo programa, o AlphaGo Zero, que superou o AlphaGo. E dessa vez a máquina não aprendeu com seres humanos, mas apenas com a versão anterior do programa.
As aplicações práticas desse tipo de tecnologia são cada vez mais frequentes. Algoritmos de inteligência artificial desenvolvidos pelo cientista da computação Anderson de Rezende Rocha, professor do Instituto de Computação da Universidade Estadual de Campinas (Unicamp), têm auxiliado investigações feitas pela Polícia Federal. Rocha especializou-se em criar ferramentas de computação forense e inteligência artificial capazes de detectar sutilezas em documentos digitais muitas vezes imperceptíveis a olho nu. “A tecnologia ajuda o perito, por exemplo, a confirmar se determinada foto ou vídeo relacionados a um crime são genuínos”, diz Rocha.
Um dos casos em que os algoritmos estão sendo utilizados é na automatização de investigações sobre pornografia infantil. Constantemente, os policiais apreendem grandes quantidades de fotos e vídeos no computador de suspeitos. Se existirem arquivos com pornografia infantil, o algoritmo ajuda a encontrá-los. “Expusemos o robô a horas de vídeos pornográficos da internet para extrair dados. Tivemos que ensinar a ele o que é pornografia”, conta Rocha. Depois, para que pudesse distinguir a presença de crianças, o algoritmo precisou “assistir” a conteúdos de pornografia infantil apreendidos. “Essa etapa foi realizada estritamente por técnicos da polícia. Nós da Unicamp não tivemos acesso a esse material”, salienta. Rocha conta que a análise dos arquivos era feita sem muita automação. “Ao tornar esse processo mais eficiente, os investigadores da Polícia Federal ganharam tempo e capacidade para analisar maiores quantidades de dados”.
Muitos cientistas da computação trabalham com propriedades matemáticas, teoremas e definições lógicas relacionadas a algoritmos sem a preocupação de que esse conhecimento possa ser aplicado um dia. Alguns se dedicam a criar algoritmos capazes de solucionar um dos maiores desafios da ciência da computação, o problema “P versus NP”. Ele se refere à dificuldade enfrentada por computadores para realizar a fatoração de números primos – o desenvolvimento de um algoritmo capaz de realizar essa tarefa, e de forma rápida, teria impacto em áreas como a criptografia. Um exemplo prático do problema P versus NP é, por exemplo, determinar se existe um jeito de colocar, em um tabuleiro de xadrez, um determinado número de rainhas sem que nenhum par delas se ataquem.
* - artigo publicado na revista Pesquisa FAPESP, edição 266 de abril de 2018
Nenhum comentário:
Postar um comentário