Mostrando entradas con la etiqueta Machine Learning. Mostrar todas las entradas
Mostrando entradas con la etiqueta Machine Learning. Mostrar todas las entradas

lunes, 2 de marzo de 2026

¿Qué inteligencia artificial queremos enseñar?

Ante el auge imparable de la inteligencia artificial, ante la riqueza de opciones de adopción y casos de uso disponibles, se produce una enorme demanda de formación en inteligencia artificial. una demanda de la que, por supuesto, no puedo dejar de alegrarme.

Es una reacción lógica de empresas e incluso individuos: si estamos ante una tecnología tan transformadora y tan disponible, debemos, como personas y como empresas, ponernos manos a la obra cuanto antes para conocerle y utilizarla

Existe, incluso, una demanda por parte de regulaciones como la AI Act que habla, aunque de forma algo borrosa, de alfabetización en IA.

Sin embargo, creo que con frecuencia, precisamente porque es una tecnología que todavía se está conociendo, no existe claridad en la demanda de formación, ni por parte de individuos ni de organizaciones, puede que muchas veces ni siquiera por parte de las propias entidades dedicadas a formación: escuelas de negocio, academias, universidades, etc.  

Y lo cierto es que es muy diferente no sólo el currículum a desarrollar, sino incluso el estilo y profundidad de una docencia en inteligencia artificial según el colectivo a que nos dirijamos, su punto de partida y sus expectativas.

Aunque muchas son las posibilidades, veo tres grandes currícula muy comunes, a saber:

  • Inteligencia artificial para usuarios
  • Inteligencia artificial para directivos
  • Inteligencia artificial para desarrolladores 

Pero en realidad, las opciones son muchas y, aunque quizá, se trate de caso algo más particulares, voy a comentar otros dos:

  • Inteligencia artificial para científicos de datos
  • Inteligencia artificial para juristas

No voy a entrar en currícula detallados, pero sí brevemente voy a comentar qué se espera, o debería esperar, de una formación en cada una de estas visiones.


Inteligencia artificial para usuarios


Probablemente sea lo más demandado ahora mismo. Ante el auge de la inteligencia artificial generativa, ante lo sencillo que es utilizarla y ante las inmensas posibilidades que ofrece, una gran demanda cae en este campo: ¿Cómo utilizar la IA generativa en mi día a día?

Fundamentalmente se trata de formación muy práctica, con escasa teoría, en ingeniería de instrucciones ('prompt engineering') adornada con presentar diversas herramientas como, por supuesto, los chatbots generativos (ChatGPT, Gemini, Claude, etc) pero también otras herramientas algo más especializadas para crear presentaciones, videos, música, etc. Y todo ello aderezado con la identificación de muchos casos de uso, unos casos de uso normalmente centrados en el trabajo individual. 

Es una formación en cierto sentido superficial, pero muy útil en el día a día, muy demandada y muy bien recibida en general porque es, a la vez, útil y divertida.


Inteligencia artificial para directivos


Un currículm algo más heterogéneo y más difícil de centrar es la formación en inteligencia artificial para directivos. De nuevo, y como en el caso del colectivo anterior, los directivos, creo que de forma algo equivocada, huyen de la teoría, por lo que, aunque creo que se debe aportar algún fundamento, los contenidos suelen estar orientados a dónde y cómo aplicar la inteligencia artificial en la empresas.

Un peligro actualmente es centrarse sólo en las soluciones generativas cuando, en el ámbito de la empresa, siguen teniendo mucho peso e interés los modelos de machine learning más tradicionales usados en analítica inteligente y modelos predictivos y prescriptivos.

De nuevo, tienen mucho interés los casos de uso pero en este caso, se deben ver con una perspectiva algo más amplia e incluir, no sólo el empleo individual de herramientas generativas sino la aplicación corporativa de la inteligencia artifivial en materia de analítica y automatización.

Aunque no siempre los directivos (salvo que pertenezcan a un área de IT) están interesado en ello, creo que es bueno que conozcan, además, algo de los servicios ofrecidos en la nube, especialmente por hiper-escaladores y, en general el mercado de soluciones existentes.

A eso, añadir elementos importantes de gestión del dato, de gobernanza, de ética, de legislación y 'compliance'.


Inteligencia artificial para desarrolladores


Un perfil completamente diferente es el de los desarrolladores: personas técnicas que van a construir, 'con sus manos', soluciones de inteligencia artificial.

En este caso creo que precisan de algo más de teoría en cuanto a algoritmia y arquitectura. Por supuesto, es inexcusable el conocimiento de python (aunque puede ser interesante alguno otro lenguaje como R) y de las librerías que se utilizan en el ámbito del machine learning tradicional y para el uso de modelos generativos. 

Deberían conocer también las plataformas en la nube y alguna comunidad, muy especialmente Hugging Face.

Probablemente también sea conveniente formación en gobierno del datos y en las pruebas y evaluación de modelos.

Y, quizá, se debería comenzar a comentar elementos de 'vibe coding' o desarrollo software asistidopor inteligencia artificial.


*****

Creo que, aunque de una forma simplificada, estos son los tres grandes perfiles, pero, por supuesto, la formación se puede y debe adaptar a diferentes colectivos, diferentes expectativas y diferentes puntos de partida. Y, un poco en esa línea, voy a comentar otros dos perfiles posibles.

*****


Inteligencia artificial para científicos de datos


Se trata de un perfil parecido al de desarrollador, pero, en aquellas empresas que distinguen entre los ingenieros de datos (más próximos a la pelea con los datos y al desarrollo) y los científicos de datos, más próximos a los modelos propiamente dichos y al negocio, la formación de este colectivo, puede diferir ligeramente.

Por ejemplo, puede poner más énfasis el conocimiento de los diferentes modelos y algoritmos de machine learning y cuándo aplicarlos así como todo lo relativo a la evaluación de los modelos. Deben ponerse énfasis también en aquella parte de las plataformas orientadas a la selección de modelos con especial interés en que conozcan los posibilidades de Auto ML.

Quizá, en este colectivo, pueda ser interesante también poner algo más de foco en los aspectos de responsabilidad y ética, y alguna pincelada de 'compliance'.

Adicionalmente, y aunque adaptado a cada caso, dado que los científicos de datos se orientan a las necesidades del negocio, puede ser bueno una formación específica en vocabulario, aspectos sectoriales y particularidades del sector o área funcional a que se dirigen sus modelos. Por ejemplo, podría ser relevante la formación en marketing digital.


Inteligencia artificial para juristas


Un colectivo muy interesado en la inteligencia artificial es el de los juristas. En este caso, podrían recibir una formación similar a la de directivos cuando lo que buscan es la aplicación en su bufette o empresa, pero cuando los distingo como colectivo es pensando en una formación orientada a aplicar las regulaciones sobre IA o a orientar a sus clientes en los mecanismos de protección y 'compliance'.

En este aspecto, por supuesto, deberían recibir formación, si no la tienen ya, en las regulaciones existentes, notoriamente en Europa en RGPD y AI Act.

Pero sería muy conveniente una formación algo más teórica sobre fundamentos de inteligencia artificial, sobre cómo funcionan y manejan los datos los algoritmos tanto de machine learning tradicional como lo s generativos.

Igualmente, deberían recibir formación en gobernanza de datos y de sistemas de inteligencia artificial y en normativa como el estándar ISO 42001.


Muchas otras opciones


No se acaban aquí, las opciones, pudieran existir formaciones mixtas o dedicadas a aspectos particulares como la ciberseguridad, pero creo que lo dibujado más arriba traza un poco las opciones existentes y, sobre todo, destaca, que es lo que en el fondo pretendía con el post, que no es realista ni practico hablar de formación o alfabetización en inteligencia artificial sin más, sino que debemos saber de dónde partimos, a que colectivo nos dirigimos y que necesitamos realmente que sepan de la inteligencia artificial.


Conclusiones


Es muy necesario hoy en día formarnos, individualmente y como organizaciones en inteligencia artificial, pero a la hora de realizar una demanda de formación, conviene 'centrar el tiro' y saber qué pretendemos realmente.


jueves, 8 de enero de 2026

Tres formas de equidad algorítmica

Una de las problemáticas éticas más conocidas y de las que más se habla alrededor de la inteligencia artificial es la de los sesgos algorítmicos.

En este post, que pretende ser muy breve, voy a consignar una clasificación de estos sesgos. Bueno, estrictamente hablando, no de los sesgos, sino de la equidad o de problemáticas de equidad.

Antes, algún recordatorio y  aclaración. 


Del error a la ética: sesgo y equidad


Un sesgo, dicho en general y de forma simplificada, es una desviación consistente del valor correcto. Últimamente, hablamos de sesgos a propósito de los algoritmos de inteligencia artificial, pero en realidad, la temática de sesgos ocupa las matemáticas y sobre todo la ingeniería desde hace muchos años.

