Sistemas expertos, la inteligencia artificial de la que sí sabemos cómo decide
Esta idea me surgió leyendo Principios, de Ray Dalio. Él propone algo que suena simple: primero piensa, después convierte esa forma de pensar en un principio o una regla general, y después pon esa regla en algoritmos. De ahí, dice, salen buenas decisiones. (Está en los principios 5.11 y 5.12, para quien tenga el libro.)
Eso es, más o menos, un sistema experto.
Qué es un sistema experto
Alguien inteligente —o algo inteligente— es aquello que sabe decidir entre varias opciones. Un sistema experto no reemplaza tu conocimiento: lo amplifica. El conocimiento sigue siendo tuyo, tú se lo enseñas al sistema, y el sistema reconoce muchísimas más situaciones a la vez de las que tú puedes tener en la cabeza, hasta donde su memoria y su procesamiento alcancen.
Es una técnica que no tiene nada de nueva. Se usaba desde los años sesenta y setenta, quizá antes, y hoy se usa muchísimo menos porque para problemas grandes queda obsoleta enseguida.
Pero sigue teniendo valor para problemas muy específicos: cosas que sólo un experto sabe resolver, con pocas opciones, donde tú no tienes esa experiencia ni acceso a esa persona.
La lógica proposicional, sin susto
Para hablar de esto hay que hablar de lógica proposicional, que probablemente viste en la preparatoria en algún curso de filosofía.
Mañana es miércoles o mañana es jueves. Mañana no es jueves. Por lo tanto, mañana es miércoles.
Las dos primeras son premisas: información que tenemos sobre el sistema que estamos estudiando. La tercera es la conclusión.
Lo importante es lo que acaba de pasar ahí: inferimos información que no teníamos a partir de la que sí. De eso se trata el asunto. La idea es que todo el conocimiento del experto se pueda escribir de esta forma.
Los acertijos tienen exactamente esta estructura. El de la carrera de Alicia, Brandon y Carlos —y el famosísimo acertijo de Einstein— se resuelven así, y muestran algo que a mí me parece la promesa entera de esta técnica: una persona no experta puede llegar a las mismas conclusiones que el experto, sin tener su experiencia, si el experto depositó sus reglas en el sistema.
Los lenguajes que usé para esto, en cursos de machine learning e inteligencia artificial, fueron Lisp y PDDL. No son muy comunes y son un tanto enredados de entender, sobre todo por los operadores de la lógica: negación, conjunción, disyunción y condicionales.
De todos ésos, el condicional es el más importante, porque expresa causa y efecto: si está soleado, entonces es de día. Usamos esa forma todo el tiempo sin construir realmente las premisas. Un argumento válido es aquel en el que, si las premisas son ciertas, la conclusión también lo es. Lo laborioso no es la conclusión: es verificar cada premisa en vez de adivinarla. Hacerlo bien te ahorra muchísimas discusiones inútiles.
Un ejemplo real: MYCIN
En los sesenta y setenta se escribió en Lisp un programa llamado MYCIN, que reunió el conocimiento de muchos médicos y muchos libros para diagnosticar y prescribir medicación.
Funcionaba. De hecho tenía mejores resultados que algunos médicos. Y nunca se llevó a la práctica, por una razón que no era técnica y que sigue siendo la misma hoy. Vale la pena verla completa, junto con el ejemplo trabajado de cinco reglas de prescripción.
Un ejemplo tonto: la regadera
El otro ejemplo es de un experto en el que todos calificamos: la temperatura del agua de tu regadera.
Cada quien tiene la suya, y aunque no sepas el número exacto en Celsius o en Fahrenheit, sabes perfectamente cuándo ya es. Eso es conocimiento experto sin formalizar.
Para convertirlo en sistema hay que decidir las variables de entrada —los ángulos de las dos llaves, y quizá la temperatura actual— y las de salida —si te gusta o no, si está muy caliente o muy fría, y la presión.
El método: abrir las llaves en una posición al azar, medir con sensores dónde quedaron y qué corrección hiciste tú, y repetir muchas veces desde posiciones iniciales distintas. Con eso armas una tabla de posición inicial a posición final. Esa tabla son las reglas, y nunca las escribiste: salieron de estarte quemando y enfriando.
Ahí aparece un problema interesante. Si desde el 10% moviste al 30%, y desde el 50% regresaste al 30%, ¿qué hace el sistema si arranca en 20%? Con lógica normal, nada: ese caso no está en la tabla. Con lógica difusa hace una acción proporcional, porque considera un rango alrededor del estado actual y no sólo el estado exacto. De eso hablo en otro episodio.
Las tres razones por las que esto se abandonó
Son determinísticos. Las mismas entradas dan siempre las mismas salidas. Eso suena a virtud y es también el techo.
No saben qué hacer con lo que no está en las reglas. Si aparece una excepción, el sistema no la reconoce, porque no se adapta y no hay nada intermedio entre un caso y otro.
El mantenimiento es enorme. Hacerlos crecer significa considerar todas las opciones, a mano, para siempre.
Mi ejemplo del límite es planear la dieta de todo un año. Demasiadas comidas, demasiadas formas de prepararlas, demasiadas formas de servirlas. Harían falta muchísimas iteraciones, y para cuando acabaras, tus gustos ya cambiaron.
Lo que sí vale la pena rescatar
Frente a las redes neuronales y al machine learning, donde las reglas se generan solas a partir de los datos, un sistema experto tiene una propiedad que se perdió y que nadie extraña lo suficiente: sabemos exactamente cuál es el proceso, así que podemos modificar lo que está mal.
Dalio señala una ventaja adicional: una computadora no incorpora tu estado emotivo actual, así que decide con base en el conocimiento y las experiencias previas, y no como alguien que está enojado o preocupado. Y una desventaja: hay que darle mantenimiento y hay que tener siempre a una persona verificando.
Y hay una observación suya que me sigue pareciendo la más filosa de todo el episodio, y que merece su propio texto: un sistema basado en ejemplos no involucra el conocimiento de muchas personas. Involucra muchos ejemplos. Y eso es todo.
No podemos ponernos una venda y decir que esta computadora está haciendo lo mejor, y que siempre ha hecho lo mejor, y que por lo tanto va a seguir haciendo lo mejor. Tal vez eso no sea cierto.
Este texto sale del episodio 010 del Podcast Algoritmos. Ahí digo que la palabra "inteligencia" viene del latín intelligere, de intus y legere, "escoger entre". La etimología que di al aire es discutible y la dejo fuera aquí.