En este artículo continuamos el experimento de contar un concepto complejo con cinco niveles distintos en función del nivel de madurez intelectual y conocimientos del interlocutor. En esta ocasión, vamos a abordar una conversación, que no una explicación, con un especialista en IA, que equiparamos al nivel 4. Decimos conversación puesto que en este nivel no hay nada que explicar al interlocutor sobre lo que es la IA, ya que se trata de una persona que realmente implementa sistemas de IA en las empresas. En este nivel quien habla principalmente es el especialista y el entrevistador se limita a guiar al entrevistado en aquellos asuntos que quiere tocar.

A fin de acercar este nivel a las personas que no son especialistas en IA (y por lo tanto en principio no tienen este nivel sobre esta materia), este diálogo tiene dos partes una primera más comprensible para el público sobre dónde y cómo insertar la IA en las empresas y una segunda parte en la que el diálogo gira en torno a algunos problemas técnicos concretos que se encuentran en su trabajo, en el que abunda la jerga específica y puede ser un poco descorazonadora. No pasa nada, pues, por dejarse esta última parte sin leer, pues la primera parte ya puede dar una idea suficiente. Para aquellos que si pertenecen a este nivel, espero que este parte, necesariamente breve, porque Crónicas de un ser humano en la era digital, no está en principio dirigido a este público (reducido), les resulte, no obstante, informativa.

(Damián, tiene 30 años y es analista-programador de IA en una startup dedicada a la digitalización de las empresas a través de la IA) [el personaje es ficticio])

Buenos días, Damián

Buenos días – responde rápido con una sonrisa

Tú trabajas en una startup dedicada a introducir la IA en las empresas, especialmente del ámbito industrial. ¿podrías hablarnos un poco de tu trabajo?

Photo by Amanda Dalbjörn on Unsplash

Sí claro. Mi posición actual es la de analista-programador de IA, por lo que estoy en contacto con dos mundos. Como analista mi función es la de traducir los deseos de automatización en los procesos de los clientes, en sistema que hace uso de IA, averiguando en qué tareas esta les puede aportar ventajas respecto a los procesos actuales, sean estos manuales o automatizados, a la manera clásica, sin ningún tipo de inteligencia añadida; como programador, tengo que enfrentarme al reto seleccionar y entrenar adecuadamente a la IA apropiada, que se haya decido conjuntamente con el cliente en el paso anterior.

¿Cuáles son los tipos de tareas en los cuales puede incluirse la IA en las empresas?

Bueno, para el nivel actual de desarrollo de la IA, la respuesta corta, es: “Todas aquellas cosas que necesiten de alrededor de un segundo de reflexión por parte de un ser humano”.

Aunque no siempre es el caso, puede darnos pistas de dónde tiene cabida la IA.

Interesante, ¿puedes ponerme algunos ejemplos?

Naturalmente. Empezando por un detector de spam en el correo electrónico, algo que ya tenemos tan interiorizado que nos olvidamos de que es una pieza de IA que está ahí y por lo que hoy en día, por ejemplo, casi nunca nos llega spam al Gmail; Otro ejemplo podría clasificar una imagen entre 10 categorías distintas, traducir de forma simultánea de un idioma a otro, o la generación automática de subtítulos en tiempo real.

Vale, creo que lo tengo claro el tipo de tareas susceptibles de ser realizadas con una IA. Pero ¿este es el único criterio que usas? Porque a mi se me ocurren otros, por ejemplo, gracias al Deep Learning, que es la forma dominante hoy en día de IA, es posible para éstas hacer cosas igual o mejor que los humanos, sobre cosas que ya hacemos muy bien, como conducir o el diagnóstico médico de una imagen de rayos X. Y también, sobre cosas que no hacemos muy bien, aunque nos pensamos que si sabemos hacer bien, como es recomendar películas o libros a un amigo, pero que las IA hacen mejor en forma de “recomendadores”, al estilo de los que tienen Amazon o Netflix, por ejemplo.

Todo eso que dices es cierto. Esta regla que te he dicho era una primera guía para medir lo que se puede y no puede hacer. Luego hay otra medida más fina que es centrarse en las limitaciones cognitivas de los seres humanos y poner la IA en estos puntos, donde puede compensar nuestras carencias.

¿A qué te refieres exactamente?