Así, por ejemplo, los sesgos son importantes cuando estamos hablando de instrumentación y equipos de medición. Y este ámbito nos permite de forma muy simplificada ilustrar qué entendemos por un error consistente. 

Vamos a imaginar el caso de una báscula, una báscula casera para pesarnos. Hablamos de un error cuando esa bascula da un valor incorrecto de nuestro peso (ya sea más o menos). Y hablamos de consistente para querer decir que siempre se produce en el mismo sentido (y en muchos casos diríamos que en la misma magnitud). Así, por ejemplo, una báscula que comete errores aleatorios (algo raro, la verdad)  produce valores incorrectos pero no tiene sesgo. Sin embargo, si siempre nos añade medio Kg de más, entonces está siendo consistente: siempre añade ese medio kilo. Y eso es, precisamente, un sesgo: un error consistente.

Para eliminar este tipo de errores en instrumentación se suele recurrir a lo que se denomina la 'calibración', que en el caso sencillo de la báscula se reduce a ajustar el cero, eliminando en este caso sencillo el error y el sesgo.

En este sentido, y con esta visión ingenieril del sesgo, suelo decir en mis clases que un sesgo es un error siempre. Sin embargo, ese error técnico u operativo, no siempre es un problema ético. Se convierte en problema ético cuando ese sesgo nos hace tratar de manera diferente (lo que denominamos discriminar) a personas o colectivos, entendiendo que ese tratamiento diferencial es injusto y que perjudica a esas personas y colectivos.


Tres formas de equidad


En general no distinguimos, al menos yo no me lo he encontrado a menudo, una distinción entre tipos de equidades. Sin embargo, de manera algo inesperada, inesperada porque la fuente es un libro fundamentalmente técnico, me he encontrado en 'Azure AI Services at Scale for Cloud, Mobile, and Edge' de  Simon Bisson, Mary Branscombe, Chris Hoder y Anand Raman, una identificación y descripción breve de tres formas de equidad.

Antes de mencionarlas, avisar, dadas las dificultades terminológicas en traducción, que lo que aquí estoy denominando 'equidad' se corresponde con la palabra 'fairness' en el libro.

Advertido esto, veamos ya esas tres formas o variantes de equidad. Son las siguientes:


  • Equidad de calidad de servicio ('quality of service fairness') que tiene que ver con que los resultados sean igual de correctos para todos los colectivos. Así, se mencionan las aplicaciones de reconocimiento facial que, por problemas de muestreo para el entrenamiento, tienden a dar peores resultados en personas de color y aún peor en mujeres de color.

  • Equidad de asignación ('allocation fairness') que habla de que el algoritmo ofrezca las mismas oportunidades y recursos a todas las personas y colectivos, por ejemplo, tratar a todas las personas igual en una aplicación de filtrado de currícula en un procesos de selección. . Esta es, me parece, el tipo de equidad en la que solemos pensar.

  • Aunque de manera menos nítida también nos habla de una equidad de representación, que busca que los colectivos estén justamente representados en profesiones, situaciones, etc (por ejemplo, cuando pensamos en quién puede ser CEO).
No me parece que esta propuesta sea una clasificación muy trabajada, ni me consta que se corresponda con una clasificación de la equidad más ampliamente admitida, pero me ha parecido interesante y no quería dejar de mencionarla.


Conclusiones


Simplemente, recordar que un sesgo es un error técnico u operativo y que se convierte en un problema ético cuando ese error conduce a tratar de manera diferente, discriminar y perjudicar, a personas o colectivos concretos. Y, dentro de esto, hemos revisado, muy brevemente, tres variantes.


miércoles, 1 de octubre de 2025

Machine learning y la fantasía de una política científica

En este post, más de opinión que de exposición, voy a desarrollar lo que es  a la vez un convencimiento y creo que, por desgracia, una fantasía: el uso inteligente y científico de modelos de machine learning en la administración pública.


La naturaleza de la política: la administración


Hace un par de semanas publicaba en mi podcast 'Divergencias' un episodio que titulaba "Management y política" y que tiene mucho que ver con lo que ahora desarrollo de manera más enfocada en este post.



Una de las cosas que allí apunto es la que creo las dos dinámicas dominantes de la política.

La primera dinámica, la que resulta mucho más visible y que en realidad es mucho más superficial y menos valiosa, es la que tiene que ver de alguna forma con la comunicación política. Se trata de todas las acciones que realizan líderes y partidos para exponer sus posiciones, para criticar las del contrario y, en definitiva, para intentar ser relevantes y ganarse la voluntad y en último término el voto de los ciudadanos. Declaraciones, apariciones en medios, mítines, manifestaciones, etc forman parte de esta faceta de la política.

La segunda dinámica, la realmente importante, y mucho menos visible por desgracia, es la administración y la gestión, es la que tiene lugar cuando se ejerce el gobierno, cuando se está al frente de un gobierno central, de un ministerio, de una comunidad autónoma, de una consejería, de un ayuntamiento, etc.

Podría decirse que hay una tercera dinámica, que es la legislativa, pero en esa no voy a profundizar y la asimilaré, aunque de forma bastante simplificada y quizá burda, a la segunda.

En cualquier caso, y aunque la administración pública tiene algunas particularidades, cuando entramos en gestión (en 'management' como decía en mi podcast) entran en juego cuestiones como presupuestos, equipos, plazos, resultados, retornos, etc. Y pasan a ser importantes, o deberían pasar a  ser importantes, la eficacia (conseguir objetivos) y la eficiencia (optimizando el uso de recursos que para ello se emplean).

En mi podcast apostaba por que, en esa labor de gestión, se adoptasen los enfoques que son comunes en las empresas. Reconociendo, como decía antes, que la administración pública tiene elementos diferenciales y que, por ejemplo, los retornos que se esperan para una inversión con frecuencia no son económicos, creo que la mayor parte de las herramientas y técnicas de gestión empresarial pueden y deberían aplicarse en el ámbito público.


Gestión científica


Y esta gestión empresarial me lleva a lo que, quizá de una forma algo grandilocuente y no del todo exacta, estoy denominando una gestión científica.

Lo que quiero decir con ello es la aplicación de metodologías, técnicas e incluso tecnologías que hacen que la gestión se base en hechos y datos, que mida resultados, que monitorice progresos y que apoye las decisiones en esos datos, en estudios o modelos contrastados, y no en la mera intuición o la voluntad 'política'.

Que sea, en definitiva, una gestión objetiva, fundamentada, eficaz y eficiente... y mucho menos (cuanto menos mejor) 'ideológica'.


Técnicas, metodologías y tecnologías


En esa gestión científica, existen muchas técnicas. Así, por ejemplo, está ampliamente definido, usado y documentado el uso de técnicas para valoración de proyectos de inversión y para el filtrado, selección y priorización de proyectos.

Existe también, por ejemplo, una disciplina bien desarrollada para la dirección de proyectos de cualquier naturaleza y que incluye, aparte del control de plazos y presupuestos, aspectos relevantes como la gestión de riesgos.

Y existe una disciplina bien desarrollada de análisis y optimización de procesos de negocio y una amplísima oferta de tecnologías de digitalización y automatización para disponer de una administración muchísimo más moderna y, de nuevo, más eficaz y eficiente.


Modelos


Entre las herramientas para una gestión científica se encuentran los modelos, de los que próximamente también hablaré en mi podcast 'Divergencias'

Los modelos son abstracciones de la realidad, unas abstracciones que, por fuerza, acaban siendo simplificaciones, pero que ayudan a explicar esa realidad y, sobre todo, a hacer predicciones razonables sobre la misma.

A algunos de estos modelos, sobre todo físicos o químicos, se ha llegado por experimentación, reflexión y, en ocasiones, deducción matemática. Un ejemplo que muchos habremos estudiado en la época escolar son los sucesivos modelos del átomo que se generaron desde la época de los griegos hasta todavía la época actual en que se siguen descubriendo o deduciendo nuevas partículas subatómicas. O los modelos que explican y dan forma matemática a la gravedad y que comienza por Newton y se revisan por parte de la teoría relativista. O, en la misma línea de la física, los modelos del universo.

En muchos campos, un modelo acaba teniendo unas variables de entrada y unas variables de salida y lo que, de alguna forma ofrece el modelo, es la relación entre esas variables de entrada y las de salida. Y una vez el modelo se encuentra bien desarrollado y probado, es capaz de hacer predicciones y decir, con razonable seguridad y exactitud qué valores de salida tendremos antes unas entradas concretas.


Econometría


En el campo de la economía, uno de los ámbitos fundamentales de trabajo de la política en su vertiente de gestión existe, de hecho, y desde hace muchos años, la disciplina de la econometría que crea modelos matemáticos y estadísticos para fenómenos económicos.

Y una disciplina que, lógicamente, en los últimos años ha incorporado los modelos de 'machine learning'.

