Interpretabilidad y fiabilidad: ¿cómo extraemos esta información en modelos inteligentes?

Cuando salimos del ámbito técnico se acostumbra a pensar que un modelo de Machine Learning no deja de ser un componente algo mágico que es capaz de solucionar prácticamente cualquier problema de forma casi independiente. Que únicamente hay que proporcionarle datos y él hará el resto.

Eso se aleja bastante de la realidad, pues existen muchos otros elementos que hay que tener presentes para que el proyecto sea un éxito y no un fracaso absoluto.

Concretamente en este artículo, hablaremos de interpretabilidad y fiabilidad, dos áreas muy importantes del Machine Learning y que a veces no son demasiado explotadas. Es importante remarcar que en este artículo no pretendemos, ni mucho menos, explicar completamente todos los detalles sobre este tema, sino dar una visión genérica de los conceptos y de qué soluciones existen actualmente.

La interpretabilidad y la fiabilidad no sólo nos pueden ayudar a desarrollar correctamente un modelo y diagnosticar su comportamiento. De hecho, pueden ser una pieza clave en el flujo del propio algoritmo que desarrollamos.

Para los que no están familiarizados, en Machine Learning entendemos como modelo una función/componente que es capaz de aprender nuevos conceptos a base de ver muchos datos. Es decir, el modelo es capaz de transformar la entrada de datos y obtener la salida deseada (el cómo se obtiene se sale del alcance de este artículo). Así que es común verlo como una “caja negra” que dispone de entradas y de salidas.

La entrada proporciona toda la información que el modelo necesita para producir la salida deseada (la que conocemos como predicción).

Estas entradas y salidas siempre tienen que estar bien definidas, estructuradas y en un lenguaje muy específico. Definir tanto las entradas, las salidas como el modelo a usar es unas de las principales tareas que un Machine Learning Engineer se puede encontrar en su día a día.

Para entender mejor los conceptos que iremos explicando en este artículo, usaremos un ejemplo que nos acompañará:

Supongamos que un banco lanza una nueva estrategia para automatizar la concesión de hipotecas. Estas se quieren dar, a partir de ahora, mediante un modelo de Machine Learning. A este modelo se le proporciona la información de la persona que la solicita y devolverá como resultado un sí o un no (a conceder la hipoteca).

(Tened en cuenta que no somos expertos en hipotecas. Es probable que nuestro planteamiento no se ajuste mucho con la realidad, es meramente ilustrativo).

Podríamos decir entonces que:

  • La entrada es la información de esa persona: ingresos, edad, género, situación laboral, situación familiar, el préstamo necesario, etc…
  • La salida es únicamente si se concede o no.

Podríamos tratar de resolver el problema con un modelo de regresión logística. No os asustéis si no sabéis lo que es. Podríamos definirlo como un modelo lineal cuya salida es una probabilidad. Lo primero que haríamos en este caso sería traducir todas las entradas a valores numéricos:

  • Edad (edad): sigue siendo edad.
  • Género (gen): 0 hombre / 1 mujer.
  • Ingresos (ing): ingresos en €/mes.
  • Situación laboral (sit): 0 desempleado / 1 empleado.
  • Préstamo (pres): préstamo en €.

Después ponderaríamos cada entrada por un factor α y obtendríamos una probabilidad: si el valor es cercano a 0 no se le concede la hipoteca, si es cercano al 1, sí.

Puede parecer complicado, pero únicamente estamos ponderando cada dato de entrada para finalmente transformar toda esa suma en una probabilidad (doy hipoteca o no).

Los factores α son los que asumimos que nuestro modelo será capaz de encontrar mediante un proceso de aprendizaje.

 

Interpretabilidad: 

La potencia como factor determinante

Los modelos cada vez son más potentes y nos permiten obtener resultados en campos que antes eran totalmente impensables: biomedicina, genética, análisis de texto, imágenes, audio y vídeo, conducción autónoma, etc. 

Por desgracia, gran parte de las veces es difícil entender qué proceso aplica el modelo al dato de entrada para obtener la salida (conocido como mapping o transformación). 

Y os preguntaréis ¿por qué no somos capaces de entender al 100% algunos modelos de Machine Learning

La respuesta es simple: porque, que los modelos sean más y más potentes, normalmente implica que tienen más y más parámetros (actualmente hablamos de millones con mucha facilidad). El hecho de tener tantísimos parámetros hace prácticamente imposible entender qué realizan exactamente. 

Esto es exactamente lo que intentamos resolver con la interpretabilidad. Queremos entender qué está pasando en esa “caja negra” y poder extraer nuestras propias conclusiones.

