lunes, 12 de agosto de 2024

Tres enfoques para la adopción de modelos de machine learning

Afortunadamente, actualmente la construcción de un modelo de machine learning, siempre que no sea muy avanzado, y siempre que se disponga de los datos necesarios, puede ser relativamente sencilla y al alcance de muchas organizaciones.
Aún así, el entrenamiento de un modelo es una parte fundamental para el resultado final y en ocasiones, la empresa que quiere adoptar un modelo puede no disponer de los datos de entrenamiento necesarios, o de la capacidad de computación (aunque esta se puede 'alquilar' en la nube) o, simplemente, no encontrarse seguro de su conocimiento para llevar a cabo la labor.

Para esas diferentes situaciones existen alternativas u opciones básica, que comprimo en tres siguiendo el esquema propuesto en el libro 'Artificial Intelligence with Microsoft Power BI' de Jen Stirrup y Thomas J. Weinandy.


La decisión construir o comprar


Antes, una breve digresión. Como veremos en seguida, dos de los enfoques de adopción implican o bien que la empresa asuma completamente la generación y entrenamiento del modelo, o bien que lo externalice completamente.

Y, en el fondo, esa no es más que otra manifestación de un dilema presente en el mundo del software y de los sistemas informáticos, prácticamente desde que estos existen: ¿Me hago yo el sistema o se lo compro a un tercero? Es decir, ¿construir o comprar?

Tampoco es que sea un dilema propio del mundo del software en absoluto, pero sí es cierto que en otro tipo de productos o soluciones, más del mundo físico, la opción de construir (que significaría fabricar) por parte de una empresa no especializada suele ser poco realista, mientras que en el mundo digital tiende a ser una opción perfectamente planteable.


Modelos a medida


La primera opción para el caso de un modelo de machine learning es el modelo a medida ('custom model'), que vendría a ser la traslación de la opción 'construir' al caso de los modelos de machine learning. 

En este caso la empresa decide construirse su propio modelo usando sus propios datos y entrenando al modelo con ellos.

 Aunque hablamos de 'construir', como se hiciera desde cero, normalmente lo que queremos decir es que se entrena un modelo con datos propios, pero eso no implica, al menos no en general, que la empresa se invente y desarrolle un algoritmo nuevo. Normalmente se apoyará en algoritmos existentes usando herramientas también existentes (librerías python con algoritmos ya disponibles y fácilmente utilizables, o herramientas de más alto nivel como servicios en la nube especializados o soluciones de AutoML). Lo que la empresa hace por sí mismas es la creación de datasets y el entrenamiento, prueba y despliegue del modelo.

En casos extremos, podríamos hablar de una verdadera construcción de un algoritmo desde cero, el diseño de una nuevas lógica o una nueva arquitectura, y no sólo el entrenamiento, pero eso está al alcance de pocas empresas o universidades. Normalmente repito, al hablar de modelos a medidas nos referimos realmente sólo a entrenar con datos propios un algoritmo ya existente.


Modelos pre-entrenados


En el caso de los modelos pre-entrenados ('pretrained model'), vendríamos a situarnos en la opción de 'comprar'. Es decir, la empresa, para una tarea suficientemente transversal, por ejemplo, aspectos básicos de visión artificial o análisis de sentimiento, adquiere un modelo ya entrenado y plenamente funcional.


Transfer-learning


Las anteriores serían las dos opciones extremas pero, como sucede con tantas presuntas dicotomías, suelen existir soluciones intermedias entre los extremos. Y los modelos de machine learning no son una excepción. 

En la fuente citada, como opción intermedia nos habla del 'transfer learning'. En el 'transfer learning' se concentra en un modelo un conocimiento más o menos genérico y transversal, en una fase de pre-entrenamiento, pero luego ese modelo puede ser adaptado ('fine tuning') con un entrenamiento, normalmente mucho más ligero en datos y recursos. De esta forma una empresa puede adquirir uno de esos modelos genéricos y adaptarlo a sus datos y casuísticas.  

Hoy en día, los modelos fundacionales de IA generativa permiten incluso, un cierto nivel de  adaptación al usuario mediante la simple interacción conversacional con el modelo, mediante feedback del usuario o con base a las instrucciones o ejemplos que el propio usuario pueda proporcionar.

Aunque en el libro en que me baso, habla de 'transfer learning' como la vía intermedia, yo tiendo a ver el transfer learning como una técnica general de entrenamiento y compartición de los aprendizajes y, a cambio, creo que las vías intermedias de adopción pueden traducirse en formatos ligeramente diferentes.


Conclusiones


La adopción de modelos de machine learning es relativamente sencilla hoy en día y, a la hora de realizarla, las empresas pueden optar entre construirse desde cero un modelo propio ('construir') o elegir uno ya disponible y pre-entrenado ('comprar'), pero existen también situaciones intermedias que se apoyan en la idea del 'transfer learning'


viernes, 9 de agosto de 2024

Los orígenes de la odometría y la humanidad en la tecnología

Este post es un poco como nostálgico, o de pura curiosidad, pero es que me ha hecho gracia e incluso resultado interesante descubrir lo que a continuación te cuento y que son los orígenes lejanos de la odometría y que, sinceramente, ignoraba. Y ya de paso, puedo extraer algunas conclusiones algo más elevadas.


Odometría


Empecemos por el principio: ¿Qué es eso de la odometría? Si acudimos a la omnipresente wikipedia, obtenemos la siguiente definición


La odometría es el uso de datos de sensores de movimiento para estimar el cambio de la posición con respecto al tiempo


Lo que quiere decir esa definición es lo siguiente: tenemos un objeto que se mueve y que, por tanto recorre una trayectoria y una distancia. La odometría pretende que ese mismo objeto que se mueve pueda, de alguna forma, estimar la distancia y trayectoria recorrida, con base en la medición de su propio movimiento.