Pues básicamente a que el Deep Learning nos puede ayudar en dominios complejos y poco claros, dado que el software convencional ya lo hace hoy en día donde las reglas son simples y están bien definidas. Podemos usar el Deep Learning para sustituir nuestra memoria limitada, para tomar decisiones más rápido donde sea preciso, para reducir nuestra sobrecarga de información o donde necesitemos encontrar significado a toda la información que recibimos. Hay que tener en cuenta, además, que estas características no son mutuamente exclusivas, por lo que podemos encontrar soluciones que satisfagan más de uno de esos problemas.

Entiendo, pero donde la IA en forma de Deep Learning está brillando hoy en día, es en el terreno de las predicciones. ¿Cómo puede utilizarse esto en el rediseño de tareas en una empresa?

Bueno, cualquier tarea puede ser descompuesta en cadenas del tipo: toma de decisión-acción-nueva toma de decisión, etc. Si la tarea es compleja, esta cadena puede ir precedida de una planificación de acciones, que puede ser modificada en tiempo real, a través de las tomas de decisiones según se reciben estímulos del entorno, de acuerdo con la arquitectura conocida como “agente inteligente”.

El éxito en las predicciones de tareas que, hasta hace poco únicamente estaban al alcance los seres humanos, ha obligado a revisar todas las partes en que se compone una toma de decisión, pues hasta ahora no había hecho falta hacerlo, porque sólo los seres humanos estaban en condiciones de hacerlo. Pero esto ya no es así, por primera vez en la historia, la inteligencia, la capacidad de resolver problemas complejos se ha disociado de los seres humanos como única entidad capaz de realizarla, al menos para tareas concretas, todavía no para cualquier tarea en general, que sería lo que se llama inteligencia artificial general.

Photo by Rod Long on Unsplash

Lo que se ha visto, es que, en estos momentos, como mejor funciona la IA es si se coge un problema que tiene un conjunto de reglas grande más o menos explicitadas en un entorno de incertidumbre (el pan nuestro de cada día en las empresas) y se transforma en un problema de predicción, es decir ¿qué haría un ser humano en esta situación?

Por ejemplo, así sucedió con los coches autónomos que pasaron de no recorrer más de 1,5 Km ninguno de los 20 equipos que participaron en la competición del DARPA (Departamento de Defensa de los EE.UU.) sobre coches autónomos, con sistemas de IA basados en reglas, a tratarlos como un problema de predicción, al año siguiente, 5 equipos llegaron a completar más de 200 Km por el desierto de California.

Y si examinamos como se toma una decisión, tenemos primero una entrada de nuestros sensores sobre el estado del entorno y hacemos una predicción en base a ella, posiblemente teniendo en cuenta nuestra historia pasada y quizás un modelo del mundo. En base a esa predicción emitimos un juicio de valor, que resulta en una acción o una secuencia de acciones, que en ese caso se llama una planificación. Realizamos la acción y ello produce un resultado que realimenta el entrenamiento sobre la tarea, de manera que la próxima decisión que tomemos el resultado sea mejor, respecto de la métrica que utilicemos para medirlo.

Pues bien, lo que ocurre es que el Deep Learning ha producido un abaratamiento del coste de la predicción tal, que ya resulta más barato, en ciertos casos, que la predicción humana y de la misma calidad y eso lo cambia todo. Esto es algo que se conoce desde hace mucho tiempo en la economía. Cuando un producto se abarata, por ejemplo, el café, se consume más de ese producto y el precio de los productos alternativos cae también (por ejemplo, el Te), pero el de los productos complementarios sube (el azúcar, la leche), por lo que su consumo crece.

¿Pero esto no producirá una pérdida de puestos de trabajo? Me refiero a un neoludismo.

[nota: en el siglo XIX hubo un movimiento en contra de la tecnificación de las fabricas porque pensaban -con algo de razón- que las máquinas iban a quitar puestos de trabajo a las personas]

Sí, pero es consecuencia de que se aborda mal el proceso. Ya he asistido a varias introducciones fallidas de IA en empresas, por no tener en cuenta esa variable y, aunque no soy yo el encargado en nuestros proyectos de lidiar con esos aspectos, si los he de tener en cuenta en las tareas que propongo que asuma una IA y en los beneficios y/o ahorros que puede producir.

En primer lugar, aunque a veces un puesto de trabajo puede verse completamente suprimido por la introducción de una IA, lo normal es que un puesto de trabajo se componga de varias tareas, no de una sola. Esto es más así, cuanto más elevado sea el valor que añade el trabajador en su puesto, lo que suele estar correlacionado con sus conocimientos y destrezas.