Y con base en esos modelos econométricos, se analizan fenómenos que tiene que ver con precios, inflación y cosas así.


El uso de machine learning: modelos y gestión


Y es que, en efecto, los modelos dominantes hoy en día en muchísimas disciplinas son los modelos procedentes del campo del machine learning.

Estos modelos aportan algunas grandes ventajas.

Así, por ejemplo, son modelos que permiten tratar fenómenos y obtener capacidad predictiva para fenómenos que no comprendemos completamente. A diferencia de los modelos físicos o químicos tradicionales, que suponían un razonable entendimiento del fenómeno y unas hipótesis sobre el 'funcionamiento del mundo', los modelos de machine learning no ponen como condición entender el fenómeno, sólo conocer las variables de entrada y salida relevantes... y el convencimiento de que existe correlación (y quizá causalidad) entre ellas.

Otra ventaja es que se apoyan en datos (muchos datos en realidad) y eso, aunque con la dificultad de obtener y limpiar los datos, y con los riesgos de sesgos, aporta objetividad.

Finalmente, añadiría que, dado el gran progreso tecnológico, dada la gran capacidad de computación disponible, y dado el potente ecosistema de herramientas, cada vez son más sencillos de crear y utilizar, y se encuentran al alcance de cualquier organización, y no digo ya modelos generalistas (como el modelo del átomo) sino modelos específicos, para temas específicos y en organizaciones específicas.


El debate frente a la ciencia


Y si ahora retornamos de nuevo a la política en su faceta de gestión, veo un campo tan potente y tan fructífero si se aplicasen estos modelos a la gestión...

¿Por qué no generamos modelos para los fenómenos más importantes y decidimos con base en datos en lugar de elegir opciones con base en posicionamiento ideológicos, en 'relatos', en conveniencias, en prejuicios o en intuiciones?

Por ejemplo, hace poco se ha subido el salario mínimo en España. Y surgió el debate de si eso impacta o no en el empleo. ¿Qué tal, si en lugar de 'discutirlo', intentamos hacer un modelo que lo muestre, casi que lo demuestre en el sentido que sea?

Respecto al tema de impuestos, otro tema 'calentito': ¿Subirlos o bajarlos? ¿Qué tal si, en lugar de 'tirarnos los trastos' y encendernos en debates, modelamos el efecto de los impuestos en temas como la recaudación del estado, el impacto en el consumo o incluso el PIB?

Y no todo tiene que ser económico. ¿Por qué no modelamos, por ejemplo, si el endurecimiento de las penas para un delito, influye o no en que se cometa menos ese delito? O ¿por qué no estudiamos si, por ejemplo, los impactos publicitarios advirtiendo de los peligros del tabaco contribuyen o no a que disminuya su consumo (aviso que sobre este último punto hace poco leí un libro que venía a decir que era contraproducente avisar mucho de los peligros del tabaco)? 

También se trabaja y es un gran campo en temas como salud pública y epidemiología, o en la predicción de terremotos.

Y así podríamos seguir con todos los fenómenos más o menos complejos que normalmente se discuten y gestionan desde la mera ideología, no desde los datos y la ciencia.

Para ser rigurosos, hay que avisar que no todo es modelable. Puede haber fenómenos para los que no tengamos, por ejemplo, datos suficientes, o con la calidad suficiente,  o acceso a los mismos. A lo mejor, para algunos de los casos que he puesto como ejemplo no somos capaces de hacer un modelo. Y a lo mejor hay fenómenos en que todavía 'estamos tan verdes' en su comprensión, que primero hay que estudiar cuáles son las variables relevantes.

Pero creo que se entiende la idea y, sobre todo, más allá de casos concretos, como práctica generalizada, creo que el uso de modelos, especialmente de modelos de machine learning (sin excluir otras técnicas y disciplinas que citaba al principio) daría un enorme giro en la gestión de lo público, un giro hacia la objetividad, la eficacia y la eficiencia... y de paso, mucha menos polarización.

Y eso nos llevaría a una política, con mucha menos ideología, mucho menos debate estéril y sin fundamento, y a cambio a una gestión de los asuntos públicos mucho más rigurosa y voy a decir que más científica.


El deseo y la fantasía


Y esa es mi propuesta y mi deseo, casi mi carta a los Reyes Magos.

No tengo ninguna queja respecto a cómo se han comportado los Reyes Magos conmigo a lo largo de los años...pero en esta ocasión, creo que este deseo  me lo van a traer ni este año, ni el que viene, ni el siguiente...y puede que nunca.

No tengo datos, pero estoy convencido de que están desarrollados o en análisis muchos modelos del tipo de los que he propuesto. No tengo dudas de que en el ámbito científico y universitario se ha trabajado, se trabaja y se trabajará en este tipo de modelos. Seguro que hay muchos publicados.

Y seguro que en el ámbito privado se están implantando e implantarán muchos modelos, aunque seguramente dedicados a temas más de negocio como predicciones de ventas, de necesidades de materiales, de análisis de acciones de marketing y atribución de ventas o mantenimiento predictivo.

Lo que no veo es su uso generalizado en la administración, aunque no excluyo 'pilotitos', demostradores o pequeñas experiencias.

Lo que, por desgracia, no confío en ver, es su uso generalizado y, sobre todo, el paso de una gestión como la actual, que creo más basada en ideología, discursos, conveniencias, intuiciones y prejuicios, a una gestión objetiva,  basada en datos (y modelos), rigurosa y 'científica'.

Para conseguirlo, se precisaría un profundo cambio cultural y, además, una voluntad, unos conocimientos y unas competencias de las que creo que carecen, de forma muy generalizada, los líderes políticos y gestores públicos actuales.

Así que, ojalá me equivoque, pero esa política científica es, creo, sólo un deseo y una fantasía.


Conclusiones


En el acervo de metodologías, técnicas y tecnologías actuales, existen muchas que serían aplicables en la gestión de los asuntos públicos, en lo que considero la faceta más importante del ejercicio político.

Dentro de las tecnologías, es particularmente prometedor el uso de modelos de machine learning para modelar fenómenos complejos sobre los que luego hay que tomar decisiones de gestión.

Sin embargo, personalmente, veo esa gestión rigurosa, científica y apoyada en datos y modelos, tremendamente deseable, pero siendo prácticos, sólo como un deseo y una fantasía.


miércoles, 27 de agosto de 2025

Seis principios para la operación del Machine Learning y los grandes modelos de lenguaje

En general, cuando hablamos de inteligencia artificial tendemos a fijarnos, y en el fondo es normal, en su rápido avance y en todo lo que es capaz de hacer y en las soluciones que puede ofrecer.

Y digo que es normal porque, en el fondo, eso, lo que aporta al negocio o a nuestra actividad, es lo más atractivo, los más transformador, lo más diferencial de la inteligencia artificial, como pasa con cualquier otra tecnología.

Sin embargo, en la vida real, y para que cualquier tecnología, cualquier sistema en el caso del software, y cualquier solución basada en inteligencia artificial puedan proporcionar de manera escalable y fiable esas capacidades, es preciso aplicar criterios y técnicas profesionales de desarrollo y de operación de sistemas.


La ingeniería de software y la operación de servicios


La combinación de los mecanismos tradicionales de la ingeniería de software con los principios agile y el apoyo de soluciones basadas en la nube y arquitecturas cloud nativa da lugar al enfoque DevOps predominante hoy en día Cuando eso se adapta al caso específico de soluciones basadas en machine learning, llegamos al MLOps y, en el caso específico de las soluciones basadas en grandes modelos de lenguaje (LLM, 'Large Language Models') llegamos al LLMOps

En realidad, los pasos de la ingeniería de software y operación de servicios tradicional al DevOps, de éste al MLOps y de éste, a su vez, al LLMOps, son evoluciones y adaptaciones, algunas muy importantes ciertamente, de unas ideas, que en lo más fundamental, se conocen y aplican desde hace muchos años en ingeniería software y operación de servicios.


Los seis principios para la operación del machine learning


Podríamos decir que, en el fondo, existe una filosofía o una serie de principios subyacentes a toda esta gestión y operación de sistemas y servicios.

Precisamente, en el libro 'LLM Engineer's handbook' de Paul Lusztin y Maxime Labonne, dedicado en gran medida a esta ingeniería del software en el caso de LLMs, dedican un apéndice final a identificar seis principios para la operación de los sistemas de machine learning aunque, en el fondo, no están hablando tanto de machine learning en general, como de soluciones basadas en LLMs.

Los seis principios que identifican estos autores, son los siguientes:

  • Automatización y operativización
  • Versionado
  • Experimentos y seguimiento de experimentos
  • Pruebas
  • Monitorización
  • Reproducibilidad

Vamos a repasarlos, brevemente.


Principio 1: Automatización y operativización


