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.