miércoles, 1 de julio de 2020

Los algoritmos de Inteligencia Artificial sí saben explicarse


La afirmación puede parecer sorprendente e incluso atrevida o equivocada, para todo aquel interesado en los aspectos éticos y jurídicos de la Inteligencia Artificial porque, el consenso existente es que los algoritmos de Inteligencia Artificial, muchos de ellos al menos, actúan como 'cajas negras' y no pueden explicar cómo 'toman sus decisiones'. Y el interés, que puede llegar a convertirse en ley, en que los algoritmos puedan hacer patentes sus lógicas, da lugar a una disciplina subconjunto de la Inteligencia Artificial, la 'explainable AI' que busca, precisamente, que los humanos podamos entender y, por tanto, valorar, juzgar y, en su caso, desestimar o corregir, el razonamiento seguido por el algoritmo para llegar a sus conclusiones. 

Pues hoy, tras un rato de reflexión sobre la materia, he llegado a una conclusión previa, una conclusión que desafía esa concepción de que los algoritmos de la inteligencia artificial no saben explicarse. Mi conclusión es que, bien al contrario, los algoritmos de la inteligencia artificial sí que pueden explicarse, pueden explicarse perfectamente.

Antes de que a ningún lector le de un 'infarto intelectual', hago un pequeño 'spoiler' y ya anuncio que, antes de acabar el artículo haré un matiz a esa afirmación, un matiz muy importante, que hace que, a pesar de lo que digo, tenga pleno sentido la existencia y desarrollo de esa disciplina de la 'explainable AI' y deja abierto el debate del interés o necesidad de exigir esa explicabilidad en según qué casos.

Vamos a ir poco a poco. Empecemos por entender un poco más a los algoritmos


Algoritmos de Inteligencia Artificial


Quiero lo primero advertir que la Inteligencia Artificial es una disciplina que agrupa algoritmos bastante heterogéneos. No conozco el detalle de todos los algoritmos de los que he leído o he estudiado, y seguro que existen algunos de los que ni siquiera tengo noticia. Pero lo que aquí digo creo que encaja con la mayor parte de los algoritmos populares incluidos dentro del llamado 'machine learning' y, por si acaso, además, advierto que en mi cabeza tengo sobre todo las redes neuronales y el deep learning. Si algún lector conoce algoritmos que cuestionan seriamente lo que aquí digo, estaré más que encantado de 'escuchar' comentarios y enmiendas.



Como explico en mi libro "La Carrera Digital", los algoritmos de inteligencia artificial, en general, podemos entender que se componen de dos partes o subalgoritmos: el de cálculo, el algoritmo propiamente dicho, el que calcula 'cosas' y es el que al final, reconoce imágenes, o textos, o intenciones de un hablante, o su rostro o analiza si está capacitado o no para un trabajo. Y el otro subalgoritmo, el de aprendizaje, el que hace que los algoritmos de inteligencia artificial aprendan, ya sea durante toda su vida o durante una fase acotada de entrenamiento, modificando para ello parámetros que afectan al funcionamiento del subalgoritmo de cálculo.


Determinismo



En cualquier caso, tanto un subalgoritmo como el otro son perfectamente deterministas (solo se me ocurre una familia de algoritmos, los algoritmos genéticos, donde la aleatoriedad juega un papel relevante). El que sean deterministas quiere decir que ante la misma entrada produce, siempre, la misma salida... eso sí, siempre no se haya producido entrenamiento adicional entre entrada y entrada.

Así, por ejemplo, una red neuronal típica, como un perceptrón multicapa, una vez definidos el número y tipo de capas, su conectividad, las funciones de activación de las neuronas, etc tiene como parámetros principalmente, los pesos que matizan las entradas a cada neurona. Para una combinación concreta de pesos, la salida de la red ante una entrada es absolutamente determinista. El subalgoritmo de aprendizaje, por ejemplo el famoso 'gradient descent', una vez marcadas algunos aspectos como la función de error o el optimizador a usar, es, de nuevo, plenamente determinista, y ante un valor determinado de error produce una actualización absolutamente predecible de los pesos de la red.


Cómo razona un algoritmo



Los detalles dependen del algoritmo pero, simplemente, aplica su subalgoritmo de cálculo... un algoritmo  que seguirá unas transformaciones lógico-matemáticas y que, según acabamos de mostrar, es plenamente determinista... y, además, perfectamente conocido por el desarrollador o científico de datos.

Lo voy a repetir por si no se ha apreciado suficientemente lo que he dicho: un algoritmo plenamente determinista y perfectamente conocido por su desarrollador o científico de datos.

En el caso de una red neuronal típica, las neuronas de la capa de entrada tomarán los valores de las variables de entrada, las multiplicarán por sus pesos, probablemente sumen esos productos en la llamada función de transferencia, y luego pasen esa suma por una función que podría ser, por ejemplo, la sigmoidea generando su valor de salida. Eso por casa neurona de la capa de entrada...cuyas salidas constituirán las entradas de la siguiente capa según un patrón de conexión perfectamente definido. Y este proceso se repetirá hasta pasar por todas las capas y tener los valores de salida en las neuronas de la capa de salida, lo cual será la codificación de la solución propuesta por la red. 


El algoritmo nos cuenta su vida



¿Qué cómo explica sus decisiones un algoritmo? Sencillísimo: explica las variables que tiene como entradas y las transformaciones lógico-matemáticas que ha hecho para llegar al valor de las variables de salida. Punto. Así ha razonado. Así ha 'tomado su decisión'. No hay más. De verdad.