La ingeniería de software no deja de ser un proceso productivo, un proceso que, como tal, se ha intentado automatizar aunque es cierto que, sólo hace pocos años se ha conseguido una automatización real, una automatización de momento más centrada en el despliegue y la operación, especialmente con la llegada, no sólo de la filosofía DevOps sino con soluciones para automatizar pruebas y 'pipelines' de despliegue. Una automatización que, sin embargo, y por mor, precisamente, de los grandes modelos de lenguaje, apunta a que se va a poder automatizar también en buena medida en lo relativo a desarrollo.

Los autores mencionados nos hablan de una suerte de tres etapas en automatización. La primera sería esencialmente manual.

En la segunda se introduce el entrenamiento continuo (CT, 'Continuous Training') que se lanza cada vez que es necesario re-entrenar un modelo y donde se automatizan, aparte del entrenamiento propiamente dicho, los pasos de validación de datos y del modelo. En este caso se recurre a herramientas de orquestación de las que los autores citan como ejemplo ZenML. A modo meramente ilustrativo, abajo se puede ver un esquema de las pipelines de ZenML


Pipelines ZenML

En la última fase, sugieren la introducción de los principios de la entrega y despliegue continuos (CI/CD, 'Continuous Integration' / 'Continuous Deployment') tan característicos de DevOps y donde se incluye también la construcción, prueba y despliegue.


Principio 2: Versionado


La creación y control de versiones cae dentro de la muy tradicional actividad de la ingeniería de software tradicional conocida como control de configuración. En esa actividad se gestiona la gestión del software que aporta cada desarrollador, las versiones de componentes, la integración de componentes en versiones o 'releases' consistentes y la construcción ('building') del software de las esas 'releases'.

Para el caso de las soluciones de machine learning o basadas en LLMs, los autores nos sugieren centrarnos en las versiones tanto del código (que es lo que se hace, digamos, 'desde siempre') como de modelos y de datos.

Para la gestión de versiones del código se pueden usar las habituales herramientas de control de configuración, estando muy presente hoy día Git, directamente o a través de hostings como GitHub. Y el control de versiones del modelo no es muy diferente y se apoya en registro de modelos ('model registry').

Sin embargo, para el caso de control de versiones de datos, los autores apuntan la dificultad derivada de la existencia de diferentes tipos de datos. No obstante, existen soluciones de entre las cuales los autores mencionan Comet ML, Weights & Biases y, de nuevo, ZenML.


Principio 3: Experimentos y seguimiento de experimentos


El entrenamiento de modelos es un proceso iterativo y, en buena medida, experimental. En ese proceso experimental se realizan, claro, experimentos, unos experimentos que con frecuencia se llevan a cabo en paralelo y, una vez vistos los resultados, se decide el modelo que realmente 'se da por bueno' y que se traslada a producción

De estos experimentos, también conviene realizar una gestión, un trazado ('tracking')  de los que también conviene realizar un seguimiento y gestión mediante herramientas que permiten el registro de 'logs', la representación visual de las predicciones de los modelos, la comparativa de métricas y la selección final el mejor modelo.

Como apoyo a esta actividad loas autores mencionan herramientas como Comet ML, Weights & Biases, MLFlow y Neptune.


Principio 4: Pruebas


Las pruebas, y su automatización, es uno de los focos desde siempre de la ingeniería de software y de las soluciones de operación de servicios.

Los autores nos recuerdan los diferentes niveles de pruebas (unitarias, integración, sistema, aceptación) y algunas variantes concretas como las pruebas de regresión o las de stress. En ese sentido, 'nada nuevo bajo el sol', es de lo que se habla en ingeniería de software desde hace años y años.

Sin embargo, sí que nos aportan alguna idea original o específica del caso del machine learning, cuando explican la prueba de modelos, donde se añade la dificultad de que los modelos no son deterministas al, contrario de lo que sucede en muchas otras formas de software. Además, los modelos pueden no reportar ningún error y, sin embargo, no estar funcionando adecuadamente y esos malos comportamientos sólo se pueden observar en evaluaciones.

Los autores mencionan algunas técnicas específicas para la prueba de modelos, como

  • Probar la 'forma' de los tensores de entrada y salida del modelo
  • Probar que la pérdida o error ('loss') realmente decrece, como es lo que cabe esperar después de un lote ('bacth') de entrenamiento
  • Probar que el 'pipeline' de entrenamiento funciona tanto con CPUs como con GPUs.
  • etc

Todas las pruebas se realizan en la fase de integración continua (CI, 'Continous Integration').

También nos hablan de la prueba de comportamiento ('behavioral testing') en que se considera al modelo una caja negra y se comprueban sólo entradas y salidas. 


Principio 5: Monitorización


La monitorización es, desde siempre, una actividad fundamental de la operación de sistemas y, en el caso de machine learning no iba a ser menos. En la monitorización se observa, por ejemplo, que los sistemas están disponibles, que los tiempos de respuesta son adecuados, que no está recibiendo ciberataques, que no se producen errores, etc

Los sistemas de información tradicionales, una vez que están probados, depurados y estabilizados, tienden a no producir errores salvo ataques, averías o sobrecargas. Y eso es así porque se trata de sistemas deterministas con sus condicionas y casos de uso bien definidos.

Sin embargo, en el caso de los sistemas basados en modelos de machine learning esto no es así, porque su entorno y los casos de uso no se suelen encontrar completamente cerrados, porque su comportamiento con frecuencia no es determinista y porque el entorno varía. Eso puede llevar, por ejemplo, a que un modelo que funciona inicialmente muy bien, poco a poco vaya degradando sus resultados, sus predicciones y sea necesario un re-entrenamiento.

De cara a la monitorización los sistemas deben producir registros en forma de 'logs' que permitan el análisis, y se deben definir también una serie de métricas, tanto a nivel de sistema (métricas tradicionales) como de modelo (métricas como las conocidas F1, precision y 'recall') que permitan seguir y analizar el comportamiento y levantar alarmas en su caso.

Los autores nos hablan también de las derivas ('drifts') es decir, desviaciones progresivas del comportamiento original y que pueden producirse tanto en las distribuciones de los datos de entrada ('data drift'), distribuciones de las salidas ('target drift'), o en la relación entre ambos ('concept drift'). También aportan ideas sobre cómo tratar estas derivas, aunque ya no profundizaré más en ello.


Principio 6: Reproducibilidad


Finalmente, se menciona la reproducibilidad que quiere decir que las mismas entradas deben producir las mismas salidas. 

En software tradicional, determinista y basado en reglas, se trata de un concepto muy básico, muy evidente y es fundamental en el planteamiento de las pruebas.

Pero ¿Cómo entender esto en el caso de modelos de machine learning y específicamente grandes modelos de lenguaje que siempre decimos que son probabilistas y no deterministas?

Bien, el truco está en que, estrictamente hablando, los modelos no son probabilistas sino que dependen de parámetros concretos, como la semilla ('seed') o la temperatura que es lo que los convierte realmente en probabilistas. Si utilizamos siempre la misma semilla ('seed') y ajustamos adecuadamente otros parámetros como la temperatura, el modelo se convierte en perfectamente determinista y es posible, y deseable, ver que en esas condiciones se mantiene la reproducibilidad..


Conclusiones


Como se puede observar, los sistemas basados en machine learning y, particularmente, los basados en grandes modelos de lenguaje, además de ofrecer unas grandes capacidades, presentan necesidad de ser gestionados y operados de manera profesional.

En esa labor, heredan muchas de las buenas prácticas y herramientas de los sistemas tradicionales y procedentes de la ingeniería de software o de planteamientos como DevOps. 

En buena medida, son aplicables estas mismas buenas prácticas y herramientas, pero también se presentan particularidades y desafíos propios que precisan de nuevas técnicas y herramientas específicas.


viernes, 25 de abril de 2025

El machine learning como fenomenología y la renuncia al conocimiento

El último post de este blog, el titulado ''Lingüistas frente a inteligencia artificial' comentaba cómo, en las primeras épocas del procesamiento del lenguaje natural, los algoritmos se basaban mucho en conocimiento lingüístico, en reglas de ese campo y, por tanto, se precisaba de la participación de lingüistas. Y cómo, sin embargo, con la evolución tecnológica del campo, con su apoyo en modelos estadísticos y, más aún, con modelos procedentes del deep learning, se prescindía de esas reglas a priori, de ese conocimiento de los lingüistas haciendo, en su lugar, que los propios modelos, durante su entrenamiento, aprendiesen los patrones y modelos subyacentes al lenguaje, con lo que se ponía en cuestión el papel de los lingüistas.

Este post es, en cierto sentido, una continuación o, más bien, una generalización del anterior, aunque en este caso lo voy a conectar con la ciencia y, sobre todo, con la filosofía.


Eso de la fenomenología


Y en efecto, utilizo, espero que de una manera no demasiado forzada, el término fenomenología procedente tanto del campo de la filosofía y que me he encontrado con cierta frecuencia en lecturas, por ejemplo, de roboética