Fuente: https://medium.com/ansaro-blog/interpreting-machine-learning-models-1234d735d6c9
Fuente: https://medium.com/ansaro-blog/interpreting-machine-learning-models-1234d735d6c9

La figura anterior se conoce como el trade-off entre la exactitud de los resultados y su interpretabilidad. Podemos ver cómo los modelos más potentes, como son las redes neuronales, son muy difíciles de interpretar (pero también más exactos). Por otro lado, los regresores lineales son bastante sencillos de interpretar (pero pueden ser más inexactos en problemas complicados).

Este trade-off también es un rasgo que diferencia los campos entre la estadística y el machine learning:

  • La estadística tradicional está basada en cálculos simples, dando énfasis en la introspectiva, forma o él causa efecto para encontrar el modelo correcto. Por lo tanto se da una gran importancia a la interpretabilidad.
  • El machine learning por el contrario está basado en cálculos complejos y se da énfasis en la velocidad y la calidad del modelo. Dejando algo de lado la interpretabilidad.

Recuperando nuestro ejemplo, podríamos preguntarnos: ¿Es nuestro modelo sexista? ¿El hecho de ser hombre o mujer influye realmente en la concesión de la hipoteca? ¿Puede ser que nos decantemos en la concesión porque esa persona tiene un género u otro?

Esto claramente nos obligaría a tener que interpretar el modelo y mirar cuán importante es la entrada del “género” en la concesión de la hipoteca a Maria.

Un modelo de regresión logística como el que hemos expuesto en el anterior apartado es francamente sencillo de interpretar (se encontraría en el mismo sitio que el modelo lineal en la gráfica de trade-off). 

El siguiente procedimiento que haremos se conoce explicatividad y consiste en tratar de explicar la importancia de los valores de la entrada respecto una salida en concreto.

Recordemos nuestra expresión:

Únicamente deberíamos observar qué valor comprende el género en la ecuación, es decir: α2. Si este factor α2 comprende valores semejantes o superiores a los otros factores α quiere decir que tiene cierta importancia en la determinación del coste de la vivienda, y por lo tanto el modelo es sexista (lo ideal sería tener un valor cercano a 0).

Pero volviendo a la realidad, esto no acostumbra a ser así de fácil… Si utilizamos un modelo más complejo porque necesitamos mejores resultados, se deben aplicar otras técnicas. Algunas de estas técnicas están enfocadas al modelo que usamos y otras más genéricas que consideran nuestro modelo como una caja negra: LIME o SHAP.

 

LIME: explicatividad para todos

Es un algoritmo que se conoce como Local Interpretable Model-Agnostic Explanations, cuyo objetivo es explicar la importancia de las entradas para cada predicción. Sus siglas significan:

  • Local: explica la predicción usando otras predicciones de su vecindad (personas de distinto género pero misma edad e ingresos por ejemplo).
  • Interpretable: una vez a nivel local crea un modelo simple para que éste sí sea interpretable y que lo pueda entender un humano.
  • Model-Agnostic: supone que el modelo original es una caja negra y por lo tanto sirve para cualquier modelo.
Fuente: https://www.kdnuggets.com/2019/12/interpretability-part-3-lime-shap.html
Fuente: https://www.kdnuggets.com/2019/12/interpretability-part-3-lime-shap.html

Para describir este algoritmo normalmente se utiliza el acrónimo LIME (mucho más corto y fácil de recordar). LIME es muy interesante, pues destaca por su sencillez y es francamente rápido en comparación con otras alternativas más potentes como usar SHAP.

Además LIME se puede usar en distintos tipos de datos. A continuación algunos ejemplos:

  • Imagen:

  • Texto:

  • Datos Tabulares:

Te recomiendo encarecidamente que veas este video si realmente te interesa este tema.

 

Fiabilidad: 

¿Cómo evaluamos la fiabilidad?

Cuando los humanos aprendemos, una de nuestras mayores fortalezas es conocer nuestras debilidades y no actuar cuando hay demasiada incertidumbre. 

Sin embargo, cuando hablamos de modelos de Machine Learning no ocurre lo mismo: la mayoría toman las decisiones sin tener en cuenta la incertidumbre.

Por ejemplo, suponiendo que tenemos un clasificador de gatos y perros: 

Este, por ejemplo, sólo podrá predecir si es gato o perro. Pero si la entrada es un panda, el modelo seguirá diciendo si es gato o perro. Lo realmente interesante, sería que el modelo fuese capaz de decir: “Vale, no lo sé, me has pillado”. Esto es particularmente importante cuando analizamos aplicaciones médicas, financieras, automoción, etc. En general, donde el entorno es crítico y se debe manejar la incertidumbre.