Fíjate que en la disección que he hecho de cómo se toma una decisión y de su paralelismo con la economía, el único elemento que ha encontrado sustitutivo en la IA además de la predicción y, sólo  en determinados contextos, es la acción en sí misma, pero en ningún caso la IA está en condiciones en un futuro próximo, incluso a medio plazo probablemente, de realizar los juicios de valor sustituyendo al trabajador, porque eso implica un “sentido común” (o conocimiento de como funciona el mundo) del que todavía no sabemos como dotar a las IA, lo que va a añadir valor a la contribución humana porque es complementaria de la predicción de la IA, como la leche o el azúcar respecto del café.

De manera que lo que tenemos que hacer es rediseñar la tarea para meter al trabajador en el bucle de trabajo de la IA, produciendo una “humanidad aumentada”, ampliando sus  capacidades cognitivas gracias a la IA y esto ha de elevar extraordinariamente la productividad por trabajador en las empresas, lo que debería compensar las pérdidas de puestos en aquellas tareas en que los seres humanos apenas aportan valor añadido, como son las repetitivas o, aquellas que resultan peligrosas para nuestra salud.

Ya veo, ¿cómo ha cambiado el uso de IA vuestro ciclo de desarrollo de productos/servicios basados en IA?

Photo by Remy Gieling on Unsplash

Bueno, son necesarios equipos multidisciplinares, en los que trabajan un gerente de producto, que conoce lo que los clientes quieren, ya que tiene trato directo con éste. Luego está Ingeniería/IT, donde estoy yo, que somos quienes sabemos lo que es posible construir o desarrollar de forma realista con la IA de hoy. También está la figura del gestor del cambio cultural, que ya te he comentado, que es quien tiene lidiar con los problemas de cambio de paradigma y con las posibles resistencias al proyecto si no se enfoca con la dirección del cliente todo este proceso de la manera correcta, de manera que no sea percibido como una amenaza por los trabajadores.

Esto obliga a cambios en la manera tradicional de trabajar. Por ejemplo ahora es  el gerente del producto el responsable de buscar un conjunto de pruebas (el test set) que son los contextos específicos en los que la IA operará. Por ejemplo, si se trata de un sistema conversacional, un chatbot, para aligerar la carga del equipo de soporte del cliente, se le pide que traiga 20 guiones con el tipo de conversación que exactamente quiere que tenga la IA. No vale con decir, “que hable con el cliente final”.

El equipo también incluye un diseñador de interfaces y experiencia de usuario, que todavía tiene que seguir haciendo todo ese duro trabajo que siempre se ha hecho para encontrar las necesidades humanas: los estudios culturales, las investigaciones contextuales, las entrevistas, las encuestas, la lectura de los ticket de asistencia  a los usuarios, los análisis de logs  y acercarse a la gente para averiguar si estás resolviendo un problema o satisfaciendo una necesidad no establecida que la gente tiene.

Finalmente, el grupo de trabajo lo lidera un jefe de proyecto que suele ser un experto generalista.

¿A qué te refieres por experto generalista?

Bueno es un puesto más senior, ocupado normalmente por alguien que ha sido especialista durante unos 8-10 años en alguna de las posiciones que te he comentado, aunque de manera excepcional puede ser alguien que no es especialista en ninguna de ellas, normalmente porque conoce muy bien el sector del cliente. Esta persona es capaz de hablar con cierto nivel de detalle el lenguaje de cada uno de los miembros del equipo y del cliente, aunque no sepa los detalles más específicos de implementación.

¿Podrías ponerme un ejemplo respecto de tu posición actual? ¿Qué tipo de cosas hablas con él o ella?

Bueno conmigo es ella. Hablamos del tipo de algoritmo que puede necesitar un cliente y me puede cuestionar por qué he elegido uno en detrimento de otro, pero a alto nivel. También podemos hablar sobre el tamaño y características que debe reunir el conjunto de entrenamiento y el conjunto de prueba y me da detalles sobre las condiciones en las que el cliente hará uso de la IA, de su contexto. Por ejemplo, si ha de reconocer el habla, pero el entorno es ruidoso, es importante que las muestras recojan esta realidad lo más fielmente posible.

¿Y, qué cosas son típicamente tuyas?

Nota: aquí la discusión se pone más técnica. Si te pierdes no pasa nada es nivel 4 y va a hablar sobre los detalles específicos de su trabajo. Espero que hasta aquí hayas podido hacerte una idea aproximada de su trabajo desde la perspectiva de negocio.

Pues una vez acordado con el jefe de proyecto el algoritmo u algoritmos a usar, ya que hay veces que se usan técnicas de conjuntos de algoritmos (ensembles), pues yo tengo que lidiar con el ajuste de los parámetros e híper parámetros del algoritmo y con el proceso de entrenamiento, ya que en la mayoría de las ocasiones se trata de un aprendizaje supervisado.