Edmund Husserl

Investigando un poquito para este post, descubro que, aunque el término fenomenología se ha utilizado frecuentemente en filosofía (y no siempre en el mismo sentido), quien le dio relevancia y quien, podemos decir, dio forma a la manera más generalizada de entender el término, fue el filósofo Edmund Husserl, maestro, por cierto, de Heidegger, uno de los filósofos que trabajo la filosofía de la tecnología (o la técnica). 

Como ocurre con la filosofía alemana de la época, la verdad es que el tratamiento parece abstracto y complejo pero, intentando encontrar su esencia y expresarla de manera sencilla, y además de una manera que justifique cómo la utilizo en este post, he entresacado este párrafo procedente de la entrada sobre fenomenología en Wikipedia. donde, tras hacer constar que no todos los filósofos tienen una visión unitaria del concepto, lo que sí sucede es que:


todos los fenomenólogos comparten la búsqueda de un conocimiento que apela exclusivamente a la experiencia evidente, carente de hipotetización y modelos conceptuales del mundo


Y no pude, o no quise, dejar de consultar a ChatGPT pero 'rogándole' que explicase el término de forma muy sencilla... y esto es parte de lo que 'me dijo'


La fenomenología en filosofía se puede explicar de forma muy sencilla como el estudio de cómo experimentamos el mundo. Es decir, no se enfoca en cómo son las cosas en sí mismas, sino en cómo se nos aparecen o se nos presentan en la conciencia.


Estos dos párrafos recogen lo que quiero decir con fenomenología, pero, y dado que es un término también utilizado en el mundo de la ciencia, entresaco, también de Wikipedia, este parrafito:


El término fenomenología se utiliza para describir un cuerpo de conocimiento que relaciona entre sí distintas observaciones empíricas de fenómenos, de forma consistente con la teoría fundamental, pero que no se deriva directamente de la misma.


En el fondo, y espero no estar desacertado, con el término fenomenología quiero referirme al fijarse en las manifestaciones externas de objetos y entidades prescindiendo de intentar explicar su naturaleza o leyes internas. Sólo la manifestaciones externas.


IA simbólica versus machine learning


La inteligencia artificial simbólica se apoyaba en la representación explícita del conocimiento del dominio de que se tratase, y de reglas, a veces heurísticas, que gobernaban ese dominio. Así se hacía en los otrora exitosos y hoy casi olvidados sistemas expertos.

Así se hacia, en el fondo, con el procesamiento de lenguaje natural y la lingüística computacional en sus primeras fases, tal y como exponía en el post anterior.

Pero el machine learning, el paradigma dominante de la inteligencia artificial actual, no intenta tener un conocimiento a priori de un dominio. Lo que se hace es, durante el entrenamiento, darle datos, digamos que darle 'ejemplos', al algoritmo, para que sea él propio algoritmo el que descubra los patrones y leyes subyacentes. Pero que los descubra por sí mismo, sin que ningún humano, 'le explique' qué leyes rigen el dominio. Es más, con mucha frecuencia el humano no conoce realmente cuáles son esas leyes. Aún más, con cierta frecuencia está fuera del alcance humano entender completamente las leyes que el algoritmo descubre.


Machine learning y fenomenología


Así las cosas, podemos decir que, cuando usamos machine learning, y muy especialmente cuando hablamos de los grandes modelos de deep learning, especialísimamente los grandes modelos de lenguaje o los modelos fundacionales, nos fijamos en el dominio, por ejemplo el lenguaje, pero 'pasamos' de sus leyes y de su naturaleza y nos fijamos sólo en cómo se manifiesta (en libros o páginas web, por ejemplo). 

Es decir, prescindimos de formular hipótesis o modelos conceptuales y, en su lugar, observamos empíricamente' (bueno, nosotros no, el algoritmo) el dominio sobre el que trabajamos.

¿No es ese un enfoque fenomenológico? 


Una posible renuncia al conocimiento


Bueno, más allá de si realmente hablar de fenomenología en el caso que lo hago es acertado o no, de si estoy forzando el término o no, de si lo estoy entendiendo bien o no, lo que es indudable es que, cuando usamos los algoritmos más avanzados de machine learning, no partimos de leyes y modelos a priori, sino de manifestaciones (datos) de lo que aspiramos a modelar.

Y no es sólo que no partamos de leyes, es que con mucha frecuencia, y esto es 'parte de la gracia' del machine learning, ni siquiera las conocemos. Y, aún más, dado que los modelos de deep learning modernos son muy grandes, muy poco intuitivos, y muy alejados, 'en su razonamiento', del razonamiento consciente humano, realmente cuando el modelo de deep learning ha acabado su labor de aprendizaje, cuando ese  modelo ha encontrado ya el modelo del dominio, nosotros, los humanos, seguimos sin conocer cuáles son las leyes que rigen ese dominio.

Es decir, no aportamos conocimiento del dominio antes del entrenamiento y nos quedamos sin entender el modelo final que abstrae con éxito el modelo.

En cierto modo, hemos renunciado al conocimiento y nos conformamos con el modelo y el algoritmo lo adquieran de alguna manera, aunque no la entendamos, y luego hagan predicciones correctas o proporcionen respuestas correctas.

Hemos renunciado al conocimiento.


Y sin embargo...


Bueno, o no.

Es cierto que, en muchos casos, adoptamos una visión práctica y priorizamos simplemente el que el modelo sea útil, que nos aporte soluciones, que funcione. Sólo eso. No conocimiento.

Pero también es cierto que los resultados obtenidos en un modelo nos pueden hacer intuir, o más que intuir, cómo es el fenómeno real que hay detrás.

También es cierto que, por ejemplo, las soluciones analíticas, nos pueden ayudar a entender mejor nuestro negocio o a los mercados.

También es cierto que los chatbots basados en modelos fundacionales, como ChatGPT nos ayudan, y mucho, a precisamente trabajar en el ámbito del conocimiento, sirviéndonos como copilotos en tareas de aprendizaje o análisis.

También es cierto, en fin, que los modelos de machine learning nos pueden ayudar a entender los propios procesos cognitivos humanos y la naturaleza de nuestro cerebro, nuestro pensamiento y nuestro aprendizaje y ese es un campo real de investigación.

Aunque, en cierto sentido, en machine learning se adopta ese enfoque fenomenológico, y metodológicamente renunciamos a trabajar con las leyes que rigen un cierto campo, eso no debe ser, no tiene por qué ser, una barrera para nuestra propia adquisición de conocimiento. 

Está en nuestras manos adquirir más y más conocimiento con y sin machine learning. Y eso no hay tecnología, metodología ni corriente filosófica que pueda, ni quiera, impedírnoslo.


Conclusiones


La forma de hacer inteligencia artificial en el caso del machine learning, renuncia a aportar a priori un conocimiento interno del dominio o modelo a tratar, sino que es el algoritmo quien lo descubre. Eso sí, una vez descubierto, es difícil de entender a para los humanos.

Aún así, podemos y debemos enriquecer nuestro conocimiento y las herramientas de machine learning en el fondo nos ayudan a ello.

Lejos de convertirse en una renuncia, pueden ser un gran facilitador.


lunes, 10 de marzo de 2025

Modelos fundacionales versus modelos tradicionales de machine learning

La existencia de los modelos generativos, tanto modelos de lenguaje como modelos multimodales, están cambiando, o más bien añadiendo, nuevas perspectivas al trabajo con inteligencia artificial y, en este caso, estoy pensando en la aplicación de la inteligencia artificial en empresas u organizaciones concretas, y no tanto en el desarrollo general de algoritmos o modelos.


Trabajo 'tradicional' con machine learning


Hasta hace aproximadamente dos o tres años, cuando se produjo la explosión de la inteligencia artificial generativa creo que, aunque sea de manera sin duda simplificada, podríamos decir que había (y hay todavía, claro) dos formas de construir soluciones basadas en inteligencia artificial o adaptar la inteligencia artificial a empresas y organizaciones concretas:


  • La primera trataba de construir modelos de machine learning para el análisis y la predicción con datos de la empresa. Los algoritmos como tal están definidos pero la adaptación, el entrenamiento para los datos de la empresa u organización se realiza localmente. Es la forma de trabajar fundamentalmente en analítica inteligente y en la construcción de modelos predictivos, por ejemplo. 

  • Reutilización de capacidades ya funcionales de inteligencia artificial: se trataría de utilizar, sin modificar, modelos o capacidades basadas en inteligencia artificial para construir soluciones apoyadas en ellas pero sin modificarlas. Es la forma de trabajar fundamentalmente en automatización inteligente. Así, los robots industriales, por ejemplo, utilizan capacidades de visión artificial, los robots RPA ('Robotic Process Automation') utilizan capacidades de reconocimiento óptico de caracteres (OCR, 'Optical Character Recognition') o de entendimiento de lenguaje natural, y los chatbots tradicionales utilizan también capacidades de entendimiento de lenguaje natural y de reconocimiento y generación de voz. 