Para conocer su propio movimiento, el objeto que se mueve, debe tener sensores de sus partes implicadas en el movimiento. Digámoslo de forma más clara, aunque simplificada: si un coche dese estimar la distancia que recorre, debe tener sensores que le informen del giro de sus ruedas.


Usos de la odometría. Robótica


La odometría puede ser aplicada siempre que exista ese elemento móvil que recorre una trayectoria. Pero el uso típico, y por el que personalmente me he interesado en ella es por su ejemplo en robótica, ligado sobre todo a robots móviles del tipo AMR ('Autonomous Mobile Robots') o es también usada en los vehículos autónomos (una forma especial de robots) o, por qué no, por vehículos más tradicionales.

La odometría se resuelve técnicamente hoy en día normalmente con base a los denominados encoders ópticos ligados a las ruedas del robot o vehículo o usando las también muy comunes IMU ('Inertial Measurement Units') que combinan acelerómetros y giróscopos.


Encoder óptico

Por si tienes curiosidad, aquí te dejo este video de mi proyecto 'The robot notes' en que hablo, precisamente, de odometría.



El problema de la odometría, como se comenta en el propio vídeo, es que genera errores, por lo que normalmente se combina con otra medida basada en referencias externas como balizas o geoposicionamiento. De alguna forma, por ejemplo, la interacción con las balizas nos ayuda a fijar una referencia absoluta y cierta pero, entre baliza y baliza la trayectoria se mide mediante dometría.


Los orígenes: Herón y Leonardo Da Vinci 


Pero los orígenes de la odometría son mucho más modestos, aunque probablemente mucho más ingeniosos y meritorios.

Leyendo el libro 'Cuando fuimos jóvenes' de Martiniano Mallavibarrena, descubro, y esto es lo que ha motivado este post, que el primer odómetro fue concebido por el gran Herón de Alejandría, allá por el año 2 de nuestra era. Este odómetro pretendía medir la distancia recorrida en un camino. 

Odómetro de Herón

Investigo un poquito más en Internet y veo que Herón asumía que los carruajes de la época con ruedas de cuatro pies de diámetro, necesitaban dar cuatrocientas vueltas para recorrer una milla romana. Así que lo que planteó fue un mecanismo que medía cuántas veces esas ruedas habían dado cuatrocientas vueltas que era tanto como decir cuántas millas romanas habían recorrido. Para ello conectó a las ruedas otra rueda dentada de cuatrocientos dientes que, cuando completaba una vuelta permitía que cayera un pequeño guijarro en un recipiente. Finalizado el recorrido, tantos guijarros era equivalente a tantas millas.

Odómetro de Leonardo

Y descubro también que, unos cuantos siglos más tarde Leonardo de Vinci perfeccionó el odómetro de Herón, pero manteniendo la misma idea base y construyó una carretilla para medir distancias que, parece, cada 1,5 metros, un eje daba una vuelta y la rueda vertical avanzaba uno de sus treinta dientes. Con ello cada 45 metros, se movía una la rueda horizontal y permitía que cayera una canica en una caja.


Una mini-reflexión: tecnología, ingenio y humanidad 


Así que, y casi es un juego de palabras, la 'odometría' tiene un largo recorrido.

Y esto me lleva dos pequeñas ideas. Por un lado a la belleza de la ingeniería y al sorprendente ingenio humano que esta disciplina demuestra ya desde sus orígenes, o quizá más que nunca en esos orígenes donde, con tan poca base en que sustentarse. Aunque, no nos engañemos, el ingenio humano sigue muy presente. En su momento, cuando descubrí cómo estaban planteados algunos de los primeros algoritmos de inteligencia artificial generativa, como los autocodificadores variaciones, ya me admiró el ingenio de quienes habían ideado aquello.

Por otro, consecuencia de lo anterior, y como ya he expresado , frente al discurso común y poco reflexionado de quienes, muchos, hacen ver como que la tecnología deshumaniza o como que es algo ajeno a la humanidad, afirmo todo lo contrario: la tecnología y la ingeniería es una de las mayores demostraciones de la grandeza de la mente humana y es, por ello, una de las actividades más humanas que existen.


Conclusiones


El caso concreto de la odometría, que aquí hemos revisado, pone de manifiesto la brillantez del ingenio humano, un ingenio que viene demostrándose desde hace siglos, e incluso milenios, y que continua en la actualidad, haciendo que la tecnología y la ingeniería sean unas disciplinas muy, muy humanas. 

lunes, 5 de agosto de 2024

Sobre el machine learning y las predicciones

Una de las aportaciones comunes de los algoritmos de inteligencia artificial, y particularmente, los de machine learning, es su capacidad de hacer predicciones.

El término predictivo se ha convertido de hecho, no del todo pero casi, en sinónimo de inteligencia artificial o, al menos, indicador del uso de la misma. Así, por ejemplo, si hablando de analítica nos encontramos el término 'predictiva', casi podemos estar seguros de que es una forma de analítica que se basa en algoritmos de machine learning.  


El funcionamiento de los algoritmos de machine learning


En algunas ocasiones, especialmente cuando razonamos acerca de sesgos, es importante, recordar no obstante, cómo operan los algoritmos de machine learning y cómo realizan esas predicciones.

En esencia, la secuencia de actuación vendría a ser la siguiente:


  • Existe un problema del mundo real sobre el que deseamos hacer predicciones, por ejemplo, nuestras ventas.
  • Para ese fenómeno, disponemos de datos de cómo se han comportado en el pasado esas ventas y de muchas variables posibles que las pueden explicar (inversión en marketing, número de vendedores, número de visitas, número de nuevos productos en el porfolio, indicadores macroeconómicos, etc)
  • Seleccionamos un tipo de modelo de machine learning, por ejemplo, una regresión lineal, y las variables o características de entrada y la variable de o variables de salida.
  • Con los datos de ventas y otras variables de contexto del pasado, entrenamos el modelo, que va ajustando sus parámetros en el proceso
  • Una vez entrenado y ajustados esos parámetros, el modelo de machine learning se convierte en un 'modelo del mundo', donde el mundo en este caso son las ventas de nuestra compañía
  • Y ahora que ya hemos modelado 'el mundo', ahora que, de alguna forma, en el modelo hemos capturado la esencia de cómo se comporta ese mundo, cómo se comportan esas ventas, podemos hacer predicciones: ante unas nuevas variables de entrada podemos predecir qué valor de salida cabe esperar.


