Saltar a contenido

Técnicas básicas de IA

Además del campo del machine y deep learning existen otras técnicas que podemos aplicar para desarrollar programas inteligentes. Como decíamos antes, un simple programa al que le digamos un nombre de ciudad y nos responda qué tiempo hace ahora mismo allí es inteligente. También un programa que aprenda a jugar a algún juego de tablero, como el 3 en raya o el ajedrez, es inteligente. O programas basados en reglas que nos ayuden a inferir cierto conocimiento o resolver problemas basados en restricciones.

1. Ejemplos de técnicas

Algunas de las técnicas que podemos incluir en este conjunto pueden ser:

  • Algoritmos de búsqueda de soluciones, como el backtracking o la ramificación y poda.
  • Algoritmos de búsqueda de la mejor estrategia en situaciones de competición uno contra uno por turnos, como el algoritmo MiniMax.
  • Sistemas basados en reglas, que determinen una posible solución a un problema cumpliendo una serie de restricciones, o que permitan generar conocimiento adicional aplicando reglas ya conocidas. En este campo entran paradigmas de programación adicionales, como la programación lógica.
  • ...

2. Etapas y elementos a considerar

Existen ciertas etapas y elementos en estas técnicas de IA que veremos a continuación que conviene conocer. Muchas de ellas son compartidas con las que se vieron en el apartado de machine learning

  • Entradas y salidas: cualquier modelo de inteligencia artificial está basado en entradas y salidas: al sistema se le proporcionan una serie de datos de entrada (una imagen, una serie de valores numéricos, el estado de un tablero de juego, etc) y produce una salida (identificación de un objeto en la imagen, predicción de un futuro valor numérico, valoración de la siguiente jugada a realizar...)
  • Feedback o recompensa: en muchos modelos a desarrollar (más allá de los basados en machine learning) será necesario proporcionar algún tipo de recompensa, indicando lo buena o mala que es la solución encontrada. Por ejemplo, en sistema que aprenda a jugar al ajedrez, se le deberían proporcionar lo "buenas" o "malas" que son las jugadas seleccionadas.
  • Proceso de decisión: esto dependerá también de cada modelo, y consistirá en el bucle o proceso principal que lleva al modelo a tomar una decisión, en base a las entradas que recibe y las reglas que tiene definidas.

Evidentemente, estas premisas o elementos van a variar mucho dependiendo del tipo de modelo a desarrollar. En próximos documentos trataremos de acotarlas a cada caso particular.

3. Modelos de computación habituales basados en inteligencia artificial

Cuando desarrollemos un programa basado en inteligencia artificial, tendremos que tener normalmente presentes varios (o todos) los principios vistos antes: determinar las entradas del problema, las salidas que producirá, el proceso de decisión, etc. El modelo es la implementación del algoritmo que va a resolver una tarea determinada (emitir unas salidas a partir de unas entradas proporcionadas).

Sin embargo, como podemos intuir, existen diferentes modelos o algoritmos que podemos aplicar para resolver los problemas, y podemos clasificarlos en diferentes categorías. Una primera clasificación puede catalogar estos modelos en dos grupos:

  • Modelos estocásticos, donde la evolución del modelo se basa, en parte, en ciertos datos aleatorios que utilizaremos para generar nuevas alternativas, o simular ciertos procesos. Como en todo proceso aleatorio, será difícil obtener dos veces el mismo resultado, y eso significará que, cada vez que ejecutemos el programa, podremos obtener resultados diferentes, aunque todos igualmente válidos para lo que se pretende resolver. Ejemplos de estos modelos son los algoritmos genéticos, las redes neuronales, el muestreo de Thompson... y modelos de machine o deep learning en general.
  • Modelos deterministas, donde la evolución del modelo se basa en una serie de pautas fijas y, por tanto, siempre que lo ejecutemos obtendremos el mismo resultado. En esta categoría incluiríamos técnicas como el algoritmo MiniMax, backtracking, mecanismos de programación lógica, etc.

Normalmente los modelos deterministas suelen aplicarse a problemas relativamente simples y fáciles de codificar, o aquellos donde los datos se conocen con certeza. Por ejemplo, calcular la ruta más corta entre dos puntos, o establecer un equilibrio entre la cantidad de stock que se almacena en una empresa y la que se pide. Para procesos más complejos donde no tenemos muy claro cómo resolverlos, los modelos estocásticos incluyen un parámetro más que nos será de mucha utilidad: el azar. Esto va a permitir generar alternativas nuevas en el proceso, o datos con los que "simular" una toma de decisión que no tenemos del todo clara.