Imaginemos que nuestra famosa red neuronal se dedica al reconocimiento de imágenes clasificándolas en tipos de animales (perro, gato, vaca,...). Y ahora esa red 'se anima' y de modo relajado nos cuenta su vida y cómo razona cuando se lo pedimos. ¿Qué nos contaría?

Algo como esto:

"Verás, mi creador, me diseño con X capas de Y neuronas. En la capa de entrada recojo H variables que entran en mis neuronas de tal y tal manera. Una vez 'me contó' que esas variables eran los niveles RGB de los píxeles de una imagen pero, si te digo la verdad, a mí eso me da un poco igual. Como puedes ver, en mi capa de salida hay Z neuronas. Mi creador me ha dicho que cada una de esas neuronas, cuando se activa, representa una clase de animal pero, sinceramente, eso tampoco me importa mucho. Y luego me diseño con el algoritmo de procesamiento de cada neurona y capa. Te cuento la forma en que calculo es....

Durante una temporada me estuvo entrenando y me decía, ¿ves esta imagen? Pues es un tal o un cual. Y yo ajustaba mis pesos según la función de error y el optimizador de que estoy constituida, para intentar mejorar y hacerlo cada vez mejor. Y, tras miles de ejemplos, mi creador me dijo que ya estaba preparada, que ya clasificaba muy bien.Y yo le creo porque lo cierto es que ya la función de error daba siempre valores irrisorios.

Asi que, ¿qué he hecho con esos datos que me has puesto como entrada? He supuesto que son una imagen, he extraído sus píxeles y sus valores RBG, se los he 'enchufado' a las neuronas de entrada y he calculado la salida, capa a capa, como te he explicado. ¿Quieres saber los pesos que he aplciado? 'No problem', son estos ¿ves? Ya está. Clarísimo, ¿verdad?"

Y una red que tomase decisiones más delicadas como qué candidato es más adecuado en un proceso de selección, o si se debe condenar o no a una persona, o qué decisión debe tomar el vehículo autónomo que controla, se 'explicaría' de forma parecida.

Y esa explicación. si el algoritmo es mudo, nos la puede dar perfectamente su desarrollador quizá con un pequeña ayuda informática para saber el valor exacto de los pesos y recordar la topología detallada de la red y sus hiperparametros.

Si, la red, como cualquier algoritmo, explica de forma clara e inapelable cómo razona.

No hay magia. No hay voluntades ocultas. No hay misterio. Sólo hay transformaciones lógico-matemáticas matizadas y optimizadas durante el aprendizaje. Y el algoritmo, o el desarrollador en su nombre nos las pueden contar, perfectamente.

Se acabó el problema ¿no?

Pues no, por desgracia no se acabó el problema. El algoritmo, en efecto, se explica, pero seguimos tendiendo un problema,

¿Cuál es el problema? La necesidad de la 'explainable AI'


El problema es que no entendemos al algoritmo. No, mejor dicho aún, el problema es que queremos que nos explique su funcionamiento de otra forma, como a nosotros nos conviene.

El algoritmo, funciona en términos lógico-matemáticos de una forma determinista y perfectamente explicable y conocida. Pero nosotros queremos una explicación que voy a llamar simbólico-lingüística.

¿Qué quiero decir con esto de simbólico-lingüística?

No sabemos realmente cómo funciona nuestro cerebro. No sabemos si su operativa interna se parece a las redes neuronales o no. Pero lo que sí sabemos, por nuestra propia experiencia, es que cuando los seres humanos explicamos nuestra forma de razonar y decidir, y cuando lo plasmamos en nuestras conversaciones, nuestros informes, nuestras leyes y nuestras sentencias no lo hacemos, desde luego, en términos matemáticos, ni siquiera de impulsos eléctricos o transformaciones químicas. Lo hacemos utilizando símbolos o imágenes de la realidad que se expresan habitualmente en forma de lenguaje y con una lógica del estilo de la lógica proposicional.

Y queremos que el algoritmo nos explique sus razonamientos en esos términos simbólico-lingüísticos. Pero el problema es que el algoritmo ha razonado de otra forma completamente distinta.

Cuando el algoritmo trabaja para reconocer imágenes como las de los animales, o los dígitos de la matrícula, o incluso para que nos haga la predicción del tiempo de mañana, nos importa bastante poco cómo razona siempre que acierte. En ese caso sólo nos importa la efectividad y, quizá, la eficiencia. Nada más.

Pero si el algoritmo lo utilizamos para aprobar o rechazar un préstamo, para seleccionar un candidato u otro para una empresa o para un ascenso, o si empleamos el algoritmo o para condenar o no a un acusado, la cosa cambia. Porque son asuntos que nos importan mucho. Y porque son cosas en que no está clara cuál es la solución acertada y si el algoritmo (ni siquiera la persona) acierta o no acierta. 

Así que, en estos casos, no nos conformamos con la efectividad y la eficiencia. 

Y queremos una explicación que entendamos, que nos convenza y que podamos valorar, evaluar y, en su caso, desestimar. Y no queremos números ni matemáticas, queremos lenguaje y lógica proposicional.

Ese es el problema.

Y el reto, el verdadero reto, es averiguar, por un lado, si existe alguna traducción posible entre el razonamiento lógico-matemático del algoritmo y el simbólico-lingüístico de las personas, lo cual no es evidente Y, en caso de que exista, esa traducción, encontrar la forma de conseguirla Y, si no existe, que puede ocurrir, pensarnos muy bien qué hacemos.

En conclusión


Así que, como anunciaba, mantengo mi tesis de que "los algoritmos de inteligencia artificial sí saben explicarse, pero añado un matiz, no como los humanos entendemos y, sobre todo, no como a los humanos nos gustaría".

No hay comentarios:

Publicar un comentario