Inteligencia Artificial vs Programación Algorítmica Clásica

Hacia la Inteligencia Artificial desde la Programación Algorítmica Clásica

Anthony Quattrone, PhD 30 de abril de 2022

Los avances en inteligencia artificial han permitido resolver de manera eficiente problemas computacionales complejos que anteriormente eran difíciles, intratables o de naturaleza combinatoria. Estos problemas incluyen el reconocimiento facial, la detección de objetos, la planificación de rutas y sistemas de recomendación en línea altamente personalizados.

El desafío para las organizaciones que avanzan hacia el futuro es que los tomadores de decisiones estratégicas elijan entre los enfoques clásicos tradicionales y los enfoques de inteligencia artificial para resolver problemas computacionales complejos. Cualquier método presenta desafíos únicos en la implementación de un sistema robusto en dimensiones de precisión, costo, dificultad de implementación y mantenibilidad.

El enfoque de programación algorítmica clásica para resolver problemas

El paradigma de programación clásica implica resolver problemas mediante algoritmos prescriptivos y la utilización de una secuencia bien definida de instrucciones. Las entradas se definen y se restringen, desarrollando algoritmos para procesar las entradas mediante paradigmas de programación definidos (Procedimental, Orientado a Objetos, Funcional y Lógico) para producir salidas.

Descubrir algoritmos para resolver problemas temporal y espacialmente eficientes es notoriamente difícil. En la teoría de la complejidad computacional, los problemas son P (Polinomiales), NP (Polinomiales No deterministas), NP-Completos o NP-Difíciles. Los problemas polinomiales se pueden resolver y verificar rápidamente, mientras que los problemas no polinomiales no pueden. Los problemas NP son difíciles de resolver mediante enfoques algorítmicos clásicos.

Un ejemplo de un problema P es encontrar el camino más corto entre dos puntos, mientras que un ejemplo de un problema NP es el problema del viajante, donde, dada una serie de ubicaciones, cuál es el camino óptimo para visitar todos los sitios recorriendo la menor distancia posible. Resulta que muchos de los problemas que actualmente se requieren resolver computacionalmente caen en la categoría NP. En la mayoría de los casos, para fines prácticos, una solución aproximada suele ser suficiente. Al enfrentar la vida diaria, los humanos siempre proponen soluciones aproximadas, p. ej., navegación.

Existen desafíos de implementación en la resolución de problemas bajo un paradigma algorítmico clásico de manera eficiente. La complejidad algorítmica es una rama de la informática que se ocupa de la eficiencia con la que se ejecutan los algoritmos en los dominios temporal (complejidad de tiempo) y espacial (complejidad de espacio).

Si bien hay muchas formas diferentes de implementar algoritmos, una forma obvia pero potencialmente ineficiente de implementar un algoritmo a menudo se denomina algoritmo "ingenuo". La mayoría de los algoritmos eficientes no son fáciles de descubrir, y los científicos de la computación han estado trabajando durante muchos años para encontrar los mejores algoritmos para resolver clases de problemas. Los algoritmos en sistemas de producción se implementan de formas temporal y espacialmente eficientes. Las empresas de software más grandes garantizan los más altos estándares algorítmicos mediante programación en pareja, similar a la revisión por pares. Se necesitan muchos años de entrenamiento y un alto grado de habilidad para implementar algoritmos de manera eficiente.

En un sentido práctico, aunque las técnicas de programación han evolucionado y los lenguajes de programación (es decir, C, C++, Java, JavaScript, PHP, Python) han variado en popularidad, los fundamentos han permanecido iguales desde que Bell Labs, en la década de 1970, escribió los primeros módulos de C. Hay algunas formas prácticas de hacer que los problemas teóricamente desafiantes funcionen en producción, como el uso de sistemas distribuidos. Los enfoques avanzados conllevan un mayor costo y están fuera del alcance de todas las organizaciones, excepto las más progresistas tecnológicamente.

Dada la complejidad de los enfoques de programación algorítmica clásica, las organizaciones hace tiempo que encuentran difícil construir equipos eficaces para producir dichos sistemas internamente. Además, muchos también han tenido dificultades para encontrar proveedores externos que resuelvan desafíos específicos que teóricamente son posibles de implementar. Diseñar un algoritmo específico se vuelve significativamente más complejo a medida que aumenta la complejidad del problema. Esto es especialmente cierto para problemas multivariados. Es mejor utilizar enfoques algorítmicos clásicos para situaciones donde un algoritmo puede resolver rápidamente un problema y funciona para la mayoría de los casos.