Así de sencillo.


Una afirmación cierta y falsa a la vez


De forma un poco casual me he vuelto a topar con una afirmación hecha en el excelente libro 'Design Machine Learning Systems' de Chip Huyen. Dice así


ML algorithms don’t predict the future, but encode the past, thus perpetuating the biases in the data and more


Esta afirmación parece recoger, de manera compacta, justo lo que acabo de explicar y, a su vez, advertir de la posibilidad de existencia de sesgos.

La frase parece muy razonable, incluso parece reafirmar lo que acabo de explicar. Debo decir, además, que la autora es una autoridad reconocida en materia de machine learning y que el libro, repito, es excelente y muy, muy recomendable. 

Y, sin embargo, me atrevo a decir que esta afirmación es equívoca y no del todo correcta


Sobre las predicciones


Diría que es incorrecto afirmar que los algoritmos de machine learning no hacen predicciones. Claro que hacen predicciones.

Lo que la autora quiere resaltar, en el fondo, es que esas predicciones se apoyan en unos datos del pasado. Y, efectivamente, así es.

Pero eso no supone que los algoritmos no sean capaces de hacer predicciones. Sí que son capaces. Claro que son capaces. En buena parte los queremos por eso y para eso. El hecho de que se apoyen en un modelo determinado por datos del pasado supone sí, una advertencia sobre algunos aspectos como los sesgos a los cuales me referiré luego o supone, también, una advertencia, y esta no la recoge la afirmación de Huyen, en el sentido de que un modelo no podrá predecir un fenómeno completamente novedoso y disruptivo, simplemente, porque no ha recibido datos sobre ello. 

Pero afirmar que no hacen predicciones es confundir y creo que es falso.

Llamo la atención además sobre el hecho de que no parece que en eso los algoritmos sean tan diferentes de las personas o los seres vivos. Aunque no comprendemos completamente los mecanismos cognitivos y de aprendizaje de los seres vivos, y en especial los humanos, parece que también aprendemos con base a experiencias, unas experiencias que en el fondo siempre son pasadas y que recibimos, o por nuestra propia experiencia directa, o por transmisión de padres u tras figuras similares, o mediante la educación o, probablemente, también, en cierto modo como 'experiencia ancestral de especie codificada en nuestros genes. 

Parece que, de alguna manera,  también los seres vivos, incluyendo los humanos, hacemos predicciones y tomamos decisiones con base en datos del pasado, datos de nuestras experiencias directas o recibidas de manera indirecta por transmisión externamente o por herencia. Y tampoco los seres humanos, por ejemplo, somos capaces de predecir los así llamados 'cisnes negros', precisamente porque son situaciones novedosas de las cuales no teníamos experiencias similares. Y también tenemos nuestros propios sesgos, nuestros sesgos cognitivos.

Por tanto, el que los algoritmos de machine learning abstraigan un modelo con base en datos del pasado, no los descalifica, por decirlo de alguna manera, para hacer predicciones. Y en eso es donde creo que Huyen se equivoca o al menos no elige de manera acertada la frase.


Los cambios de valores


Otra advertencia que hago con cierta frecuencia en cursos o charlas que tienen que ver con la ética de la inteligencia artificial y en que abordo la temática de los sesgos, es que en muchos casos en que 'se acusa' a los algoritmos de estar sesgados en materias como el género, y parece incluso latir una acusación velada a desarrolladores y empresas por ese sesgo, en el fondo no existe, estrictamente hablando un sesgo. Si se analiza correctamente, no existe, como digo, un verdadero sesgo en el algoritmo, que técnica y metodológicamente puede ser perfecto.

Lo que ocurre es que, de manera reciente, han cambiado los valores de la sociedad, y han cambiado los criterios que los usamos para tomar algunas decisiones, precisamente en el campo para el que queremos utilizar un algoritmo. Pero como los datos de que disponemos para entrenar a ese algoritmo son previos a ese cambio de valores sociales, no 'nos gusta', por decirlo de alguna forma, la decisión que nos propone el algoritmo. Y la consideramos sesgada.

Aunque a efectos prácticos podemos percibir eso como un sesgo, desde el punto de vista técnico y metodológico no lo es y, por tanto, la forma de tratarlo y resolver ese resultado que 'no nos gusta'. es también diferente.

Estrictamente hablando, un algoritmo podría no perpetuar esos mal llamados sesgos si realmente hubiera un cambio social que modificase la forma de decidir, y se fuese periódicamente reentrenando el modelo con esos nuevos datos basados en la nueva forma de decisión. 

Así y todo, la advertencia de Huyen es muy relevante si las decisiones que propone un algoritmo entrenado con datos del pasado, se adoptan sin revisión y siempre  se usan algoritmos para decidir, porque entonces, se producirá una especie de círculo vicioso en que el algoritmo decide con base en información del pasado pero sus decisiones pasan a engrosar el acervo de nuevas experiencias, los nuevos datos con los que el algoritmo es re-entrenado, reforzando más y más ese tipo de decisión que consideramos desacertada.


Conclusión


Los algoritmos de machine learning, por supuesto que son capaces de hacer predicciones. 

Para ello se entrenan con datos del pasado y construyen un modelo de funcionamiento que les sirve como base para hacer esas predicciones. 

