Heurística é uma abordagem que direciona um algoritmo para encontrar soluções viáveis para problemas complexos.
A heurística é definida como uma técnica de resolução de problemas ou tomada de decisão que usa o mínimo de informações relevantes, resultados anteriores e experiências para produzir uma solução viável e prática para um problema em um período razoável. Este artigo explica os princípios fundamentais subjacentes à heurística, seu funcionamento e alguns exemplos importantes no mundo da computação atual.
O que é Heurística?
Heurística é uma técnica de resolução de problemas ou tomada de decisão que usa o mínimo de informações relevantes, resultados anteriores e experiências para produzir uma solução viável e prática para um problema em um tempo razoável. Essas estratégias se concentram em fornecer resultados rápidos com uma faixa de precisão aceitável, em vez de oferecer soluções quase perfeitas.
A heurística compreende ingredientes vitais das disciplinas de aprendizado de máquina (ML) e inteligência artificial (IA). É uma abordagem obrigatória quando é altamente impraticável derivar uma solução para um problema seguindo um algoritmo passo a passo. Além disso, como as estratégias heurísticas buscam fornecer soluções rápidas em vez de precisas, elas são geralmente combinadas com algoritmos de otimização para melhorar os resultados.
Tecnicamente, todas as iterações são interdependentes, o que implica que cada nível de uma rede neural profunda é crucial para decidir qual caminho de solução escolher e qual descartar com base em sua proximidade com o resultado desejado. Assim, o termo ‘heurística’ é sinônimo de ‘atalho’, pois não emprega recursos para explorar caminhos de solução que não gerem resultados aceitáveis.
Métodos heurísticos em IA são baseados em princípios da ciência cognitiva que giram em torno de ‘como os humanos pensam’. Além disso, algoritmos heurísticos em IA permitem que os sistemas produzam soluções aproximadas em vez de exatas. Heurísticas não fornecem necessariamente uma solução mais barata. Em vez disso, aquelas que não superestimam o custo de obtenção do resultado são denominadas “heurísticas admissíveis”. Esta é uma característica crucial da heurística que garante a ótima qualidade da solução. No nível fundamental, uma heurística admissível simplifica o problema original reduzindo suas restrições.
Embora os processos heurísticos tendam a encontrar soluções ou resultados que muitas vezes funcionam ou estão corretos, eles podem apenas algumas vezes ser corretos, prováveis, ótimos ou precisos. No entanto, decisões baseadas em heurísticas geralmente são boas o suficiente para resolver problemas de pequena escala e fornecer soluções em situações de incerteza em que informações completas não estão disponíveis.
A heurística depende de atalhos para fornecer soluções imediatas, eficientes e de curto prazo que facilitam decisões oportunas para as empresas. Analistas de todos os setores usam regras de ouro específicas que permitem que as empresas resolvam um problema e tomem decisões e julgamentos com rapidez e eficiência. Isso inclui o processo de tentativa e erro, eliminação, adivinhação inteligente, resultados ou fórmulas anteriores e até mesmo a análise de dados históricos. No entanto, no mundo da computação, um modelo heurístico funciona como uma regra para acelerar e simplificar os processos de tomada de decisão em situações onde não há tempo suficiente para uma consideração cuidadosa de todos os aspectos do problema.
Vantagens da heurística
As heurísticas facilitam o monitoramento de eventos em tempo real, usando menos recursos e minimizando a carga do sistema. Ele permite que os sistemas lidem com big data e garantam um tempo de resposta mais rápido para decisões sobre problemas complexos. As regras heurísticas são vitais para estratégias de computação, segurança cibernética e prevenção de riscos.
Além disso, a abordagem desempenha um papel vital na detecção de variações mais recentes de problemas e questões anteriores, combinando conjuntos de dados maiores para identificar conexões entre pontos de dados eventualmente. Ele permite que o sistema chegue a uma conclusão definitiva com base na configuração e ajuda a escolher um curso de ação seguro e isento de riscos.
Heurísticas envolvem trade-offs quando comparadas a algoritmos tradicionais e métodos de tomada de decisão. Ele prioriza a velocidade sobre a precisão, precisão ou integridade de uma solução. Além disso, envolve suposições inteligentes e até mesmo simplifica para retornar soluções com mais erros. Os modelos heurísticos dependem de cálculos mínimos que podem produzir resultados propensos a vieses. No entanto, a velocidade do resultado ofusca as deficiências subjacentes. Por exemplo, um sistema baseado em heurística pode bloquear imediatamente transações financeiras (online) com base em pontos de dados da lista negra, como ID do cliente, número de contato, e-mail, hash do navegador e assim por diante.
Embora as heurísticas não ofereçam um mecanismo ideal para projetar soluções, pode-se considerar as desvantagens gerais da abordagem ao configurar regras e estabelecer processos, de modo que permita escolher cenários onde as heurísticas possam ser aplicadas não apenas para acelerar uma tarefa, mas também liberar recursos.
Como funciona a heurística?
Heurística geralmente se refere a suposições educadas que parecem fornecer decisões mais rápidas do que as abordagens tradicionais ao lidar com fatores de solução de problemas na indústria de computação. Os modelos heurísticos normalmente executam as seguintes tarefas que permitem uma tomada de decisão mais rápida:
- Analisar dados históricos;
- Monitore dados em tempo real com frequência (ou seja, 24×7);
- Compare padrões de dados em dados novos e antigos;
- Faça suposições apropriadas que preencham lacunas desconhecidas nos dados;
- Acione uma ação ao atingir um limite predefinido para processamento posterior.
As heurísticas são adequadas para aprendizado de máquina (ou seja, modelos de caixa branca e caixa preta), raciocínio de máquina e outros modelos relacionados que lidam com dados diversos, grandes e incompletos. Técnicas baseadas em heurísticas são popularmente empregadas nos setores de comércio e finanças, segurança cibernética e detecção e prevenção de fraudes. Além disso, eles estão sendo cada vez mais adotados pelas empresas para aprimorar sua tecnologia e aumentar a produtividade e a eficiência dos negócios.
Proponho entendermos o funcionamento da heurística através de um exemplo simples de detecção de fraude.
Na detecção de fraudes, os modelos heurísticos tendem a encerrar ou bloquear transações considerando dados sinalizados como ID do cliente, cookies, detalhes de contato ou até mesmo sequências de ações específicas em alguns casos. Detalharemos um caso de uso simples.
- Suponha que um golpista ou fraudador se registre em um aplicativo de jogos de azar online na esperança de manipular e abusar dos ‘pacotes de bônus’ oferecidos pelo sistema de jogo.
- O fraudador já tentou esse truque, embora com um dispositivo e detalhes de contato diferentes, como número de contato. Ou ID do usuário.
- Na segunda tentativa fraudulenta, embora algumas credenciais de usuário difiram, o fraudador ainda está no mesmo endereço IP, pois forneceu o mesmo e-mail e endereço residencial. Além disso, o indivíduo está seguindo os mesmos passos na plataforma de jogo que usou em sua primeira tentativa.
- Aqui, a heurística revisita. O sistema usa um modelo heurístico para avaliar os pontos de dados recém-inseridos coletados na segunda tentativa e combiná-los com os pontos de dados compartilhados associados à primeira tentativa. O modelo preenche as lacunas e conecta os pontos de dados novos e antigos para chegar a uma conclusão.
- O limite de tolerância ao risco é atingido, pois as estimativas tendem a revelar a semelhança entre a primeira e a segunda tentativas fraudulentas. Como resultado, o sistema bloqueia o acesso ou uso do fraudador.
Neste exemplo, o endereço IP usado na segunda tentativa de fraude correspondeu ao do evento de fraude anterior. Além disso, o fraudador usou etapas semelhantes para explorar o sistema. Com base nesses parâmetros, o sistema assume que a mesma pessoa está tentando outra fraude.
Aqui, existe a possibilidade de que o resultado da análise de risco seja apenas um falso positivo. No entanto, os analistas de risco já consideraram várias restrições e variáveis, como ‘risco x recompensa’, para decidir que é melhor prosseguir com falsos positivos do que enfrentar as consequências de falsos negativos. Isso implica que os analistas concordam em bloquear usuários legítimos do que perder a oportunidade de bloquear fraudadores reais. Assim, a equipe de análise de risco ajusta o limite de tolerância de risco para a empresa ou cenário específico.
Em alguns casos, os fraudadores também podem inserir as credenciais do usuário, como um endereço residencial que corresponda ao endereço de um usuário legítimo. Alguns golpistas tendem a operar por meio de um ponto de acesso compartilhado à Internet usado por usuários legítimos. Essas são as técnicas usadas pelos fraudadores para jogar com segurança. No entanto, com a impressão digital da máquina e do navegador, esses pontos de dados são identificados. A partir daqui, o modelo heurístico começa a encontrar conexões e fazer suposições essenciais para tirar conclusões.
Exemplos de heurísticas
A heurística é uma parte inevitável e inseparável da inteligência artificial. Simplificando, é uma simulação computacional do processo de pensamento humano, usada em situações que nenhum algoritmo conhecido pode alcançar. Portanto, heurísticas são geralmente usadas em conjunto com algoritmos de otimização para aumentar a eficiência geral dos resultados desejados.
Aqui estão alguns dos principais exemplos onde as heurísticas são usadas rotineiramente:
1. Problema do caixeiro viajante (TSP)
O problema do caixeiro viajante refere-se a um problema de otimização onde é dada uma lista de cidades e a distância entre cada par de cidades. A tarefa é determinar o caminho mais curto para visitar cada cidade uma vez e, eventualmente, retornar à cidade de origem. À medida que várias cidades são percorridas, a solução também deve verificar o custo (ou seja, distância) e a complexidade do tempo.
O problema TSP é geralmente considerado um problema NP-difícil (dureza em tempo polinomial não determinístico), pois produzir uma solução ótima mesmo para um conjunto de dados de tamanho pequeno ou moderado é uma tarefa desafiadora. Como alternativa, um algoritmo guloso pode ser usado neste caso para produzir uma solução aproximada em um período razoavelmente menor. Isso implica que o resultado se aproxima da resposta ótima, sendo uma solução suficientemente boa para o problema. O algoritmo é um tipo de heurística em certo sentido, indicando que a solução está próxima o suficiente do resultado desejado. Embora seja possível obter soluções teoricamente, uma aproximação é a melhor aposta considerando as restrições de tempo.
O TSP é um problema de otimização combinatória com múltiplas aplicações em nosso dia a dia. Isso inclui roteamento de veículos, logística (planejamento e agendamento), entrega de mercadorias, indústria marítima, redes de aeroportos, redes de transporte público em cidades de primeira linha e assim por diante. O TSP é um bom exemplo onde a heurística desempenha um papel importante.
2. Problemas de otimização de busca
A heurística é conhecida por tornar os algoritmos mais rápidos ao lidar com ‘problemas de otimização de pesquisa’ específicos. Na etapa 1, as regras heurísticas tendem a testar todas as possibilidades em cada estágio, o que significa executar um algoritmo de busca em espaço total. No entanto, o sistema pode abortar essa busca a qualquer momento se reconhecer que a solução atual é pior do que a melhor solução já determinada. Assim, a heurística ajuda a otimizar tais problemas de busca, inicialmente experimentando boas escolhas ou soluções enquanto elimina os caminhos errados antecipadamente.
Algoritmos específicos de busca do melhor primeiro, como ‘A* search’, usam heurísticas para aumentar a convergência do algoritmo, mantendo o controle da exatidão da solução enquanto a heurística for admissível; por exemplo, otimização de mecanismo de pesquisa. Os mecanismos de pesquisa ajudam as pessoas a encontrar informações relevantes em milhões de fontes de dados. No entanto, com volumes tão vastos de informações na Internet, pode ser difícil encontrar conteúdo útil. Para tornar o processo o mais rápido possível, os mecanismos de busca usam heurística para agilizar o processo de busca e garantir que os indivíduos encontrem informações relevantes em tempo mínimo.
3. Hipótese de busca heurística
Allen Newell e Herbert A. Simon propuseram a hipótese de busca heurística. Nesta hipótese, soluções para problemas complexos são reveladas como estruturas simbólicas. O sistema de símbolos então emprega inteligência para resolver o problema por meio de uma busca. O processo gera, modifica e reestrutura repetidamente os símbolos até que a estrutura criada corresponda à estrutura da solução.
Assim, cada etapa invariavelmente depende da etapa anterior. Como resultado, o modelo heurístico aprende quais caminhos seguir e quais eliminar, verificando a proximidade da etapa atual com a solução desejada. Consequentemente, esse processo economiza tempo e recursos, pois algumas soluções possíveis podem não ser geradas com base em sua improbabilidade medida de concluir a solução.
Nesse contexto, um modelo heurístico cumpre sua tarefa explorando árvores de busca. Em vez de gerar todas as ramificações de solução possíveis nos estágios iniciais, o modelo seleciona ramificações com maior probabilidade de produzir resultados do que outras ramificações com menor probabilidade de fazê-lo. A cada ponto de decisão, a heurística seleciona os ramos que produzem soluções aceitáveis em cada ponto de decisão.
4. Software antivírus
O software antivírus depende de regras heurísticas para identificar, detectar e isolar diferentes formas de malware. Ele verifica o software em questão e procura os padrões de código ou mesmo os padrões de comportamento dos vírus com regras em vigor para diferentes tipos de vírus. Durante o processo, é identificado se o arquivo ou estratégia em execução revela um determinado padrão de código, ou padrão de atividades. Como resultado, infere-se que o arquivo está infectado.
Além disso, com abordagens de varredura heurística baseadas em comportamento, até mesmo vírus polimórficos modificáveis são rastreáveis, ao contrário de outros métodos simples de varredura. A varredura baseada em heurística pode detectar vírus mutantes sem precisar ser detectado anteriormente. Ele pode ver novos códigos de arquivo suspeitos ou padrões de comportamento em tempo real sem precisar ser notado, analisado e rotulado como um vírus ‘xyz’. Como tal, os vírus futuros podem ser combatidos seguindo a abordagem heurística.
5. Problema da mochila (KP)
Um problema da mochila consiste em um grupo de itens, cada um com um peso e um valor. A tarefa é determinar o número total de itens a serem incluídos em uma combinação para que o peso total do item seja menor ou igual a um peso específico e o valor total do item, seja o mais alto possível. Um modelo heurístico na forma de um algoritmo guloso pode ser empregado para resolver o problema. O algoritmo organiza os itens em ordem decrescente de valor por peso e depois os insere no saco. A técnica permite que as coisas mais valiosas e pesadas entrem primeiro no pacote.
Esses problemas de KP onde a heurística desempenha um papel vital encontram aplicações em vários campos, como programação de máquinas, alocação de espaço, otimização de ativos, gerenciamento de energia doméstica, gerenciamento de recursos de software, otimização de alocação de energia para equipamentos eletrônicos, seleção de rede para nós móveis e assim por diante.
Conclusão
Heurística em ciência da computação refere-se às ‘regras práticas’ que os algoritmos usam para determinar soluções aproximadas para problemas complexos. Como há muita informação para os sistemas examinarem antes de chegar a uma conclusão em um período limitado, os modelos heurísticos priorizam a velocidade sobre a correção da solução. No entanto, é fundamental considerar que as regras heurísticas são específicas para os problemas que se pretende resolver, e suas especificidades podem variar para cada situação.
Por exemplo, digamos que você pretenda aplicar heurística ao seu algoritmo projetado para determinar o número de movimentos que um bispo pode fazer em um tabuleiro de xadrez 8 × 8 enquanto percorre todos os quadrados do tabuleiro. Nesse caso, você pode criar heurísticas que possibilitem ao bispo escolher um caminho com o maior número de movimentos diagonais disponíveis. À medida que você faz um caminho específico, é melhor gerar regras heurísticas que permitam ao bispo escolher um caminho com o mínimo de movimentos diagonais disponíveis. Como o espaço de decisão disponível é limitado, as soluções também são estreitas e, consequentemente, encontradas rapidamente.
Assim, a cada problema definido, você pode desenhar suas próprias regras heurísticas para terminar uma tarefa em menos tempo. Esta é uma abordagem útil, pois alguns problemas computacionalmente complexos podem exigir anos de computação para encontrar a resposta exata; no entanto, você pode produzir um resultado aproximado quase instantaneamente com heurística.