Inteligência Artificial vs Programação Algorítmica Clássica

Em Direção à Inteligência Artificial a partir da Programação Algorítmica Clássica

Anthony Quattrone, PhD 30 de abril de 2022

Avanços na inteligência artificial permitiram que problemas computacionais complexos fossem resolvidos de forma eficiente, que anteriormente eram difíceis, intratáveis ou fortemente combinatórios. Estes problemas incluem reconhecimento facial, deteção de objetos, planeamento de rotas e sistemas de recomendação online altamente personalizados.

O desafio para as organizações no futuro é que os decisores estratégicos escolham entre as abordagens clássicas tradicionais e as abordagens de inteligência artificial para resolver problemas computacionais complexos. Qualquer um dos métodos tem desafios únicos na entrega de um sistema robusto em dimensões de precisão, custo, dificuldade de implementação e manutenibilidade.

A Abordagem Clássica de Programação Algorítmica para Resolver Problemas

O paradigma de programação clássica envolve a resolução de problemas através de algoritmos prescritivos e a utilização de uma sequência bem definida de instruções. As entradas são definidas e restringidas, desenvolvendo algoritmos para processar as entradas através de paradigmas de programação definidos (Procedimental, Orientado a Objetos, Funcional e Lógico) para produzir saídas.

Descobrir algoritmos para resolver problemas temporal e espacialmente eficientes é notoriamente desafiante. Na teoria da complexidade computacional, os problemas são P (Polinomial), NP (Polinomial Não-determinístico), NP-Completo ou NP-Difícil. Problemas polinomiais podem ser resolvidos e verificados rapidamente, enquanto problemas não polinomiais não podem. Problemas NP são difíceis de resolver através de abordagens algorítmicas clássicas.

Um exemplo de um problema P é encontrar o caminho mais curto entre dois pontos, enquanto um exemplo de um problema NP é o problema do caixeiro-viajante, onde, dada uma série de localizações, qual é o caminho ideal para visitar todos os locais percorrendo a menor distância possível. Acontece que muitos dos problemas que atualmente precisam de ser resolvidos computacionalmente se enquadram na categoria NP. Na maioria dos casos, para fins práticos, uma solução aproximada é muitas vezes suficiente. Ao abordar a vida quotidiana, os humanos sempre encontram soluções aproximadas, ou seja, navegação.

Existem desafios de implementação na resolução de problemas sob um paradigma algorítmico clássico de forma eficiente. A complexidade algorítmica é um ramo da ciência da computação que lida com a eficiência com que os algoritmos são executados nos domínios temporal (complexidade de tempo) e espacial (complexidade de espaço).

Embora existam muitas maneiras diferentes de implementar algoritmos, uma maneira óbvia, mas potencialmente ineficiente, de implementar um algoritmo é frequentemente referida como um algoritmo “ingénuo”. A maioria dos algoritmos eficientes não é fácil de descobrir, e os Cientistas Informáticos têm trabalhado durante muitos anos para encontrar os melhores algoritmos para resolver classes de problemas. Os algoritmos em sistemas de produção são implementados de formas temporal e espacialmente eficientes. As maiores empresas de software garantem os mais altos padrões algorítmicos através de programação em pares, semelhante à revisão por pares. São necessários muitos anos de treino e um alto grau de habilidade para implementar algoritmos de forma eficiente.

Num sentido prático, embora as técnicas de programação tenham evoluído e as linguagens de programação (ou seja, C, C++, Java, JavaScript, PHP, Python) tenham variado em popularidade, os fundamentos permaneceram os mesmos desde que os Bell Labs, na década de 1970, escreveram os primeiros módulos em C. Existem algumas formas práticas de fazer com que problemas teoricamente desafiadores funcionem em produção, como a utilização de sistemas distribuídos. Abordagens avançadas têm um custo mais elevado e estão fora das capacidades de todas, exceto das organizações mais progressistas tecnologicamente.

Dada a complexidade das abordagens clássicas de programação algorítmica, as organizações há muito tempo encontram dificuldades em constituir equipas eficazes para produzir tais sistemas internamente. Além disso, muitas também têm lutado para encontrar fornecedores externos que resolvam desafios de nicho que são teoricamente possíveis de implementar. A conceção de um algoritmo específico torna-se significativamente mais complexa à medida que a complexidade do problema aumenta. Isto é especialmente verdadeiro para problemas multivariados. É preferível usar abordagens algorítmicas clássicas em situações em que um algoritmo pode resolver rapidamente um problema e funciona para a maioria dos casos.