El hecho de que se usen datos del pasado para el entrenamiento es perfectamente lógico y parece guardar paralelismos con la forma de funcionar de los seres vivos. Y eso no les resta capacidad predictiva, pero sí nos advierte ante la posibilidad de existencia de sesgos, o de perpetuación de valores obsoletos, así como la imposibilidad de predecir acontecimientos completamente novedosos y disruptivos.


lunes, 22 de julio de 2024

Big stream: procesamiento de datos en tiempo real para un mundo de dispositivos y sensores

Cuando hablamos de procesamiento de datos, especialmente de analítica, y de tratamiento de grandes datos, tendemos a pensar, y la verdad es que es bastante razonable, en un almacén de datos, más o menos ordenado, sobre el que lanzamos consultas o algoritmos de machine learning para obtener indicadores, resúmenes, tendencias o predicciones.

Pero no siempre es así. Existen cada vez más casos de uso, y más posibilidades, de explotar y analizar flujos de datos en tiempo real.

Vayamos poco a poco.


Almacenes de datos 


Desde casi los primeros tiempos de la informática han existido los almacenes de datos. Inicialmente eran meros ficheros pero muy pronto la necesidad de tratar datos en abundancia, garantizando su coherencia y escalabilidad llevó a la invención de las bases de datos, y con ellas, los Sistemas de Gestión de Bases de Datos (SGBD), de entre las cuales, las 'reinas' fueron, y en el fondo casi que siguen siendo, las bases de datos relacionales con sus sistemas de gestión de bases de datos relacionales. Sobre esas bases de datos relacionales, se podían ya hacer consultas, informes y análisis.

Sin embargo, a medida que el volumen de datos crecía y la complejidad de los análisis también, hacer analítica sobre la misma base de datos relacional operativa generaba problemas de prestaciones. Por ello, y como explico en mi primer libro 'La carrera digital', surgieron, en primer lugar los ODS ('Operational Data Store'), meras réplicas de una base de datos pero físicamente soportada en ficheros diferenciados.

Y luego, con la misma motivación de prestaciones, pero impulsado también por el interés en mejorar las capacidades analíticas, y de la mano de los conceptos de Business Intelligence y OLAP ('Online Analytical Processing') surgieron los denominados datamarts o datawarehouses, creo que a finales de los años 90.


Big Data y datalakes


Y en eso llegó el Big Data que, en el fondo, y en cuanto a utilidad y resultados, casi aspira a lo mismo que el Business Intelligence pero que surge en un entorno nuevo, donde el volumen de datos, que ya era grande, explota hacia niveles muy superiores y donde, sobre todo, cobran enorme importancia los datos semiestructurados (ficheros XML y JSON, por ejemplo) y no estructurados (texto libre, imágenes, vídeos, etc) y todo esto unido a una exigencia cada vez mayor de disponer de análisis en tiempo real, superando los típicos informes basados en datos del día anterior tan comunes usando datawarehoueses.

Esto da lugar al concepto de Big Data, donde las tres ideas expresadas se recogen en las famosas tres Vs de Doug Laney, Volumen, Variedad y Velocidad, a las que, de una forma algo espuria en mi opinión, luego se le han ido añadiendo otras Vs.

Asociado a Big data tenemos otra forma de repositorio de datos: los famosos datalakes que, en concepto, no son muy diferentes de los datamarts o datawarehouses pero que experiementan ese incremento en volumen y variedad de datos.


Big Stream


Sin embargo, y un poco 'a la chita callando' se va desarrollando un concepto, muy unido al Big data, pero en el fondo bastante diferente: el del 'Big stream', que se centra en el procesamiento de datos pero no unos datos contenidos en un repositorio sino unos datos que van llegando en tiempo real en una suerte de flujos de datos.

Leo acerca de este concepto en 'Internet of things: architectures, protocols and standards' de Simone Cirani, Gianluigi Ferrari, Marco Picone y Luca Veltri donde los autores comparan el concepto de big data con el de big stream y nos dicen:


The main differences between the Big Data  and Big Stream paradigms are the nature of data sources and the real-time/latency requirements of the consumers.


En efecto, hay que diferenciar el origen de datos que, en el caso del Big Data tienden a ser sistemas de información más o menos convencionales, mientras que en el caso del Big Stream con frecuencia, aunque no exclusivamente, hablamos de información procedente de sensores y dispositivos, con frecuencia en estrecha conexión, por tanto, con el mundo físico.

La segunda diferenciación, igualmente relevante, son los requisitos de latencia (es decir, la necesidad de una rápida respuesta) y de funcionamiento en tiempo real, algo que es habitual en la interacción con el mundo físico, especialmente en aplicaciones críticas.

En la misma obra, y poco después, los autores nos amplían esa comparativa diciendo:


In brief, while both Big data and Big Stream systems deal with massive amounts of data, the former focuses on the analysis of data while the latter focuses on the management of flows of data


En efecto, ambas tecnologías, Big Data y Big Stream, tratan con grandes cantidades de datos, pero mientras que en el Big Data más tradicional éstos tienden a estar ya recogidos en algún tipo de almacén de datos (típicamente un datalake), en el caso del Big Stream nos llegan como flujos en tiempo real y el volumen no deriva tanto del tamaño de cada bloque de información sino de la hiper-abundancia y continuidad de esos bloques de información.

No es extraño encontrar una explicación sobre Big Stream en un libro de Internet de las Cosas porque, seguramente, éste sea el campo donde más sentido adquiere para procesar toda la abundantísimo información que generan 'las cosas' que incluyen, por ejemplo, dispositivos y sensores para telemedida. 

Sin embargo, no es éste el único, y así, en el post 'Stream Processing – Tecnologías y Comparativa' Óscar Fernández nos identifica otra serie de usos


  • Monitorización de sistemas, de redes y de aplicaciones
  • Dispositivos Internet of Things (IoT)
  • Sistemas de recomendación y optimización de resultados
  • Transacciones financieras, detección de fraude y trading
  • Seguimiento de usuarios en páginas web y comercio electrónico
  • Notificaciones en dispositivos y aplicaciones móviles en tiempo real