Por supuesto que es una forma de resumirlo bastante simplificada pero creo que sí representa las formas de trabajo mayoritarias y muchos de los que trabajan con inteligencia artificial se verán reflejados en ellas.  


Trabajo con modelos fundacionales


Aunque las formas anteriores de trabajo siguen siendo de actualidad, la aparición de los modelos generativos, digamos los modelos fundacionales, introducen cambios y novedades.

Por una parte, ponen al alcance de usuarios 'normales' sin especialización técnica ni mucho menos en inteligencia artificial, hacer uso de capacidades avanzadas para multitud de tareas, sin más que usar las herramientas, sobre todo las tipo chatbot como ChatGPT, y donde gana importancia la habilidad del usuario para formular las preguntas o peticiones de la mejor forma posible usando las técnicas recogidas bajo el concepto de 'prompt engineering'. Incluso, se añaden cada vez más, capacidades para que el usuario se haga pequeñas automatizaciones como las Tareas de ChatGPT.

Además de eso, y de nuevo al alcance de cualquier usuario, cada vez más y más herramientas ofimáticas, como Office 365 o herramientas de videoconferencia como Zoom o Teams, o herramientas de desarrollo y así un largo y creciente etcétera, incluyen capacidades y asistentes basados en inteligencia artificial.

A nivel ya de grupos de desarrollo en gran medida las aplicaciones en torno a los modelos fundacionales se construyen tomando un modelo ya existente y que resulte adecuado y se intenta personalizar el modelo, si es necesario, y usarlo de la mejor forma posible. En el camino de la personalización se dispone de los mecanismos como el fine tunning o el uso de RAG ('Retrieval Augmented Generation').

Y, finalmente, se abre el camino de los agentes que, sin embargo y pese a ser una idea novedosa, recuerda mucho, como ya comenté en el post 'La hibridación de los robots software: agentes frente a RPA y robots conversacionales', a la forma en que se ha trabajado hasta la fecha en RPA o en agentes conversacionales.


Una caracterización de lo diferencial del trabajo con modelos fundacionales


Si yo tuviera que hacer una caracterización rápida de las principales diferencias que traen consigo los modelos fundacionales, diría, a bote pronto, lo siguiente:


  • La posibilidad de cambiar de manera notable el comportamiento, simplemente, mediante instrucciones en lenguaje natural ('prompt engineering'), en lugar de hacerlo mediante instrucciones en un lenguaje de programación o reglas formales de algún tipo.

  • La generalidad de los modelos subyacentes (que por ello llamamos fundacionales) y que valen para multitud de tareas diferentes y la facilidad para usar modelos de una altísima potencia

  • La naturaleza 'no exacta' ni cien por cien previsible del resultado que producen lo que que lleva a tener que tomar precauciones cuando se utilicen en automatización industrial o de procesos por ejemplo, o cuando la eficiencia sea clave, o en el caso tareas críticas donde 'no se puede fallar' y donde no se admiten sorpresas.


Las tres diferencias según Chip Huyen


Leyendo el último libro de Chip Huyen titulado, 'AI Engineering: Building Applications with Foundation Models', me encuentro con que Huyen, autora también de un fantástico libro sobre machine learning, 'Designing Machine Learning Systems', y un poco, creo, comparando con lo que ella misma había escrito, identifica tres diferencias fundamentales entre el trabajo con modelos de machine learning, digamos tradicionales (objeto de su libro anterior), y la creación de soluciones con modelos fundacionales (objeto de su último libro). Ella destaca las tres siguientes diferencias:


  • En el machine learning 'tradicional', tú tienes que entrenar tu propio modelo, mientras que en trabajando con modelos fundacionales se usa un modelo que ya ha sido entrenado (o, al menos, añado yo, pre-entrenado)

  • Al trabajar con modelos fundacionales se trabaja con modelos mayores, que consumen más recursos y presentan una mayor latencia. Eso pone más presión en la optimización tanto del entrenamiento como de la inferencia y la necesidad de personal especializado en el uso de GPUs y grandes clústers.

  • Los modelos fundacionales generan respuestas abiertas lo cual les confiere flexibilidad pero también mayor dificultad de evaluación.


La autora resumen esas tres diferencias en el hecho de que, en el machine learning tradicional el foco está en el desarrollo de modelos, mientras que en desarrollo basado en modelos fundacionales (lo que ella llama ingeniería de IA) el foco está en la adaptación y evaluación de modelos existentes.


Conclusiones


El trabajo con modelos fundacionales lleva a una forma diferente de trabajo en el campo de la inteligencia artificial. Una forma que, al menos por el momento, no sustituye a la anterior, pero que sí introduce nuevos métodos y técnicas de trabajo y donde el foco está más en el mejor uso de modelos existentes y su explotación mediante un buen 'prompting', 'fine tunning' o RAG y en una algo más difícil evaluación del desempeño de eso modelos.


miércoles, 23 de octubre de 2024

Notas sobre aprendizaje por refuerzo (VIII): problemas continuos y métodos basados en políticas

Y damos un paso más en nuestro recorrido por las particularidades algorítmicas y técnicas del aprendizaje por refuerzo ('reinforcement learning').

En este post vamos a introducir un pequeño cambio de tercio centrándonos en problemas en que el espacio de estados es continuo (y, por tanto, de alguna forma infinito), por lo que debemos cambiar la perspectiva y no basarnos en las funciones del estado, sino en las propias políticas.

¿Te suena extraño ese vocabulario, estimado lector? 

Bueno, pues como en todos los posts anteriores de esta serie, vamos a hacer un breve repaso.


Recordatorio: Aprendizaje por refuerzo y deep reinforcement learning

Los seguidores de esta serie de posts ya conocen bien lo que viene a continuación:



Nos hallamos ante problemas en que un agente interacciona con su entorno, aplicando unas acciones (a) y recibiendo unas recompensas (r) por ello. El entorno está definido por un estado (s) y, al recibir la acción a del agente, eventualmente se produce un cambio de estado a s', momento en que se genera la recompensa r. Para decidir qué acción aplicar en cada momento, el agente aplica una política π. Lo que queremos conseguir es que el agente aprenda la mejor política, aquella que maximice su recompensa acumulada (es decir, no la recompensa ante una acción concreta sino ante toda una serie de acciones que conduzcan, eventualmente a un estado final).

Los algoritmos que hemos visto hasta ahora, se apoyan en la implementación de unas funciones valor para un estado (V) o valor para un estado y acción dados (Q), que nos proporcionan, precisamente, la estimación de la recompensa acumulada.

En los algoritmos más sencillos, aquellos aplicables cuando el entorno exhibe un número finito y no muy alto de estados, utilizábamos un enfoque tabular, trabajando con tablas indexadas con base a estados.

Cuando la dimensionalidad del problema crecía mucho, es decir, el número de estados posibles era demasiado alto, teníamos que cambiar el enfoque. Y ese cambio de enfoque nos llevaba a renunciar a conocer los estados como tal y, en lugar de ello, caracterizar la situación del entorno mediante un conjunto de características. Además, pasábamos a implementar las funciones principales del problema, las funciones de valor y la política como redes neuronales profundas, llegando hasta el 'deep reinforcement learning'.


Robótica y espacios de estados continuos


Los algoritmos usados hasta ahora tienen sentido cuando los estados y las acciones posibles eson discretos y están claramente diferenciados. En ellos, las acciones disponibles están muy claras y podemos diferenciar de manera nítida entre la mejor acción y el resto. 

Sin embargo eso no es así en muchos problemas del mundo real, problemas que además aplican a campos que son de mi muy especial interés como la robótica, los vehículos autónomos o los juegos de estrategia en tiempo real.

En concreto, los métodos que veremos, se aplican a robots que caminan o saltan, lo que se denomina 'locomoción'.

En concreto, en el conocido video que se muestra abajo, se ve a un agente, una especie de robot simulado, que aprende a correr y saltar mediante el tipo de algoritmos que en seguida veremos:




Métodos basados en política ('policy-based methods')


Para estos casos, tal y como se nos indica en el libro 'Deep reinforcement learning' de Aske Plaat, cuyo discurso estoy siguiendo en toda esta serie de posts, debemos cambiar el enfoque. Si hasta ahora nos enfocábamos en las funciones de valor de estado o de estado-accion, ahora abandonamos esas funciones y trabajamos directamente con la política a optimizar π

Estos métodos continúan apoyándose en soluciones de redes neuronales profundas que aprenden mediante el famoso algoritmo de descenso de gradiente.

Los tres métodos que menciona la obra mencionada son 'REINFORCE', 'Asynchonous advantage actor critic' y 'proximal policy optimization'.


Espacios de acciones continuos