A Abordagem de AI para Resolver Problemas

O paradigma da Inteligência Artificial tentou resolver problemas de forma genérica, fornecendo entradas e saídas desejadas a um sistema e deixando o sistema aprender a resolver problemas. As abordagens atuais de AI são executadas em computadores clássicos através de técnicas de programação clássica. Os métodos de AI mais entusiasmantes são as redes neurais e a aprendizagem por reforço.

As redes neurais artificiais exploram a compreensão humana de como a mente humana aprende e generaliza problemas. A aprendizagem por reforço utiliza agentes que introduzem um estado objetivo e uma série de cenários. O algoritmo de aprendizagem retém resultados preferíveis e descarta resultados adversos ao longo de múltiplas iterações. A aprendizagem por reforço é análoga ao condicionamento operante. O agente aprende como alcançar o objetivo ao longo de muitas iterações de treino.

Um requisito para treinar soluções de inteligência artificial é, ou um vasto conjunto de dados bem definido, geralmente compilado usando uma combinação de vários armazéns de dados ou crowdsourcing, ou um sistema que pode aprender a alcançar um estado objetivo executando uma série de iterações. Um exemplo disso é um sistema a jogar um jogo contra si mesmo, como Xadrez ou Go, para aprender mais sobre como desenvolver estratégias para melhorar os resultados. Redes neuronais artificiais e aprendizagem por reforço são ambas executadas em cenários para os quais não foram treinadas e avaliadas de forma semelhante a outras abordagens de aprendizagem automática. Estas abordagens generalizam bem e fornecem soluções eficientes para uma determinada classe de problemas. Soluções baseadas em Inteligência Artificial adequam-se a problemas que não podem ser facilmente definidos usando uma sequência de instruções; em vez disso, requerem mais "intuição" e juízos de valor.

Normalmente, os sistemas de Inteligência Artificial são treinados usando conjuntos de dados e posteriormente avaliados num conjunto de avaliação. Quanto mais dados de treino de alta qualidade forem inseridos num sistema de AI, maior será a probabilidade de o sistema ter um desempenho elevado. A vantagem das abordagens de AI é que elas podem continuar a melhorar ao longo do tempo à medida que o sistema aprende mais. Assim, problemas complexos podem ser generalizados e resolvidos por sistemas computacionais. Estes incluem questões tradicionalmente resolvidas por intervenção humana, embora a AI estreita possa ser vista como um complemento à intervenção humana existente para garantir melhores resultados.

A Inteligência Artificial e a Aprendizagem Automática têm sido vistas com cautela pelas organizações durante muito tempo, devido a tais sistemas carecerem da rastreabilidade e determinabilidade de como irão responder aos casos de uso. Assim, a AI pode atuar em circunstâncias raras e responder de forma imprevisível quando menos se espera. É por isso que é importante ter casos de uso claramente definidos para quando a AI deve ser utilizada, quais os níveis de erro aceites e como os resultados produzidos pelos sistemas de AI serão revistos por pares através de intervenção humana para garantir a precisão.

No geral, prevemos que a precisão melhorada que os sistemas de AI trarão, juntamente com as eficiências obtidas ao aumentar o input humano, terão um incentivo financeiro demasiado grande para muitas organizações não ignorarem nos próximos anos; os sistemas de AI tornar-se-ão pervasivos.

Quando Escolher Inteligência Artificial e Quando Selecionar a Abordagem de Programação Algorítmica Clássica para Resolver Problemas

Embora não existam regras rígidas e rápidas sobre quando usar qualquer uma das abordagens, como regra geral, problemas que exigem soluções aproximadas e envolvem planeamento de longo prazo orientado por objetivos, reconhecimento de padrões complexos e processamento de uma multiplicidade de variáveis são mais adequados para a AI. Abordagens algorítmicas clássicas são mais adequadas para soluções exatas ou quase ótimas que envolvem muita lógica e computações.

Escolher a abordagem correta pode trazer benefícios significativos para a sua organização, enquanto a escolha de um método menos otimizado pode levar a perdas de capital substanciais, pois os projetos tecnológicos são dispendiosos. Optar frequentemente por sistemas comprovados e demonstráveis, como a Telemus AI™, pode ajudar as organizações a garantir o sucesso na sua transformação digital de Inteligência Artificial.

Contacte-nos hoje para uma consulta gratuita sobre como a Telemus AI™ pode ser integrada na sua organização.