No voy a profundizar aquí, aunque es muy interesante, en los retos técnicos que esto supone y me quedo, de momento, con resaltar este interesante y prometedor concepto de Big Stream


Conclusiones


Aunque menos popular que el Big Data, el Big Stream es una forma de procesamiento de datos que, probablemente, vaya adquiriendo más y más importancia (aunque no sé si relevancia mediática) a medida que se expandan Internet de las Cosas y los sistemas ciber-físicos, y que incorporemos, por tanto, más y más dispositivos y sensores a la 'conversación y, por tanto, a la creación de datos.


jueves, 18 de julio de 2024

Machine Learning en producción: diferencias con la investigación

Leyendo literatura especializada sobre inteligencia artificial y machine learning, incluyendo libros bastante técnicos e incluso orientados a proyectos, a veces llama la atención el poco énfasis que se pone en el paso a producción.

El ignorado paso a producción


En efecto, los libros técnicos tienden a centrarse en las posibilidades, en el desarrollo, en cómo se hace o entrena un modelo, y cómo se traslada eso al lenguaje o herramienta de que se trate, pero no en cómo, una vez desarrollado, entrenado y probado, ese algoritmo, ese componente o ese programa, se despliega, se pone en producción y se utiliza realmente.

Y si en lugar de literatura técnica, hablamos de divulgación generalista, a veces incluso propagandística, para qué hablar. Es posible que muchos autores de esa divulgación ni siquiera sean demasiado conscientes de la necesidad del paso a producción, de sus métodos y sus implicaciones.

No sólo afecta esta carencia a la inteligencia artificial, eso es cierto, sino a todo el mundo del software. Creo que con la única excepción de la literatura referida a cloud y DevOps, la producción del software es un tema bastante ignorado.

Probablemente es que se trate de un tema más especializado, de público más restringido y, seguramente, menos entretenido, variado y brillante que el desarrollo o la investigación. 


Machine learning en producción


Pero si, el software para que sea funcional, disponible y escalable en entornos profesionales y corporativos, hay que llevarlo a producción, y los modelos de machine learning no son una excepción.

En el caso de los modelos de machine learning, además, hay alguna diferencia entre cómo se trabaja en producción a cómo se hace en desarrollo que me parece especialmente interesante tener clara, sobre todo por lo que tiene que ver con el uso d elos datos y la diferenciación entre entrenamiento en inferencia, entre lo que es la construcción del modelo propiamente dicha, y su uso para hacer predicciones.

Hace unos días, finalicé la lectura del libro 'Artificial Intelligence with Microsoft Power BI' de Jen StirrupThomas J. Weinandy y en él me he encontrado una comparativa entre los modelos de machine learning en investigación (no es exactamente desarrollo, pero me resulta bastante válido) y en producción.

Y los autores destacaban cinco diferencias.


Las cinco diferencias del machine learning en producción frente a investigación


En concreto, las cinco diferencias que señalan es la obra, son las siguientes:


  • Requisitos: En investigación normalmente se busca llegar o superar el máximo estado el 'estado del arte', las máximas prestaciones o resultados utilizando para comparación diferentes 'benchmarks'. En aplicaciones reales y en producción, sin embargo, diferentes clientes pueden tener diferentes requisitos, apuntaría que yo que, con frecuencia, requisitos que pueden ser más prácticos y menos exigentes.

  • Prioridad computacional: En la investigación, el foco se pone sobre todo en la fase de entrenamiento y que ésta sea lo más rápida posible para lo que interesa un muy alto rendimiento ('throughput'). En aplicaciones finales y en producción, lo que importa es la inferencia, no el entrenamiento. Y, en ese caso, es mucho más importante una baja latencia que un alto rendimiento.

  • Datos: En el caso de la investigación, los datos usados suelen ser datasets más o menos estáticos. Sin embargo, en producción la situación es completamente dinámica.

  • Equidad ('fairness'): No suele existir foco en este punto en el caso de la investigación, mientras que en producción sí que se debiera considerar.

  • Interpretabilidad ('interpretability'): Igual que en el caso anterior, no suele ser el foco en la investigación, pero en producción debería tenerse en cuenta.


Hay dos cosas sobre las que me gustaría llamar la atención sobre estas diferencias. En primer lugar, respecto al punto de los datos, cómo es en investigación o desarrollo donde realmente se utilizan grandes cantidades de datos y capacidad computacional, pero como luego en producción (inferencia) normalmente no es así, normalmente hay un comparativamente bajo uso de datos y de capacidad computacional (y, por tanto, de energía). Una diferenciación que creo que no es del todo conocida ni entendida y que, entre otros varios puntos, intenté clarificar, hace ya bastante tiempo, en el post 'La equívoca relación de la inteligencia artificial con los datos'.

Igualmente es relevante comentar los dos últimos puntos, la equidad y la interoperabilidad. que tienen un claro componente ético. En estos dos puntos, y sin contradecir en absoluto a los autores, decir que, en mi percepción, no se tienen todavía tanto en cuenta en producción como se debería (aunque hay un creciente interés, espero que sincero en el tema) y que, aunque puedo comprender que en investigación se les preste algo menos de atención, ya deberían formar parte de los estudios, extendiendo, quizá, lo que denominamos 'etica por diseño, a casi algo que podríamos bautizar como 'etica desde la investigación'.

Por último, solo remarcar que, como el lector avezado se habrá dado cuenta, en realidad no he comentado, desde un punto de vista técnico u operativo, cómo es el paso a producción que comentaba al principio y que quizá ese paso a producción habría que confrontarlo más con el desarrollo que con la investigación. Es cierto, y quizá en algún momento deba tratarlo, pero por ahora, por lo menos creo que resulta interesante esta comparativa y pude ser un punto de partida.


Conclusiones


