El valor de los expertos generalistas

En el espíritu de este blog se encuentra servir de inspiración a la mayor cantidad de gente a fin de despertar o consolidar una vocación como expertos generalistas. He tratado de este concepto en numerosas ocasiones, por ejemplo, aquí, por lo que invito a los lectores que no conozcan este término a que sigan este enlace.

Mi objetivo indisimulado es el de contribuir de forma muy modesta, acorde a la medida de mis posibilidades, a la consolidación de una masa crítica suficiente de expertos generalistas en España, digamos entorno a un millar, siguiendo los postulados de la cruzada emprendida por mi amigo Pablo Oliete en la industria 4.0 (son la  misma gente), a fin de que se conviertan en los catalizadores que necesita este país para entrar de lleno y por derecho propio, en el S.XXI y convertirse, a través de los hechos y no sólo de palabras, en un país tecnológicamente avanzado y a ser posible con la menor dependencia forzada de otros (que no, independencia absoluta, que no es deseable).

Es por ello por lo que, al hilo de la tragedia humana, social y económica en forma de pandemia en la que nos encontramos y conforme hemos ido desarrollando diversos aspectos en los que los sistemas de Inteligencia Artificial (IA) podrían contribuir, a prevenirla (ya hemos llegado tarde a esto), paliarla o controlarla, ha ido tomando cuerpo la necesidad de mostrar el valor que puede aportar a cualquier proyecto la visión de un experto generalista. Y no es una tarea fácil porque todo nuestro sistema educativo está volcado mucho más en la adquisición de conceptos, en su acumulación, que, a relacionar conceptos diversos y aparentemente inconexos de diversos dominios de conocimiento, desde sus principios básicos.

En la cabeza de una diseñadora de sistemas de Inteligencia Artificial

Con todo esto en mente, en este artículo y sucesivos, propongo a los lectores que me acompañen en un viaje muy especial, “metiéndose” en la cabeza de una diseñadora de sistemas de inteligencia artificial, experta generalista, llamémosla Marta, que después tendrá que dirigir un equipo de especialistas que hagan posible su implementación práctica (que son necesarios), a fin de  tratar de resolver de una forma satisfactoria el problema que nos ocupa en esta serie de artículos:

«Diseñar (a alto nivel) un sistema que ayude a sus usuarios a poder monitorizar su salud en relación con el covid-19 a través de su teléfono móvil y que les ayude a decidir si deben ir a trabajar, o por el contrario, si deben aislarse o acercarse al centro de salud u hospital más cercano para saber si están o no infectados con el covid-19. Además, en la medida de lo posible, debe ayudarles a no infectar a más personas a partir de ese momento compartiendo de forma voluntaria y anónima dicha información, especialmente cuando implique que podría estar infectado».

Y gracias a este viaje veremos como Marta llegó al sistema de IA que examinamos en el artículo anterior. Es posible que algunos lectores no compartan el criterio adoptado por Marta en determinadas decisiones de diseño, pero al menos espero que si compartan que se trata de un diseño plausible y, como mínimo, un candidato a solución de nuestro problema, al que merece la pena dedicarle un tiempo de reflexión.

Existen varias alternativas técnicas para llevar a cabo este sistema de IA, pero para no complicar todo el análisis excesivamente, me voy a centrar en la más extendida y la que probablemente ha arrojado mejores resultados hasta la fecha, la que se centra en el uso de los llamados agentes inteligentes, que es en la que Marta ha basado su solución.

Todo empieza con los agentes inteligentes

¿Qué es un agente inteligente?

De acuerdo con la Wikipedia, un agente inteligente es una entidad capaz de percibir su entorno, procesar tales percepciones y responder o actuar en su entorno de manera racional, es decir, de manera correcta y tendiendo a maximizar un resultado esperado. Es capaz de percibir su entorno con la ayuda de sensores y actuar en ese medio utilizando actuadores (elementos que reaccionan a un estímulo realizando una acción).

Gráficamente y particularizando para nuestro proyecto, puede representarse así:

Fuente: concepto extraído y traducido de “AI a modern approach”, Russell & Norvig. Ilustración. Adaptación propia al caso de estudio

En función del grado de sofisticación del elemento con interrogante (“?”) entre los estímulos que recibe el agente inteligente y las acciones que desencadena este, se dirá que el agente tiene un comportamiento más o menos inteligente.

Este Agente Inteligente es el sistema que está tratando de realizar una tarea determinada, por lo que también se le conoce por elemento de actuación o desempeño (perfomance element) y que puede ser: sólo software (como una aplicación en nuestro teléfono móvil, que simplemente le proporciona un sustrato físico donde correr, aunque en este caso, también le proporciona sensores (micrófono, teclado, cámara) y actuadores (notificaciones sonoras, vibración, pantalla, conexión a Internet) o bien, podría ser combinación de hardware y software como un robot que fuera una especie de asistente digital personal de los miembros de una familia que viven en una casa.

En este punto los pensamientos de Marta eran los siguientes:

Necesito desarrollar una solución lo más simple posible y para aquí, para España, que no es Japón donde hay muchos más robots domésticos…. ¡vale!, ¡sí!, pero aún no tantos, porque cuestan un dinero que no todo el mundo tiene, ni siquiera allí. ¿Qué podría usar, que todo el mundo tiene en casa?, hum…, ¡ya está! el teléfono móvil, casi todo el mundo lo tiene y casi todo el mundo sabe usar sus funciones básicas. Sea pues, vamos a desarrollar una aplicación móvil de inteligencia artificial.

Antes de empezar a pensar en el tipo de agente inteligente que le conviene implementar, Marta debe hacer dos cosas: en primer lugar definir la tarea o tareas a realizar lo más precisamente posible (incluso en términos matemáticos si fuera necesario), es decir lo que va a hacer el elemento de actuación (la tarea) y, en segundo lugar, definir bien el entorno en que se va a desarrollar esta/s tarea/s pues unas técnicas serán más apropiadas que otras en función de las características del entorno en que se vaya a desarrollar la actuación sobre esa tarea.

 ¿La tarea es apropiada para un sistema de IA?

En el primer artículo de esta serie, hablábamos de qué cosas pueden ser aprendidas y cuáles no y de la dificultad de aprender nada cuando tenemos muy poca información. Este era el caso de nuestro sistema de alerta temprana. Hablamos de que el covid-19 era un conocido ignorado (known unknown), pero que, en la medida en que ya disponemos de muchos casos de covid-19, superando los 234.000 casos sólo en España (y más de 5 millones en todo el mundo), nos movemos hacia un escenario de conocidos sabidos (known knowns) que es donde los sistema de IA brillan y  esté fue, precisamente el razonamiento de Marta:

“¡Si!, disponemos de muchas muestras, se trata de un caso más de diagnóstico médico en los cuales los sistemas de IA ya han demostrado muchas veces ser muy adecuados

Bueno…”, pensó Marta, reflexionando un poco más, “eso es así en la medida en que mi sistema de IA no se meta a hacer juicios de valor, ni tampoco a tomar automáticamente decisiones sin consultar al usuario del sistema” (la persona que está usando la aplicación de asistencia primaria con el covid-19 a través de su teléfono móvil).

Si mi sistema acabara haciendo alguna de estas cosas como parte de su tarea, debería considerar que puede convertirse en un desconocido sabido (unknown known), ya que podría estar aparentemente muy seguro de las correlaciones halladas entre los datos, pero los sistemas de IA no saben tratar con la causalidad (hasta hace poco).

Por ejemplo, podría retrasar demasiado  el envío de un posible positivo al hospital porque se trate de una persona mayor y el riesgo de enfermar al ir a hacerse las pruebas al hospital una persona de su edad es relativamente grande y mucho mayor que quedarse en casa, además de que suelen cursar la enfermedad mucho peor que personas más jóvenes, por lo podría incluso morir e imagínate lo que podría suponer si era un falso positivo que envió el sistema y se infectó y posteriormente en el hospital…hum…sería el final del sistema personal de alerta preventiva.”

Aquí el sistema es anticausal (toma como causa lo que es el efecto y viceversa), la causa de que en los hospitales fallezcan más personas mayores, que entre esa misma población que se queda en casa, es porque los que se sienten enfermos, acuden al hospital, no que enferman por ir a él (aunque a veces pueda pasar).

Y continua Marta:

“Pero también podría suceder lo contrario, que envíe demasiado ‘alegremente’ gente que predice que tiene el covid-19 sin tomar en cuenta que puede ser una persona de riesgo, donde podría tener más probabilidades de resultar infectado, suponiendo que fuera un falso positivo, hum, difícil elección.  Si incluimos estas características para hacerlo más inteligente habrá que considerar seriamente este asunto.” 

Aquí el pensamiento de Marta es causal, pero en la toma de decisión de si es conveniente ir o no a pesar de los riesgos, intervienen otras variables fuera del modelo, que las personas tenemos en cuenta, pero el sistema de IA no tiene sentido común como para tenerlas en cuenta fácilmente, aunque tampoco es imposible: ¿vivo con alguien que es grupo de riesgo? ¿Hay algún otro positivo en la casa?, etc.

Lo que tiene Marta en mente es una reflexión que, hasta hace una década, no se había tenido que plantear ningún diseñador de sistemas de IA, pero que, gracias a los logros sin precedentes del denominado aprendizaje profundo, ahora es preciso hacerse cada vez. Toda tarea puede ser concebida como una sucesión de decisiones, de manera que la ejecución de una tarea se puede simplificar con decir: “¿qué partes de la ejecución de las tomas de decisiones que componen la tarea a realizar va a llevar a cabo el sistema de IA? Para aclarar sus ideas Marta se dibuja el siguiente diagrama:

Fuente: Anatomía de una decisión dentro de una tarea. Adaptación y elaboración propia a partir de “Prediction machines”, Ajay Agrawal et al.

Cualquier decisión se compone de seis elementos clave: en primer lugar, se adquieren datos de entrada del mundo que rodea al sistema (del entorno), lo que permite hacer una predicción. Esta predicción es posible porque se ha realizado algún tipo de entrenamiento acerca de las relaciones entre los distintos datos de entrada y qué datos están más íntimamente asociados con una situación. Combinando la predicción con el juicio sobre lo que importa, el elemento que tome la decisión (sea una máquina o un ser humano) elige una acción. La acción produce algún tipo de resultado en forma de recompensa o coste. El resultado es la consecuencia de la decisión y es necesario para completar el cuadro. Por último, el resultado proporciona una realimentación para ayudar a mejorar la próxima predicción.

Lo cierto es que, como se ha dicho, gracias a los impresionantes avances tanto el campo del aprendizaje profundo (Deep learning) , como del aprendizaje por refuerzo (reinforcement learning), ha aparecido un nuevo campo de conocimiento que los combina, denominado “aprendizaje profundo por refuerzo” (Deep reinforcement learning), en el que todos los elementos de la decisión pueden ser llevados a cabo, en mayor o menor medida por un agente inteligente, con la excepción del juicio, por falta de un sistema de IA general, si bien este también es planteable en sistemas que han de ser muy autónomos ubicados en ambientes muy controlados como un laboratorio o determinadas partes de una línea de producción donde sí puede acotarse el juicio a través de algún sistema experto basado en reglas heurísticas o incluso en razonamiento simbólico (i.e. basadas en la experiencia). Pero si hay un elemento de la decisión que puede ser automatizable, este es sin duda la predicción.

Con estas consideraciones de fondo, Marta continúa reflexionando sobre esta cuestión:

“A ver, la tarea más «simple» es la de hacer una predicción de si hay o no covid-19, (que es lo que hacen los sistemas de aprendizaje automático –machine learning). Si el sistema se limita a esto, estará en un conocido sabido y ya hay muchos datos como para pensar que puede llegarse a un sistema con una cierta fiabilidad en las predicciones que valga como primera línea preventiva, a pesar de que, habrá que manejar con cuidado que se trata de condiciones de operación difíciles y muy variadas pues se trata de usuarios sin entrenamiento específico, en una gran diversidad de situaciones emocionales y con dispositivos (los teléfonos móviles) muy diversos que realizarán pruebas diagnósticas que no serán muy precisas, es decir que nos estaremos manejando con un incertidumbre importante. ¡Precisamente por eso es por lo que necesitamos usar un sistema de IA!

Este aprendizaje automático y su realimentación hemos de sacarlas fuera del sistema, en primer lugar, para mantener las cosas simples y manejables con un teléfono móvil, en segundo lugar, porque hay cierta urgencia de disponer de una solución general, por lo que necesitamos una solución “pre-entrenada”, que sea el resultado de la agregación estadística de, al menos, decenas de miles de casos por todo el país. Esto también tiene problemas, porque está claro que la distribución de las soluciones capaces de ser aprendidas puede no ser igual, de hecho, seguro que no lo es, a la del espacio de soluciones basado en los datos que realmente  tendrá que usar en explotación para hacer su predicción y lo que interesa, sobre todo, es la capacidad de generalizar correctamente lo aprendido a las nuevas muestras de datos, más que ser muy bueno prediciendo las muestras con que se ha entrenado el sistema. Pero con las precauciones adecuadas en el proceso de entrenamiento y después en la interacción hombre-máquina, podríamos lograrlo.

Por lo que respecta a la entrada de datos, en principio lo más sencillo para arrancar es que se haga manualmente por el usuario, aunque quizás pueda resultar conveniente automatizar el registro de la tos y la interpretación de la prueba diagnóstica rápida, para evitar el error humano. Desde luego el tema de la tos es un tema de que sea fácil de usar y difícil de equivocarse (usabilidad de la interfaz hombre-máquina), pero el de la interpretación podría necesitar de visión artificial a través de la cámara del móvil, lo que complicaría el diseño de esta aplicación móvil, pero los beneficios de eliminar el posible error humano en la interpretación de la prueba podrían merecer la pena. Hum, habrá que reevaluarlo conforme avance en el diseño del sistema de IA.

Luego habrá que ver realmente qué es lo que la prueba rápida diagnostica, pues no es lo mismo diagnosticar la inmunidad al covid-19 (por haber pasado advertida o inadvertidamente la enfermedad) y haber generado anticuerpos, que es lo que me dicen un tipo de pruebas, que señalar si realmente se está cursando la enfermedad, que es lo que nos dicen las pruebas de tipo molecular o, de forma más imprecisa las de antígenos”

Nota mía sobre la reflexión de Marta: porque otras enfermedades pueden desatar su producción al ser un mecanismo general de actuación del sistema inmunitario.

Así que Marta, después de estos pensamientos, dibuja de nuevo el sistema que está perfilando:

Figura: Modelo simplificado de agente inteligente en que el aprendizaje se entra y se hace fuera del sistema de actuación y no se actualiza con la experiencia.

Donde la predicción pre-entrenada se mantiene “fija” en el sistema. Pero este modelo predictivo se entrena de forma centralizada usando un modelo de aprendizaje como el de la figura:

Figura: Software 2.0. modelo de entrenamiento del sistema de predicción de covid-19

Este tipo de programación de denomina software 2.0 y en ella, los datos sustituyen al programa tradicional con software 1.0 (el de toda la vida) y los algoritmos sustituyen al programador. En este sentido si el software 1.0 es más como una línea de producción en el que hay que especificar todos los detalles de los distintos pasos para producir algo, mientras que el software 2.0 es más bien como la agricultura, plantas el algoritmo, lo siembras con datos y esperas que produzca sus frutos. Desde esta perspectiva, un clasificador (covid si/no) es más un algoritmo que trata de mapear una función desconocida entre la entrada y la salida:

Figura. El clasificador con aprendizaje automático trata de hacer un mapeo entre las variables de entrada y la salida, con dos estados en este caso.

Si los datos de salida los etiqueta (“covid Sí” / “covid No”) un operador humano u otro sistema automático externo al del entrenamiento -por ejemplo, un sistema que lea automáticamente el resultado de una PCR y lo guarde en un registro-, entonces se habla de aprendizaje supervisado pues el supervisor hace las funciones de maestro guiando al sistema aprendiz indicándole si ha cometido un error o no. Si no hay etiquetado y se trata de una comparación automática del error cometido a la salida, se habla de aprendizaje no supervisado. En todo caso, el error cometido realimenta los parámetros de que se compone el algoritmo de aprendizaje, para que el error en la siguiente muestra que se presente en el entrenamiento sea menor que el anterior.

Muchos de estos algoritmos funcionan mediante  una función de evaluación que trata de minimizar los errores cometidos y que, a pesar de su simplicidad, funciona sorprendente muy bien en muchas situaciones  y permite la actualización simultánea de centenares o millares, a veces hasta millones  de parámetros de forma simultánea. Esta función de minimización del error cometido se  conoce como el algoritmo de retropropagación (backpropagation) del que no vamos a hablar aquí hoy, pero baste decir cómo sobre esta ingeniosa y relativamente simple idea, descansan la gran mayoría del aprendizaje profundo de hoy, en particular las redes neuronales artificiales. El lector que quiera más información sobre la propagación hacia atrás puede encontrarla en múltiples fuentes, por ejemplo, aquí.

“Así,” -razona Marta- “podemos actualizar el modelo predictivo, conforme mejore su capacidad de generalizar, al poder saber el resultado real de una parte de sus predicciones, al menos aquella parte que acabe haciéndose una PCR u otra prueba diagnóstica en algún centro sanitario, como una placa de rayos-X. Es cierto que existirán otra parte de predicciones, mucho mayor que la anterior y referida a los resultados negativos fundamentalmente,  que no tendremos manera de saber si eran correctas o no, porque no derivarán en visitas al hospital, aunque también podríamos lidiar con esta limitación de forma indirecta si permitimos el envío de información de forma anónima sea positiva o negativa y tenemos en cuenta que desde la infección hasta el inicio de los síntomas y a su posible detección por la presencia de anticuerpos pueden pasar hasta 7 días”.

Y continúa razonando Marta:

“Dado que la enfermedad también va evolucionando en los síntomas que presenta (ya han variado algunos síntomas desde el inicio de la pandemia), nos interesa poder ir reentrenando periódicamente el modelo, con los datos que realmente se van obteniendo de los envíos que voluntariamente permitan que se hagan decenas de miles o centenares de miles de personas al día usando su teléfono móvil. De esta manera cada vez el modelo sea entrenado será lo más parecido posible a las condiciones reales de trabajo sobre las que ha de generalizar, que es la mayor fragilidad de los sistemas de aprendizaje automático actuales (excepto los basados en aprendizaje por refuerzo). Para ello periódicamente se actualizará de forma automática (con consentimiento de los usuarios como cualquier otra app), la aplicación móvil con las mejoras que correspondan e incluyendo un nuevo modelo re-entrenado”.

Marta, podría seguir razonando sobre este aprendizaje automático, pues sabe que a este respecto tiene tres cosas por decidir, como son: la representación de la información para que el sistema pueda aprender de ella, la evaluación, que es el tipo de función que le permite distinguir entre buenos y malos clasificadores y, por último, la optimización, que le permite buscar entre el espacio de posibles clasificadores (la función que mapea entradas con salida) a la búsqueda de uno lo mejor posible. Pero decide dejarlo porque aun le quedan otros temas que decidir con un mayor nivel de abstracción.

Así que Marta decide centrarse en decidir si el sistema de IA, ha de incluir algún tipo de toma de acciones de forma automática, pero, mira la hora y ve que ya es tarde, así que decide dejarlo para el día siguiente, por lo que esta cuestión y otras, las exploraremos en el siguiente artículo.

Posted by santiago

Deja un comentario