En el tipo de problemas que estamos tratando, nos concentramos en las acciones, unas acciones que ahora se encuentran también en un espacio continuo. Así, el movimiento de la junta de un robot puede adoptar un valor continuo en radianes, al igual que lo puede hacer la posición del volante de un vehículo autónomo o el giro de sus ruedas.

Así, por ejemplo, y suponiendo que podemos girar una circunferencia completa, podríamos tener un valor contenido en el rango


[0,2π ] ∈ ℜ


donde existen un número de valores posibles infinito. Una opción podría ser discretizar estos valores. Sin embargo, los métodos de que nos ocupamos optan por trabajar directamente con acciones continuas y, por tanto, unas políticas que también son continuas.


Políticas estocásticas


Además, estos métodos utilizan unas políticas estocásticas que se traducen en distribuciones de probabilidad sobre las acciones.

Esta forma de actuar evita la inestabilidad en el caso de entornos estocásticos que aqueja a los métodos vistos hasta ahora basados en valor. Además, estas políticas incorporan 'de serie' el concepto de exploración' que vimos en el quinto post de esta serie cuando explicamos los algoritmos SARSA y Q-learning.


Conclusiones


De momento detengo aquí la exposición. Por supuesto, sólo hemos rascado un poco y delineado el tipo de problemas, algunos campos de aplicación y las bases de los algoritmos sin entrar a explicar con más detalle ninguno concreto, cosa que seguramente hagamos en un próximo post. Pero prefiero ir poco a poco, porque abordamos una temática bastante compleja.

Lo más interesante, es que nos estamos introduciendo ya en algoritmos muy cercanos a las complejas aplicaciones reales, más allá de los juegos y, en concreto, en elementos muy avanzados propios de la robótica o los vehículos autónomos, que me interesan especialmente.


Artículos de este blog relacionados


miércoles, 2 de octubre de 2024

Notas sobre el aprendizaje por refuerzo (V): deep reinforcement learning

Llegamos ya a la quinta entrega de esta serie sobre aprendizaje por refuerzo ('reinforcement learning').

Este post será, creo, algo más sencillo y menos matemático que alguno de los anteriores, pero espero que aporte perspectiva.

En este caso, simplemente, vamos a revisar cuándo tiene interés el aplicar deep learning en el caso del aprendizaje por refuerzo ('reinforcement learning'), lo que dará lugar al denominado deep reinforment learning.


Recordatorio: aprendizaje por refuerzo y métodos tabulares


Antes, y como siempre en esta serie de posts y aun a riesgo de resultar algo repetitivo, un muy breve recordatorio de lo que hemos visto hasta ahora.



La situación en que nos encontramos es la de un agente (que me gusta pensar que es un robot, pero que puede adoptar otras muchas formas), que interactúa con un entorno, para lo cual realiza sobre éste una serie de acciones (a). La situación de ese entorno se define por una serie de estados. Cuando el entorno, que se encuentra en un estado s, recibe la acción, puede producirse en él una transición de ese estado s a otro s'. Esas transiciones están gobernadas por una función Ta, normalmente probabilista (estocástica). Cuando se produce ese cambio de estado el agente recibe del entorno una recompensa r.

El agente decide las acciones a realizar siguiendo una política π.

Lo que buscamos en el aprendizaje por refuerzo es que el agente aprenda la mejor política posible para conseguir maximizar la recompensa acumulada a sus acciones.

En esa labor, muchos algoritmos de aprendizaje por refuerzo se apoyan en las funciones de valor-estado Q, que, para una política dada, nos proporcionan la recompensa esperada acumulada cuando en un estado s comenzamos con una acción a.

Los denominados métodos tabulares, como SARSA y Q-Learning, se apoyan, simplemente, en reglas y tablas de estados para su cálculo.


Funciones y machine learning


No se suelen explicar así, pero los modelos de machine learning, una vez entrenados, resultan ser simplemente unas funciones, es decir una correspondencia que, a cada valor de un dominio de entrada, le hace corresponder el valor del dominio de salida.

En matemáticas sencillas, por ejemplo, la función raíz cuadrada, hace corresponder a un número del dominio de los números reales (entrada) otro número (salida), en este caso también en el dominio de los números reales.

Los algoritmos de machine learning, una vez entrenados, funcionan igual: a un valor de entrada, le hacen corresponder un valor de salida. Por ejemplo, a unos datos de entrada sobre mercado, acciones promocionales, etc, le hacen corresponder una previsión de ventas.

Eso sí, los algoritmos de machine learning tienden a aplicarse en dominios complejos, generalmente expresados como grandes vectores con un 'montón' de elementos o dimensiones, tanto en salida como, sobre todo, en entrada.

Y, más importante aún, y lo que realmente resulta diferencial en el caso del machine learning, esas funciones, la manera de hacer corresponder la salida con la entrada no las definimos por anticipado los humanos, sino que la aprende el propio algoritmo a partir de ejemplos o experiencia.

Y el deep learning no es una excepción a esto, lo cual no es de extrañar teniendo en cuenta que, aunque muy diferenciado, el deep learning no es más que un subconjunto del machine learning.

Aunque nos gusta, a la hora de explicar las redes neuronales y el deep learning, hacer el paralelismo con el cerebro humano, un paralelismo que tiene sentido por otro lado, a efectos prácticos y algorítmicos, las redes neuronales no son más que otro caso de funciones, una funciones que se aprenden. Y lo que ocurre es que las funciones que se pueden implementar mediante deep learning son especialmente complejas, muy complejas y casi misteriosas, pero funciones, al fin y al cabo


Lo que aporta el deep learning al aprendizaje por refuerzo


Vista la explicación anterior, no es difícil comenzar a imaginarse lo que aporta el deep learning en el caso del aprendizaje por refuerzo.

Volvamos al planteamiento del aprendizaje por refuerzo: tenemos un entorno con una serie de posibles estados. En este tipo de problemas es especialmente relevante la dimensionalidad del espacio de estados del entorno.

Cuando el problema es simple y un poco de laboratorio, por ejemplo un juego, el número de estados posibles del entorno, las transiciones posibles, las acciones, etc, son reducidos. Los métodos tabulares, como el Q-Learning, funcionan bien con una dimensionalidad baja y, a la hora de implementarla, se pueden cargar todos los estados en memoria sin problema.

En problemas reales, sin embargo, la dimensionalidad del espacio de estados en inmensa, casi inabarcable y, complejidad aparte, simplemente no podemos cargarlos en memoria y no podemos tampoco memorizar una política adecuada.

La forma de afrontar el problema es renunciar a trabajar con todos los estados como entrada y, en su lugar, representar la situación del entorno mediante unas características ('features') y, con usnado esas características como entrada, calcular valores y acciones. Los estados ya no son, pues, directamente identificables y no los podemos almacenar en tablas donde buscamos, como hacíamos en los métodos tabulares.

La correspondencia entre características como entrada y acciones y valores como salida es una función, una función que en los problemas de alta dimensionalidad es muy compleja, y una función que por tanto implementamos mediante redes neuronales, mediante deep learning.

 

Deep reinforcement learning


El uso de deep learning en el aprendizaje por refuerzo da lugar a una subdisciplina denominada 'deep reinforcement learning'.

De hecho, el libro de Aske Plaat en que me estoy apoyando para toda esta serie de posts se titula, simplemente así: 'Deep reinforcement learning'. 


Conclusiones


Cuando intentamos aplicar el aprendizaje por refuerzo a problemas reales, nos encontramos con una altísima dimensionalidad del espacio de estados del entorno. Eso imposibilita el utilizar métodos sencillos en que se tabulan los estados y, en su lugar, debemos representar indirectamente mediante características el estado del entorno y calcular estados y valores usando el mejor mecanismo que tenemos para implementar funciones muy compejas: el deep learning.

Esto da lugar al la subdisciplina del deep reinforment learning, donde cabe esperar los resultados más avanzados y espectaculares.


Artículos de este blog relacionados



miércoles, 25 de septiembre de 2024

Notas sobre aprendizaje por refuerzo (IV): Metodos tabulares. SARSA Y Q-Learning.

Aunque tendemos a imaginar la inteligencia artificial como una amalgama de algoritmos complejos y misteriosos, lo cierto es que no siempre es así.

Muchos de los algoritmos que conforman el así llamado machine-learning (y no digamos nada la antigua inteligencia artificial simbólica) son relativamente sencillos, lógicos y basados en intuiciones o razonamientos perfectamente inteligibles.

Donde comienza creo, el misterio, la semejanza con la magia es, cuando entramos en el campo del deep learning, de las grandes redes neuronales, donde se escapa un poco de nuestra lógica natural el funcionamiento de estos ingenios y cómo pueden obtener resultados.

Y eso que ocurre, en mi opinión, en toda la inteligencia artificial, también tiene lugar en el área del aprendizaje por refuerzo ('reinforcement learning'), donde existen algoritmos relativamente lógicos y sencillos pero donde también reinan cada vez más los mágicos algoritmos del deep learning. 