El trabajo con modelos de machine learning en investigación y desarrollo, presenta algunas diferencias importantes con lo que se hace cuando se lleva a casos prácticos y se despliega en producción.

En este post, hemos visto someramente, cinco diferencias entre una situación y otra.



viernes, 12 de julio de 2024

Apalancamiento cognitivo

En algunas ocasiones, y creo que en algunos de mis medios sociales, incluyendo este blog, he comentado cómo el uso de la tecnología supone una de externalización. En este post desarrollaré brevemente otro aspecto, que me suena también haber comentado en alguna ocasión, pero al que quiero volver: el apalancamiento.

La tecnología como externalización  


En efecto, lo que con esto quiero decir es que mediante la tecnología, y mediante la automatización que con ella conseguimos, en cierto sentido externalizamos trabajos o tareas que, de otra forma, realizaríamos nosotros. Y las 'externalizamos' en la tecnología, normalmente porque la tecnología hace esa tarea mejor que nosotros (cuando, por ejemplo, usamos una calculadora o una hoja excel para hacer cálculos, o utilizamos una retro-excavadora para cavar porque tiene mucha más fuerza que nosotros) o, simplemente, porque son tareas que no nos gusta hacer.

Aunque considero que esta idea de externalización es bastante clara, y hasta poco discutible, hasta ahora, me parece, era una expresión que sólo me había oído utilizar a mí mismo. Sin embargo, y eso es lo que me ha animado a escribir este post, me la he encontrado recientemente, exactamente con la misma palabra, externalización, leyendo el libro  'Introduction to digital humanism' y, en concreto, en el capítulo 'The re-enchanted universe of AI: the place for human agency' firmado por Helga Nowotny

En un punto de este capítulo se afirma que:


The historical growth of new human knowledge  can be interpreted as a sequence of major transitions in externalizing knowledge operations, processing an application, storage, dissemination, communication and repurposing of knowledge which in various configurations generate new knowledge.


En un webinar ofrecido recientemente por CitizenD Social & Tech Lab y en el que tuve el placer de participar, comenté durante mi ponencia, y en un una tipología algo improvisada, tres formas básicas que históricamente había adoptado esa externalización:


  • Externalización de tareas que requieren fuerza y destreza, que se ha hecho desde la prehistoria pero que, seguramente, explota con la revolución industrial y que, seguramente, adquiere su máxima expresión precisamente en los entornos industriales aunque realmente permea por toda nuestra actividad incluyendo cosas tan simples como el uso de unos meros alicates

  • Externalización de tareas mentales de cálculo y memoria, que se produce fundamentalmente por la llegada de lo digital y potenciada por la explosión de internet y la nube, con su capacidad para procesar y almacenar información, con mayor capacidad, volumen y exactitud de lo que podemos hacer los humanos

  • Externalización de tareas cognitivas incluyendo la creatividad, debida al auge de la inteligencia artificial en general y de la generativa en particular.


Esta externalización la hacemos, evidentemente, porque en conjunto nos beneficia, aunque, especialmente esta última externalización, la cognitiva y creativa, nos hace dudar y preguntarnos hasta dónde debemos llegar con esa externalización y, sobre todo, cuál es el lugar de las personas en este escenario y cómo podemos mantener y fomentar nuestras capacidades mas valiosas.


Apalancamiento


Sin embargo, en este post voy a aparcar esa cuestión ética y filosófica, que por lo demás me interesa muchísimo, para centrarme en algo más positivo: el apalancamiento.

El apalancamiento ('leverage') hace mención, en el entorno empresarial y de los negocios, al uso de recursos externos para potenciar tu negocio. Dos son los apalancamientos 'clásicos', a saber:


  • Apalancamiento operativo: Una empresa se apoya en recursos operativos de terceros. Por decirlo de una manera mucho más familiar y comprensible: una empresa subcontrata trabajos a otra. Con esto, la empresa principal consigue, por un lado, eventualmente mayores capacidades y menores costes de los que ella puede conseguir por sí misma pero, sobre todo, cuando hablamos de apalancamiento, ser capaz de acometer más trabajos, que de otra forma no podría por no tener recursos suficientes o los recursos adecuados. Es decir, esa subcontratación, potencia el propio negocio de la empresa que subcontrata.

  • Apalancamiento financiero: Uso de recursos financieros externos. Existen muchísimos tipos de mecanismos de financiación pero, simplificando muchísimo y para entendernos, hablaríamos, por ejemplo, de un préstamo. Con ello, la empresa consigue recursos financieros adicionales que le permiten acometer grandes inversiones que, de otra manera, le estarían vedadas. En el ámbito privado suelo poner el ejemplo de los préstamos hipotecarios: muy pocas personas serían capaces de comprarse una casa si no se pudiera disponer de préstamos hipotecarios. Es decir, los ciudadanos nos apalancamos en los bancos para poder acometer proyectos como la compra de una vivienda. De igual manera las empresas se apalancan en todo tipo de recursos financieros para poder acometer proyectos e inversiones de otra manera inviables. Vemos que, de nuevo, el apalancamiento, y de ahí su nombre, apoya y potencia las capacidades y posibilidades de la empresa o individuo.

En ambos casos, por cierto, vemos que el apalancamiento se consigue mediante una externalización de capacidades, operativas o financieras, en otra entidad.

Y lo he comentado sobre todo en ámbito de la empresa porque esos términos de apalancamiento se utilizan en esos contextos profesionales pero, evidentemente, y como se puede ver con el ejemplo de la hipoteca, también los humanos individuales o las familias nos apalancamos operativa y, sobre todo, financieramente.


Tecnología y apalancamiento


Y la tecnología, en el fondo, es una forma de apalancamiento.

Mediante la externalización de tareas en máquinas, conseguimos más fuerza, más velocidad, más exactitud, más capacidad de cálculo, más capacidad de gestionar grandes volúmenes de información, más capacidad, en fin, para hacer todo tipo de cosas, más resultados.

