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 altamente combinatórios. Esses problemas incluem reconhecimento facial, detecção de objetos, planejamento de rotas e sistemas de recomendação online altamente personalizados.

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

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

O paradigma de programação clássica envolve a resolução de problemas por meio de algoritmos prescritivos e a utilização de uma sequência bem definida de instruções. As entradas são definidas e restritas, desenvolvendo algoritmos para processar entradas por meio 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 desafiador. 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 por meio 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 localidades, qual é o caminho ideal para visitar todos os locais percorrendo a menor distância possível. Acontece que muitos dos problemas que atualmente precisam ser resolvidos computacionalmente se enquadram na categoria NP. Na maioria dos casos, para fins práticos, uma solução aproximada é frequentemente suficiente. Ao abordar a vida cotidiana, os humanos sempre chegam a 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 maneira 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 da Computação têm trabalhado por muitos anos para encontrar os melhores algoritmos para resolver classes de problemas. 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 por meio de programação em pares, semelhante à revisão por pares. São necessários muitos anos de treinamento e um alto grau de habilidade para implementar algoritmos de forma eficiente.

Em um 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 maneiras práticas de fazer problemas teoricamente desafiadores funcionarem na produção, como o uso de sistemas distribuídos. Abordagens avançadas têm um custo mais elevado e estão fora do alcance 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 têm dificuldade em construir equipes eficazes para produzir tais sistemas internamente. Além disso, muitas também têm lutado para encontrar provedores externos para resolver desafios de nicho que são teoricamente possíveis de implementar. Projetar um algoritmo específico torna-se significativamente mais complexo à medida que a complexidade do problema aumenta. Isso é especialmente verdadeiro para problemas multivariados. É melhor 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 de Inteligência Artificial tentou resolver problemas genericamente alimentando entradas e saídas desejadas em um sistema e deixando o sistema aprender a resolver problemas. As abordagens atuais de AI são executadas em computadores clássicos por meio de técnicas de programação clássicas. Os métodos mais empolgantes de AI são redes neurais e aprendizado por reforço.

Redes neurais artificiais exploram a compreensão humana de como a mente humana aprende e generaliza problemas. O aprendizado por reforço usa agentes inserindo um estado de objetivo e uma série de cenários. O algoritmo de aprendizado retém resultados preferíveis e descarta resultados adversos ao longo de múltiplas iterações. O aprendizado por reforço é análogo ao condicionamento operante. O agente aprende como alcançar o objetivo ao longo de muitas iterações de treinamento.

Um requisito para treinar soluções de inteligência artificial é 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 pode aprender a alcançar um estado objetivo executando uma série de iterações. Um exemplo disso é um sistema jogando contra si mesmo, como Xadrez ou Go, para aprender mais sobre como desenvolver estratégias para melhorar os resultados. Redes neurais artificiais e aprendizado por reforço são ambos executados em cenários para os quais não foram treinados e avaliados de forma semelhante a outras abordagens de aprendizado de máquina. Essas abordagens generalizam bem e fornecem soluções eficientes dada uma classe de problemas. Soluções baseadas em Inteligência Artificial se adequam a problemas que não podem ser facilmente definidos usando uma sequência de instruções; em vez disso, exigem mais "intuição" e julgamentos de valor.

Normalmente, os sistemas de Inteligência Artificial são treinados usando conjuntos de dados e posteriormente avaliados em um conjunto de avaliação. Quanto mais dados de treinamento de alta qualidade forem inseridos em um sistema de AI, maior será a probabilidade de o sistema ter um desempenho de alto padrão. O benefício 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 de computação. Isso inclui problemas tradicionalmente resolvidos por intervenção humana, embora a AI restrita possa ser vista como um complemento à intervenção humana existente para garantir melhores resultados.

A Inteligência Artificial e o Aprendizado de Máquina têm sido há muito tempo vistos com cautela pelas organizações devido a tais sistemas carecerem da rastreabilidade e determinabilidade de como responderão aos casos de uso. Assim, a IA 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 IA deve ser usada, quais níveis de erro são aceitos e como as saídas produzidas pelos sistemas de IA serão revisadas por pares com intervenção humana para garantir a precisão.

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

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

Embora não haja regras rígidas e rápidas sobre quando usar qualquer uma das abordagens, como regra geral, problemas que exigem soluções aproximadas e envolvem planejamento de longo prazo orientado a objetivos, reconhecimento de padrões complexos e processamento de uma infinidade 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ção.

Escolher a abordagem correta pode gerar benefícios significativos para a sua organização, enquanto escolher um método menos ideal pode levar a perdas de capital substanciais, pois projetos de tecnologia são caros. Frequentemente, optar por sistemas comprovados e demonstráveis, como a Telemus AI™, pode ajudar as organizações a garantir o sucesso em sua transformação digital de Inteligência Artificial.

Entre em contato hoje para uma consulta gratuita sobre como a Telemus AI™ pode ser integrada à sua organização.