En este cuarto post de la serie dedicada al aprendizaje por refuerzo, nos vamos a quedar, todavía, en los algoritmos más o menos sencillos, los que no utilizan redes neuronales, unos métodos que en la referencia que estoy siguiendo en toda esta serie, el libro 'Deep reinforcement learning' de Aske Plaat, denomina 'tabulares' porque utilizan unos datos tabulados. 

Remataremos con un esbozo del algoritmo Q-Learning, aunque antes nos tendremos que detener a aprender algunos nuevos conceptos y otro algoritmo, SARSA.


Recordatorio: procesos de decisión y aprendizaje por refuerzo 


Antes, recordemos todo el marco en que nos estamos moviendo, y que se esquematiza en la figura que estoy usando repetidamente en esta serie de artículos.




Tenemos un agente, por ejemplo un robot, que se mueve en un entorno, un entorno que, en un momento dado, se encuentra en un estado (s). De cara a conseguir sus objetivos, el agente realiza acciones (a) sobre el entorno. Eventualmente, la aplicación de esa acción provoca un cambio de estado en el entorno que pasa del estado (s) al (s'), y el agente recibe una recompensa (r), una suerte de feedback de si se acerca o no a sus objetivos. 

Las transiciones de estado del entorno, están regidas por una función Ta. En algunos casos estas transiciones son deterministas, pero con frecuencia siguen distribuciones de probabilidad hallándonos en este caso ante entornos estocásticos. Para elegir la acción a realizar, el agente aplica una política (π).

En general, en un aprendizaje por refuerzo lo que queremos es aprender, u optimizar, esa política π, un poco por ensayo y error, aplicando acciones, viendo las recompensas obtenidas, y ajustando la política. 


Modelos del mundo. Algoritmos con y sin modelo


De alguna forma, esa función Ta que hemos mencionado, constituye un modelo del mundo (un modelo del entorno para ser más precisos, pero es común y seguramente 'más bonito' hablar de modelo del mundo).

Con bastante frecuencia, el agente NO conoce ese modelo del mundo, no sabe qué función Ta gobierna los cambios de estado del entorno, por lo que debe optimizar su política (π) sin conocer realmente el modelo del mundo, sólo con base en la interacción con el mismo y las recompensas obtenidas. Ese es el caso de los algoritmos que se denominan sin modelo ('model-free').

Veremos más adelante en esta serie, el caso en que el agente SI puede conocer o al menos aproximar el comportamiento del entorno. En este caso se habla de algoritmos basados en modelo ('model-based').


Explotación y exploración


En un post anterior, hablamos de una función, el valor estado-acción Q(s,a) que nos proporcionada el valor (es decir la recompensa acumulada esperada) ante la aplicación de una acción a, en un estado s.

La lógica más inmediata nos lleva a pensar que lo que tiene que hacer un agente en cada momento es seleccionar aquella acción que proporciona un mayor valor de Q. Es intuitivo y razonable, e incluso pudiera funcionar, pero la experiencia demuestra que esa estrategia, que se denomina 'greedy' (algo así como 'glotona') tiende a conducirnos a máximos locales, pero no globales, con lo que no llegamos realmente a determinar la mejor política de todas, sino una sólo una buena solución, pero no la mejor.

Por eso, se aconseja combinar los mecanismos que se denominan de explotación y exploración.

En explotación funcionamos de modo, digamos normal, usando las mejores acciones hasta donde conocemos (con base en nuestra función estado-valor), pero en exploración introducimos aleatoriedad en lugar de lo que dicte la función Q, para seleccionar la siguiente acción.

Los algoritmos mejores utilizan una combinación de ambos mecanismos, existiendo diversas teorías sobre la mejor forma de establecer ese equilibro o compromiso de en qué medida utilizamos uno u otro.


Aprendizaje de política on y off


A la hora de actualizar la política con base en la recompensa obtenida por el agente, el aprendizaje propiamente dicho mediante el mecanismo de 'backpropagation' que mencionamos en el segundo post de esta serie, lo primero que se nos viene a la cabeza es, simplemente, usar la recompensa para la última acción aplicada. Eso es lo que se denomina un aprendizaje de política 'on' ('on-policy learning').

Sin embargo, también es posible, y puede ser conveniente, no aplicar la retropropagación (el aprendizaje) de acuerdo con la recompensa a la última acción sino adoptar una perspectiva más amplia y, eventualmente, hacer el aprendizaje con otra recompensa quizá anterior. Esto es lo que se denomina aprendizaje de política off ('off-policy learning') y puede tener sentido, por ejemplo, cuando estamos aplicando la exploración que mencionábamos hace un momento. ¿Por qué? porque al explorar fácilmente nos podemos encontrar respuestas muy poco óptimas y no tendría sentido empeñarnos en utilizar la recompensa obtenida como un buen indicador de una buena decisión.


El algoritmo SARSA


Uno de los los algoritmos tabulares conocidos es SARSA. SARSA utiliza sólo explotación y aprendizaje de política on ('on-policy').

¿Cómo funciona? Pues, como conocemos, el agente selecciona una acción y obtiene una recompensa,. Con base en ella actualiza sus función valor-estado Q(s, a) que, indirectamente es como actualizar su política (π). En esa actualización sigue la fórmula:


Q(st, at) ← Q(st, at) + α[ rt+1 + γQ(st+1, at+1) - Q (st, at)]


No entraré en el detalle del significado de la fórmula, sólo indicar que la función valor-estado se va actualizando con base en la recompensa recibida.


El algoritmo Q-Learning


Bueno, pues culminamos el post esbozando, sin entrar en muchos detalles, el algoritmo Q-Learning. En el caso de Q-Learning estamos ante uno de esos denominados algoritmos tabulares (utilizan reglas o tablas en lugar de redes neuronales), utiliza tanto explotación como exploración y un aprendizaje de política off ('off-policy').

A priori, el funcionamiento va a ser muy similar al de SARSA y, si nos nos fijamos, la fórmula de actualización de las funciones valor-estado parece la misma


Q(st, at) ← Q(st, at) + α[ rt+1 + γmaxaQ(st+1, a) - Q (st, at)]


Parece la misma, pero no lo es. 

Fijémonos en la parte central de la fórmula, la que he destacado con negritas, y comparemos con el caso de SARSA. Vemos que si en SARSA se utilizaba la función valor del estado finalmente alcanzado, en el caso de Q-Learning se utiliza aquella función valor máxima de entre todas las acciones, no sólo la aplicada en último término. Eso es lo que le confiere la característica de aprendizaje de política off, en lugar de on.

Podemos, de una forma más estructurada y que nos acerca un poquito a un pseudocódigo, expresar el algoritmo Q-Learning de la siguiente maneta:

  • Inicializa la tabla de valores (Q) con números aleatorios
  • Repite
    • Selecciona un estado (s)
    • Para todas las posibles acciones (a) aplicables en ese estado (s), selecciona la que proporciona el mayor valor de Q (cuando estés aplicando explotación), o bien, si en esta iteración vas a aplicar exploración, selecciona una al azar. 
    • Mira la recompensa (r) obtenida y actualiza la tabla de valores Q con la fórmula que hemos visto más arriba
  • así hasta que se alcance el objetivo
  • Alcanzado el objetivo, repite todo el bucle hasta que los valores de la tabla Q ya no varíen mucho (eso implica fijar algún umbral de variación concreto). 

Con esto no hemos especificado del todo el comportamiento, aunque tampoco estamos tan lejos, pero sí es lo suficiente para, si lo leemos despacio, entender la filosofía básica del algoritmo.


Conclusiones


En este post, hemos ampliado algunos conceptos respecto a otros ya utilizados en los tres artículos anteriores. Así, hemos hablado de:

  • Algoritmos con y sin modelo ('model based' o 'model-free')
  • Concepto de explotación y exploración y la conveniencia de utilizarlos conjuntamente
  • Aprendizaje de política on y off ('on-policy'  learning y 'off-policy' learning)

Y, finalmente, quizá en la parte más formal y difícil del post, hemos esbozado los algoritmos SARSA y, un poco más, el Q-learning. Ambos tabulares, pero el primero usando aprendizaje 'on-policy' y el segundo introduciendo la exploración y usando aprendizaje 'off-policy'.

Y todavía no hemos llegado a la magia, a la introducción del deep learning porque estos algoritmos que hemos visto, que entran dentro de los llamados tabulares, son un poco más tradicionales, más modestos en sus campos de aplicación y más fáciles de entender (dentro de lo que cabe) .

Pero no tardaremos ya mucho en llegar al aprendizaje con refuerzo usando redes neuronales y deep learning aunque veremos que, si no se entra en detalles, habrá mucha continuidad expositiva con lo visto hasta ahora.