La tecnología nos hace ir a más y progresar. Y eso es buenísimo, y es su objetivo principal.

Eso es el apalancamiento, que nace de la externalización, en este caso en la tecnología.

Eso si, en la medida que nos acostumbramos a externalizar en máquinas las tareas, los humanos nos vamos desentendiendo un poco de ellas o, más bien, dejamos de cultivar nuestra capacidad para acometer esas tareas nosotros mismos, nos vamos, en cierto sentido, en algunos casos literal, atrofiando.


Apalancamiento cognitivo


Y ocurre es que, con las tecnologías que utilizábamos hasta mediado el siglo XX, sobre todo externalizábamos tareas de naturaleza física: externalizábamos, sobre todo, fuerza y habilidad. Y, a lo mejor, no nos importaba demasiado, ser un poco menos fuertes, ser un poco menos hábiles, porque ya no nos ocupábamos de tareas que no requerían de esa fuerza o esa habilidad.

También hay mecanismos compensatorios. Muy particularmente, en lo que tiene que ver con la fuerza, el auge de la práctica deportiva puede actuar como mecanismo equilibrante de eso que hemos externalizado.

Pero, lo que ahora nos ocupa, es que con el auge de lo digital y de la inteligencia artificial, particularmente la generativa, lo que estamos externalizando son capacidades cognitivas, algunas relacionadas con la percepción (visión artificial, reconocimiento de voz), pero otras relacionadas con el razonamiento, la decisión e, incluso, la creatividad. Estamos haciendo un apalancamiento cognitivo.

Como con todos los apalancamientos, obtenemos un retorno en forma de capacidades aumentadas, y eso es fantástico, pero con un riesgo de 'atrofia' de nuestras capacidades cognitivas propias.

Y tenemos que ver si estamos dispuestos a pagar ese precio y, si no, cómo lo compensamos.

A bote pronto, recomiendo lectura, estudio, reflexión, conversaciones, debate y pensamiento crítico.


Conclusiones


El uso de la tecnología supone una forma de externalización de tareas en máquinas. Eso supone un apalancamiento, es decir, una potenciación de nuestras capacidades. Y eso es bueno, muy bueno.

Pero también supone el riesgo de atrofia de las capacidades propias.

Y con el auge de la inteligencia artificial lo que estamos delegando, a cambio de esa potenciación, son capacidades cognitivas.

¿Qué vamos a hacer para que eso no suponga una merma de nuestras propias capacidades?



lunes, 8 de julio de 2024

Elementos del juicio humano e implementación en máquinas inteligentes

Cada vez estamos más acostumbrados a algoritmos y sistemas que automatizan decisiones, que toman decisiones por nosotros.
¿Hasta qué punto pueden las máquinas llegar a emular las capacidades humanas de juicio?

En este post voy a hacer un breve análisis técnico-filosófico de esa cuestión. 


Decisiones y sabiduría práctica


Avanzando con el libro  'Introduction to digital humanism', que ya he citado varias veces en este blog, llego al capítulo 'AI @ Work: Human Empowerment or Disempowerment' escrito por Sabine T. Koeszegi

En él, y citando a su vez el artículo 'Seven Elements of Phronesis: A framework for Understanding Judgment  in Relation to Automated Decision-making' la autora nos refiere al concepto aristotélico de frónesis 

¿En qué consiste esa frónesis y qué tiene que ver con la toma de decisiones?

Bueno, aunque de traducción algo difícil, frónesis, se suele trasladar este concepto a otros como sabiduría práctica o prudencia y viene a ser algo así como entender, ante una decisión concreta, lo que es posible y no posible, unido a la capacidad para juzgar cuál es el mejor curso de acción en un contexto específico.

Es cierto que Aristóteles utiliza este concepto en relación con el juicio de naturaleza moral, pero quizá nos pueda valer como marco más amplio ante cualquier decisión, sea esta realmente moral o, más práctica y ligada también a actividades profesionales.


Los elementos del juicio humano


En relación con este concepto de frónesis y siguiendo las fuentes citadas, se identifican y enumeran siete elementos del juicio humano, a saber:


  • No saber: que intenta, ante situaciones con elementos desconocidos, delimitar de alguna forma el problema intentado contestar a preguntas como dónde empieza y termina el problema, qué está en juego o qué aspectos parecen relevantes.

  • Emociones: aunque se suelen considerar como fenómenos internos y, por tanto, en cierto sentido alejadas de una decisión racional, lo cierto es que las emociones están en contacto con un flujo de percepción sensorial con el exterior (y también de nuestro interior) y nos pueden alertar, al menos en algunos casos, acerca de lo que es o no importante e influir por tanto en la decisión. 

  • Percepción sensorial: una percepción que, por un lado, permite recoger información del mundo y el contexto pero que, como hemos mencionado en el punto anterior, también nos pone en relación con las emociones.

  • Experiencias vividas: es decir, la conexión con lo que ya hemos vivido, nuestras experiencias pasadas

  • Intuición: una especie de conocimiento inconsciente que parece derivar también de las experiencias pasadas y del aprendizaje consiguiente.

  • Ciencia ('episteme'): Concepto este de 'episteme' de procedencia, creo, platónica, y que hace referencia a un conocimiento justificado, sólidamente apoyado en algo, y que podríamos por tanto asimilar a ciencia.

  • Técnica ('techne'): concepto que se contrapone de alguna forma al de 'episteme', en su origen entendido como arte y que se centra más en la aplicación práctica. Una aplicación práctica que se conecta también, por ejemplo, con la experiencia vivida,


Implementación del juicio en máquinas inteligentes


¿Exhiben o pueden exhibir en el futuro las máquinas estos elementos del juicio humano?

En este punto, y aunque las conclusiones no vayan a ser muy diferentes, me permito darme libertad separarme de las fuentes que he citado para dar mi propia opinión.