Sucede que muchas veces el número de muestras disponibles es reducido, entre decenas en los peores casos, hasta unos centenares en los mejores casos. Se trata muchas veces de procesos industriales únicos en los que no cuentas con una base de datos de entrenamiento de millones de muestras, como cuando clasificas perros y gatos.

¿Cómo resuelves este problema? ¿mediante generación sintética de muestras?

Photo by Hitesh Choudhary on Unsplash

Bueno esa es una manera, si el dominio es una especialización de algún tipo de dominio sobre el que si existen bases de datos de entrenamiento grandes, aunque sea comprándolas o alquilándolas en la Nube, como, por ejemplo, el reconocimiento de camiones, en las que existe muchas bases de vehículos, pero relativamente pocas tienen camiones y de tenerlos son una minoría de todo el conjunto, entonces uso la técnica de transferencia de aprendizaje. Entreno una base de datos, por ejemplo, de vehículos o si vamos mal de tiempo, la compro y después, cojo la última y a veces la penúltima capa de la red neuronal y vuelvo a entrenar la red sólo estas capas con las muestras (pocas) de mi cliente, hasta que aprende a reconocer bien estas muestras y después verifico que generaliza bien con el conjunto de verificación.

En otros casos, no tengo esa opción porque no hay base de datos ni parecida a lo que pretendo predecir. En ese caso acudo a la generación sintética. Antes lo que hacía era crear una serie de distorsiones en las muestras como submuestreos, giros, traslaciones, cambios de escala, de brillo y contraste, generación de ruido blanco, etc., el problema es que la variedad estadística que conseguías era relativamente estrecha y a veces dan problemas para generalizar a muestras nuevas, que es al final el objetivo.

Ahora estoy empezando a hacer uso de autocodificadores y redes generativas antagónicas (GAN), que proporcionan una variedad casi infinita de muestras diferentes que comparten la distribución estadística original de las muestras proporcionadas por el cliente. La generalización es mucho mejor.

¿Tienes problemas con la velocidad de aprendizaje?

Sí, especialmente cuanto intentamos dar una solución end-to-end, frecuentemente el problema es demasiado complejo para el número de muestras disponible y si el número de capas es grande, tienes por un lado el problema de overfitting aunque  generes muchas muestras de forma sintética con GAN y, sobre todo, tienes el problema de desvanecimiento de los gradientes cuando usas retro propagación (backpropagation). En esas condiciones aplicando la regla de la cadena del cálculo cuando tiene que actualizar los coeficientes de cada capa, las primeras capas apenas se actualizan si los gradientes de las últimas son ya próximos a cero.

En este caso podemos acudir al cliente, para aplicar algún tipo de ingeniería de características, que nos indique que variables son importantes para poder hacer bien la clasificación y entonces cambiamos de una solución DLend-to-end a otra más clásica pero también más asequible, pero entonces hemos de dedicar una parte del presupuesto del tiempo y del tiempo de los expertos de dominio del cliente a afrontar este proceso.

Si a pesar de todo se decide seguir con una solución end-to-end, entonces aplicamos un entrenamiento multi jerárquico en el que pre-entrenamos un nivel cada vez mediante aprendizaje no supervisado, que después ajustamos mediante retropropagación. Otra solución es el uso, cuando sea posible, usamos redes recurrentes del tipo LSTM que no tienen ese problema tan acusado al ser redes altamente no lineales. También puedes tratar de usar funciones de activación distintas como las ReLU, que no sufren tanto de este problema del desvanecimiento de gradientes o probar con Resnet o redes residuales que se saltan conexiones y conectan en algunos puntos de directamente las primeras capas con las últimas, de manera que a través de estas “autopistas”, conectas las primeras capas con las últimas y consigues escapar de este problema.

Una última solución es buscar un mecanismo que no sea la retro propagación, como por ejemplo los algoritmos evolutivos, pero la verdad aún no he tenido tiempo para probar esta solución.

Bueno, veo que todo esto es muy artesano aún.

Realmente así es. No disponemos aún de una teoría sólida que nos permita predecir lo que va a funcionar la experiencia de cada uno es la que dicta qué cosas probar primero, pero uno nunca sabe…bueno yo no me quejo, gracias a ello que tengo un trabajo -sonríe Damián con un guiño.

Bueno Damián, ha sido un placer.

Igualmente.

Posted by santiago

Deja un comentario