Lo ideal sería poder añadir el grado de incertidumbre en la predicción en nuestros modelos, y en caso de ser muy alta, que la decisión pudiese ser tomada por un humano. Además si la decisión es tomada por un humano, podemos ayudar a nuestro modelo a seguir aprendiendo, (esto se conoce como Active Learning).

Volviendo nuevamente al contexto de la incertidumbre, podríamos decir que existen dos casos fácilmente diferenciados:

  • Aleatórica: Es cuando la entrada es ambigua y el sistema no sabe qué es la entrada. Por ejemplo, si tenemos en la entrada una imagen de un gatoperro. O mejor dicho, un perrogato… bueno, elegid vosotros mejor.

  • Epistémico: Es cuando la entrada no se corresponde con los datos con los que ha aprendido nuestro modelo. ¿Qué podemos esperar de nuestro modelo si le pasamos un panda y nunca ha visto uno? Obviamente… ¡lo hará fatal!

Fiabilidad: Lo quiero ¿Dónde hay que firmar?

Existen diversas formas de aproximar las incertidumbres. Cada caso se utiliza distintas técnicas.

En el caso de la incertidumbre aleatórica, existen diversos métodos:

  • Introducir la incertidumbre como valor a aprender por el modelo: Existen algunos modelos como las redes neuronales en los que podemos estimar el valor de la incertidumbre adaptando la función de pérdida (que permite calcular el grado de error del modelo). Esta adaptación es bastante simple y los valores de incertidumbre estarán en la escala de la función de pérdida.

  • Test Time Augmentation (TTA): Otra metodología consiste en realizar pequeñas perturbaciones en la entrada. En el caso de imágenes serían: cambios de iluminación, cambios de contraste, rotaciones, escalados, etc.

Una vez tenemos todas estas perturbaciones calculamos su predicción. Y finalmente computamos la desviación estándar σ para conocer cómo de distintas son las predicciones entre sí (incertidumbre). Es muy útil si consideras que tu modelo es una “caja negra”.

En el caso de la incertidumbre epistémica, vuelven a existir diversos métodos. Este caso, sin embargo, se complica un poco más.

Hé aquí un ejemplo para simplificar la explicación:

Cuando nos sentimos mal, es habitual hacer una visita al médico. Y normalmente este médico nos ofrece un diagnóstico. Pero ¿no sería fabuloso si pudiésemos consultar a otros médicos para conocer el grado de fiabilidad que tienen esos diagnósticos? Si entre todos se contradicen probablemente tengamos algo difícil de diagnosticar (poca fiabilidad). Si todos están de acuerdo es que es fácil de diagnosticar (mucha fiabilidad).

Para poder obtener nuestra incertidumbre epistémica debemos tener distintos modelos aprendidos con los mismos datos. En este caso los métodos empleados pueden ser varios, pero destacamos:

  • Ensemble: se tienen N modelos distintos, calculamos la predicción por cada uno de ellos y luego realizamos la desviación estándar.
  • Métodos basados en Inferencia Bayesiana: se tiene un único modelo, pero que en vez de tener parámetros, tiene distribuciones como parámetros (conocido como la distribución posterior p(w | x, y)). Para posteriormente calcular la desviación estándar. Hay diversos algoritmos para poder llevar a cabo esta estimación como por ejemplo: Monte-Carlo Markov Chain, Variational Inference, DropOut, etc.

Ahora que conocemos un poco el concepto de la incertidumbre epistémica, podríamos recuperar nuestro ejemplo de las hipotecas. Esto nos permitiría resolver preguntas como: ¿Cuán seguro estás cuando me dices que sí al hecho de ofrecer una hipoteca a Maria? Él sería capaz de respondernos, “No lo sé, nunca tuve suficientes datos para conocer este caso”.

En un caso real podríamos ver cómo tenemos una regresión que ha aprendido con un conjunto limitado de datos (puntos negros). Podemos observar como la incertidumbre es relativamente baja donde están los puntos, pero a medida que nos alejamos por los extremos la incertidumbre sube porque nuestro modelo no ha podido aprender esa región con datos.

Fuente: https://blog.dominodatalab.com/fitting-gaussian-process-models-python/
Fuente: https://blog.dominodatalab.com/fitting-gaussian-process-models-python/

Y hasta aquí el artículo de hoy. Esperamos que os haya resultado útil la información, y que a partir de ahora tengáis (más) en cuenta los factores de interpretabilidad y fiabilidad a la hora de utilizar o desarrollar algoritmos de Machine Learning.

Si quieres conocer el potencial que la IA puede aportar a tu empresa no dudes en consultar nuestras soluciones o contactarnos a hello@algoritmia8.com o al 93 786 87 77.

Escrito por Adrià Ciurana