Antes un aviso de prudencia: lo que puede suceder en un futuro lejano (y por lejano estoy pensando en cualquier cosa a partir de los cinco años, más o menos) en materia de tecnología, y muy especialmente de inteligencia artificial, es casi imposible de predecir y no es nada improbable que asistamos, incluso en plazos inferiores a logros impensables poco antes, ahora mismo.

Dicho esto, ¿Cómo veo la implementación en máquinas de esas capacidades del juicio humano?

Hay algunos elementos que, aunque quizá de manera todavía imperfecta, son claramente implementables en máquinas. Los conocimientos científicos existentes ('episteme') se pueden embeber en las reglas que rigen el comportamiento de una máquina, ya sea de forma selectiva, para un problema concreto, o de manera más generalista, un poco en la línea de como está ocurriendo con los modelos generativos especialmente en el ámbito del lenguaje o incluso como una suerte de bases de datos o bases de conocimiento basadas en técnicas de big data. Aunque hay elementos de evolución y mejora, la viabilidad, incluso la realidad, de esa 'capacidad científica' de las máquinas creo que es incuestionable.

No es muy diferente lo que ocurre con la técnica ('techné'),  aunque es cierto que todavía la aplicación práctica tiende a estar muy guiada por humanos (programación tradicional) o a orientarse ámbitos acotados en lugar de hacerlo de manera generalista.

Igualmente, y aunque seguro que habrá mejoras, tenemos capacidades sensoriales avanzadas por parte de las máquinas, algo que se aprecia especialmente en robótica avanzada pero que se incorpora hoy en día incluso a nuestros tan familiares smartphones. Esas capacidades sensoriales incluso pueden superar en muchos aspectos a las humanas.

La cosa se complica un poco con la experiencia vivida porque en este punto, probablemente las máquinas se encuentren lejos de estar a la altura de las capacidades humanas. No obstante, existe una clara y muy potente semilla: el machine learning. El machine learning, precisamente, se centra en aprender a partir, bien de datos (que no dejarían de ser experiencia vivida por terceros, algo así como 'escarmentar en cabeza ajena') o de experiencia adquirida normalmente mediante sensores y puesta en relación con estados y acciones. A pesar de, como digo, las muy impresionantes capacidades actuales del machine learning, creo éstas se hallan, a pesar de todo, lejos de la capacidad humana para aprender de la experiencia. Es decir, esa capacidad de aprendizaje de la experiencia es viable, se han conseguido ya grandes avances, pero queda mucho campo de mejora.

Se complica aún más la consideración de la intuición, en buena medida porque ni siquiera entendemos del todo cómo funciona la intuición humana. Parece razonable pensar que esa intuición humana, se basa en buena medida, en una aprendizaje de la experiencia, pero un aprendizaje que se produce de manera inconsciente, y un aprendizaje incrementado, seguramente, por una suerte de sentido común o conocimiento de especie que, quién sabe, a lo mejor recibimos de manera hereditaria y que vendría a ser una especie de experiencia vivida como especie. Desconociendo en qué consiste exactamente la intuición, es difícil deducir si es implementable o no. En la medida que se trate de  una suerte de aprendizaje de la experiencia parece, que sería implementable, por lo visto en el punto anterior. Igualmente, parece que, si fuésemos capaces de compilar ese conocimiento humano, ese conocimiento de especie, sería incorporable al conocimiento de una máquina. En este punto de la intuición cabe decir como conclusión que, no es fácil afirmar si será implementable o no, en buena medida porque ni siquiera sabemos del todo en qué consiste. En cualquier caso, hoy en día carecemos de máquinas realmente intuitivas, al menos en el sentido en que familiarmente asignamos a ese término intuición. 

En cuanto al primer elemento del juicio, el 'no saber', resulta un poco extraño ese 'no saber' en el contexto de una decisión de una máquina porque, en el fondo, cuando le pedimos de la forma que sea a una máquina que tome una decisión, ya le estamos delineando claramente el problema. Es como si esto fuese algo que no necesitásemos en las máquinas. A menos, claro, que estemos pensando en máquinas muy avanzadas, digamos en robots humanoides tipo ciencia ficción que, actuando de forma muy similar a los humanos, se encontrasen ante situaciones en que 'ellos mismos' necesitasen delinear la naturaleza del problema. No digo que sea imposible a largo plazo pero, ahora mismo, no creo que exista ninguna implementación que se acerque a eso ni de lejos y, no creo que exista, siguiera, o al menos yo no lo detecto, especial interés ahora mismo en la comunidad científica y técnica por este aspecto.

Muy complejo es el tema de las emociones entre otras cosas porque, de nuevo, y a pesar de existir abundantes teorías psicológicas y neurocientíficas al respecto, es algo que todavía no entendemos realmente. Está claro que ya hoy en día existen soluciones técnicas para detectar emociones en humanos y también para expresar emociones por parte de robots o agentes conversacionales. Cosa muy diferente es que esas máquinas experimenten realmente emociones como un estado interno que esas mismas máquinas sean capaces de reconocer. No es fácil afirmar si esto es posible o imposible, dado que es un fenómeno que ni siquiera entendemos bien en los humanos y dado que, y esto es un problema filosófico de siglos, ni siquiera tenemos acceso a los estados internos de otros humanos, sólo a los nuestros, los de cada individuo. Aunque no me atrevo a decir que no sea implementable a largo plazo, en este momento, creo que estamos lejos de disponer de máquinas que experimenten emociones y ni siquiera está claro ni el interés práctico ni la bondad moral de conseguirlo.


Conclusiones


El juicio humano, ese que nos permite tomar decisiones de todo tipo, parece una capacidad compleja y polifacética. En algunos aspectos las máquinas se pueden acercar (o se acercan de hecho) a asumir algunos de sus componentes, pero existen otros en que no esta claro, a menos a corto plazo, que sea conseguible y, en algún caso, ni siquiera si sería deseable.