El enfoque de AI para resolver problemas

El paradigma de la Inteligencia Artificial intentó resolver problemas de manera genérica introduciendo entradas y salidas deseadas en un sistema y permitiendo que el sistema aprenda a resolver problemas. Los enfoques actuales de AI se ejecutan en computadoras clásicas mediante técnicas de programación clásica. Los métodos de AI más emocionantes son las redes neuronales y el aprendizaje por refuerzo.

Las redes neuronales artificiales aprovechan la comprensión humana de cómo la mente humana aprende y generaliza problemas. El aprendizaje por refuerzo utiliza agentes que introducen un estado objetivo y una serie de escenarios. El algoritmo de aprendizaje retiene los resultados preferibles y descarta los resultados adversos a lo largo de múltiples iteraciones. El aprendizaje por refuerzo es análogo al condicionamiento operante. El agente aprende cómo lograr el objetivo a lo largo de muchas iteraciones de entrenamiento.

Un requisito para entrenar soluciones de inteligencia artificial es, o bien un amplio conjunto de datos bien definido, generalmente recopilado utilizando una combinación de varios almacenes de datos o de micromecenarego colectivo, o bien un sistema puede aprender a alcanzar un estado objetivo ejecutando una serie de iteraciones. Un ejemplo de esto es un sistema que juega contra sí mismo, como en el Ajedrez o Go, para aprender más sobre cómo desarrollar estrategias para mejorar los resultados. Las redes artificiales y el aprendizaje por refuerzo se ejecutan en escenarios para los que no han sido entrenados y se evalúan de manera similar a otros enfoques de aprendizaje automático. Estos enfoques generalizan bien y proporcionan soluciones eficientes para una clase de problemas. Las soluciones basadas en Inteligencia Artificial se adaptan a problemas que no pueden definirse fácilmente mediante una secuencia de instrucciones; en su lugar, requieren más “intuición” y juicios de valor.

Típicamente, los sistemas de Inteligencia Artificial se entrenan utilizando conjuntos de datos y posteriormente se evalúan en un conjunto de evaluación. Cuantosos más datos de entrenamiento de alta calidad se introduzcan en un sistema de AI, mayor será la probabilidad de que el sistema funcione a un alto nivel. El beneficio de los enfoques de AI es que pueden seguir mejorando con el tiempo a medida que el sistema aprende más. Por lo tanto, los problemas complejos pueden generalizarse y resolverse mediante sistemas informáticos. Esto incluye problemas tradicionalmente resueltos por intervención humana, aunque la AI estrecha puede considerarse un complemento a la intervención humana existente para garantizar mejores resultados.

La inteligencia artificial y el Machine Learning han sido vistos con cautela durante mucho tiempo por las organizaciones debido a que tales sistemas carecen de la trazabilidad y determinabilidad de cómo responderán a los casos de uso. Por lo tanto, la AI puede actuar en circunstancias excepcionales y responder de manera impredecible cuando menos se espera. Es por eso que es importante tener casos de uso claramente definidos para cuándo se utilizará la AI, qué niveles de error se aceptan y cómo los resultados producidos por los sistemas de AI serán revisados por pares mediante intervención humana para garantizar la precisión.

En general, predecimos que la precisión mejorada que los sistemas de AI aportarán, junto con las eficiencias obtenidas al aumentar la intervención humana, representarán un incentivo financiero demasiado grande para que muchas organizaciones no lo ignoren en los próximos años, los sistemas de AI se volverán omnipresentes.

Cuándo Elegir Inteligencia Artificial y Cuándo Seleccionar el Enfoque de Programación Algorítmica Clásica para Resolver Problemas

Si bien no hay reglas estrictas y rápidas sobre cuándo usar cualquiera de los enfoques, como regla general, los problemas que requieren soluciones aproximadas y que involucran planificación a largo plazo orientada a objetivos, reconocimiento de patrones complejos y procesamiento de una multitud de variables son más adecuados para el AI. Los enfoques algorítmicos clásicos son más adecuados para soluciones exactas o casi óptimas que involucran mucha lógica y cálculos.

Elegir el enfoque correcto puede generar beneficios significativos para su organización, mientras que optar por un método menos óptimo puede conducir a pérdidas de capital sustanciales, ya que los proyectos tecnológicos son costosos. A menudo, recurrir a sistemas probados y demostrables como Telemus AI™ puede ayudar a las organizaciones a garantizar el éxito en su transformación digital con Inteligencia Artificial.

Contáctenos hoy para una consulta gratuita sobre cómo Telemus AI™ puede integrarse en su organización.