lunes, 22 de julio de 2024

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

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

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

Vayamos poco a poco.


Almacenes de datos 


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

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

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


Big Data y datalakes


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

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

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


Big Stream


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

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


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


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

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

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


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


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

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

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


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


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


Conclusiones


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


jueves, 18 de julio de 2024

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

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

El ignorado paso a producción


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

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

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

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


Machine learning en producción


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

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

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

Y los autores destacaban cinco diferencias.


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


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


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

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

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

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

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


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

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

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


Conclusiones


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

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



viernes, 12 de julio de 2024

Apalancamiento cognitivo

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

La tecnología como externalización  


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

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

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


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


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


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

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

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


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


Apalancamiento


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

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


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

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

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

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


Tecnología y apalancamiento


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

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

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

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

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


Apalancamiento cognitivo


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

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

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

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

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

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


Conclusiones


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

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

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

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



lunes, 8 de julio de 2024

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

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

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


Decisiones y sabiduría práctica


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

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

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

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

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


Los elementos del juicio humano


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


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

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

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

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

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

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

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


Implementación del juicio en máquinas inteligentes


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

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

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

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

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

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

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

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

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

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

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


Conclusiones


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


miércoles, 3 de julio de 2024

Inteligencia artificial neurosimbólica: la tercera ola de la inteligencia artificial

Estamos muy habituados a oír hablar de la inteligencia artificial simbólica, que se suele encuadrar dentro de la GOOFAI (Good -old-fashioned AI), enfrentada y superada por el machine learning o la inteligencia artificial basada en datos, y muy especialmente el deep learning, que es la claramente dominante hoy día.

Bueno, pues resulta que hay una tercera vía, una tercera vía que alguna vez he mencionado en este blog, pero muy ligeramente y que hoy voy a comentar un poco más, aunque sin entrar en muchas profundidades.


Las tres olas de la inteligencia artificial  


Leyendo el libro coral 'Introduction to digital humanism', llego hasta el capítulo titulado 'Trustworthy artificial intelligence: comprehensible, transparent and correctable' firmado por Ute Schmid. En ese capítulo, y siendo en realidad el tema principal la explicabilidad de la inteligencia artificial, la investigadora alemana menciona esas tres olas de la inteligencia artificial, la tercera de las cuales incluiría a la inteligencia artificial neurosimbólica.

Ute Schmid

Esas tres olas serían

  • Enfoques basados en conocimiento ('knowledge-based'): aunque la autora no lo expresa exactamente así, estaríamos hablando de ese tipo de soluciones en que existía la entonces denominada representación del conocimiento y que resolverían problemas o deducirían cursos de acción (inferencia) con base en ese conocimiento. No resulta difícil, en efecto, reconocer la inteligencia artificial simbólica y muy específicamente los sistemas expertos. La autora, que se centra sobre todo en la compresibilidad y posibilidad de corrección de los diferentes métodos, nos habla de que este tipo de soluciones con el término describir ('describe') y creo que es claramente admisible que son soluciones dotadas de explicabilidad.

  • Machine learning intensivo en datos ('data-intensive'): El enfoque alternativo, el de los algoritmos que aprenden con base en datos o experiencia, es decir, estaríamos en el campo del 'machine learning' y, muy especialmente, del deep learning. Aunque no en todos los casos, en buena parte de ellos, especialmente en lo que tiene que ver con el deep learning, hablaríamos de algoritmos no explicables. La autora califica a esta ola con la palabra categorizar ('categorize').

  • Enfoques que se adaptan al usuario: en esta tercera ola se buscaría que las soluciones de inteligencia artificial se adaptasen a los intereses de los usuarios dependiendo del contexto. La autora caracteriza esta ola con la palabra explicar ('explain') y serían el tipo de soluciones objetivo, unas soluciones, no sólo capaces de generar explicaciones sino también de una interacción que, eventualmente, pudiese conducir a correcciones al modelo.

Es con referencia a la tercera ola donde se indica que la combinación de enfoques basados en el conocimiento con el machine learning, pudiera conducir soluciones explicables, robustas y más eficientes en datos. Y esa tercera ola sería la inteligencia artificial híbrida ('hybrid AI') o neurosimbólica.


La inteligencia artificial neurosimbólica


De cara a ilustrar lo que significa la inteligencia artificial neurosimbólica, la autora cita el artículo  'From statistical relational to Neuro-symbolic artificial intelligence'. 

Se trata de un artículo no muy largo, pero sí técnico, en que, en esencia, se hace una revisión de hasta catorce modelos neuro-simbólicos que se clasifican en torno a siete dimensiones diferentes que son previamente explicadas. El artículo finaliza planteando cinco retos para el futuro de esta inteligencia artificial neurosimbólica.

La idea que parece quedar es que se trata de una línea de investigación prometedora, pero probablemente todavía reducida a eso, investigación, aunque con la velocidad a que avanza la inteligencia artificial actualmente, cualquier hallazgo, cualquier idea afortunada, podría cambiar el panorama y llevar a este tipo de soluciones al 'prime time' con resultados, probablemente, espectaculares.


Conclusiones

Aunque no parece que todavía estén preparados para un despliegue masivo y comercial, los sistemas de inteligencia artificial que combinan la visión basada en lógica y conocimiento (simbólicos) con la orientación conexionista y basada en datos, pueden ser una extraordinaria propuesta para futuras soluciones de inteligencia artificial.

Unas soluciones que, además de combinar la demostrada potencia de los sistemas neuronales con la explicabilidad de los simbólicos, nos hacen intuir una mayor cercanía con el funcionamiento del cerebro humano y, por tanto, la posibilidad de una mejor emulación de sus capacidades.


lunes, 24 de junio de 2024

Los requisitos 3H para una inteligencia artificial segura

En el desarrollo de la inteligencia artificial, aparte de los objetivos técnicos y de negocio, que creo perfectamente lógicos, admisibles e incluso loables, se busca también su, digamos, conformidad ética, y la seguridad para las personas ('AI safety').

Aunque muchas son las derivadas y complejidades que conseguir esa seguridad pueda tener, me he encontrado recientemente un esquema muy sencillo, que es el que quisiera comentar en este breve post.


El aprendizaje de ChatGPT y el alineamiento con las necesidades del usuario


En concreto, leyendo el libro coral, 'Introduction to digital humanism' me topo con un capítulo, el titulado 'A short introduction to Artificial Intellligence : methods, success stories and current limitations' firmado por Clemens Heitzinger y Stefan Woltran, algo más técnico que lo que he visto hasta el momento en el resto del libro.

En ese capítulo, repasando los diferentes mecanismos de aprendizaje (supervisado, no supervisado, por refuerzo) llegan al final a hablar, como casi es inevitable, de ChatGPT y de su mecanismo RLHF ('Reinforcement Learning with Human Feedback') o aprendizaje por refuerzo con realimentación humana descrito en 'Training language models to follow instructions with human feedback' un mecanismo en que, como feedback humano, se aporta una ordenación de cuatro respuestas a un promt. Según nos dicen los autores, con esto lo que se busca es alinear el modelo del lenguaje a las necesidades del usuario.


El modelo 3H de necesidades del usuario


A la hora de hablar de esas necesidades del usuario, los autores, y citando ahora el artículo GPT-4 Technical report nos hablan del modelo 3H, un modelo muy sencillito en que se entiende que lo que espera el usuario de una herramienta, en este caso ChatGPT es que sea:


  • Honest (honesta): respuestas correctas y honestas

  • Helpful (útil): respuestas útiles y que sirvan de ayuda

  • Harmless (no dañina): es decir, el sistema no debiera dar respuestas que puedan hacer daño de alguna manera.

De estas tres características, entiendo que la segunda, la utilidad, es un objetivo mucho más de tipo práctico, casi evidente, y es la honestidad y el no hacer daño lo que conecta esta propuesta con la ética, aunque dentro de la honestidad también se incluye la corrección de la respuesta, lo cual lo podríamos entender como un objetivo práctico e incluso técnico, más que ético o de seguridad.

Se trata, como vemos, de un esquema muy sencillo de enunciar (por supuesto, no tanto de conseguir) pero, según los autores, casi todo el trabajo actual en seguridad de la inteligencia artificial ('AI safety') se basa en satisfacer esas tres H.

Conclusiones


Vemos en este modelo de las tres H, quizá un planteamiento muy simple, pero a pesar de todo, apuntando en la buena dirección. 

Por lo demás, y aunque sea a modo de 'subproducto' de esta discusión, creo que vale la pena la lectura, aunque sea bastante técnica, de los informes de OpenAI que ponen mucho foco, precisamente, en los aspectos éticos y de seguridad. 


lunes, 17 de junio de 2024

La sorprendentemente sencilla adopción de la inteligencia artificial

Recientemente he finalizado la lectura del libro 'Microsoft Copilot: Mastering the AI Revolution in Office 365, Strategies for Innovation, Knowledge and Lifelong Learning' de Bryan J. Silva, un libro bastante limitado, la verdad (quizá por el demasiado cercano lanzamiento de Copilot), y de donde he sacado poco en limpio pero donde, sin embargo, y bastante al final, he visto algo que me ha hecho pensar y que motiva este post.

Bastante avanzado el libro, como digo, se expone brevemente la viabilidad de integrar scripts o modelos desarrollados en Python con Copilot 365. En el fondo, no es nada demasiado sorprendente. Sin embargo, me hizo pensar en lo potente que es esta integración y, yendo algo más allá, lo fácil que resulta hoy en día la adopción de la inteligencia artificial, tanto para incluirla en otro tipo de sistemas como para su uso directamente por personas.


Reflexión previa: nuestra incapacidad para sorprendernos con la tecnología


Antes, me gustaría hacer una breve reflexión previa. Y es una reflexión sobre nuestra relativa incapacidad para asombrarnos con los avances de la tecnología, en este caso con la inteligencia artificial.

Parece como que, de alguna forma, nos hubiésemos acostumbrado a que la tecnología nos aporte cosas que, no tanto antes, hubiésemos considerado 'alucinantes' o, como diría Arthur Clarke, 'indistinguibles de la magia'. En cierto modo ocurrió con Internet, ocurrió también con las redes sociales (asombrosas no tanto por su funcionalidad como por su escalabilidad), ocurrió con el smartphone y el internet móvil y creo que ahora ocurre con la inteligencia artificial en sus múltiples facetas.

No sé si esta incapacidad para el asombro es buena o mala. Entiendo que es un buen síntoma porque, si nos acostumbramos, es porque empieza a ser 'normal' que la tecnología avance a toda velocidad. Y eso es bueno. 

Pero, síntoma aparte, no estoy seguro de si es bueno de que no seamos conscientes de esos cambios y de lo transformadores, y muchas veces maravillosos que resultan.

No estoy seguro, pero no sé si esa incapacidad para el asombro nos puede restar capacidad para su adecuada gestión de todo tipo: técnica, económica, social y ética. O si, incluso, puede ser síntoma de algo que sería negativo: una cierta pasividad e incluso hastío casi existencial, que pudiera conducir, incluso, a problemas psicológicos.

Pero dejo aquí, bastante abierto la verdad, este excurso para entrar en lo que realmente era el tema de este post: la facilidad de adopción de la inteligencia artificial.


Una doble facilidad de adopción


Planteo esa facilidad de adopción con una doble cara.

Por un lado, y desde un punto de vista más técnico, lo sencillo que resulta incorporar capacidades, algoritmos y modelos de inteligencia artificial en todo tipo de sistemas y soluciones, sean estos en modo de sistema empresariales (ERP, CRM, SCM, HCM, etc), soluciones de RPA, soluciones BPMS o incluso soluciones a medida.

Por otro, la facilidad de uso por los usuarios, por las personas.


Una valiosísima y crucial herencia


Lo cierto es que, comenzando por el lado técnico, la actual facilidad de adopción de la inteligencia artificial se apoya en otro tipo de soluciones y planteamientos, ajenos y previos en general al auge actual de la inteligencia artificial y que, en el fondo, también se podrían utilizar para ayudar en la adopción de muchas otras tecnologías.

Comenzaría por algo que lleva ya muchísimos años entre nosotros, como es el planteamiento SOA ('Service Oriented Architecture') que ya hace muchos años nos mostró el camino para organizar la lógica de nuestros sistemas y soluciones en modo de componentes y, sobre todo, de servicios de negocio, unos componentes autocontenidos y de bajo acoplamiento que, además, se exponen hacia el exterior mediante una serie de servicios bien delimitados.

Acompañando y concretando la propuesta SOA, el desarrollo, generalización e implantación del concepto de API ('Application Programing Interface'), con especial relevancia hoy en día en las interfaces tipo Web Service y, sobre todo, hoy en día, REST.

Aunque no es una tecnología en sí misma, pero sí un planteamiento, destacaría también el muy extendido uso del concepto de conector que, en forma nativa, disponibiliza esas APIs para soluciones fundamentalmente basadas en filosofía 'low-code', y que simplifican enormemente el desarrollo de las integraciones.

Y como 'guinda del pastel', la expansión de la filosofía cloud computing, no sólo para alojamiento o virtualizacion de servidores, sino, sobre todo, para el ofrecimiento de servicios precisamente basados en APIs. Todo ello potenciado por la existencia de los denominados hiperescaladores (Amazon, Microsoft, Google,...) que disponibilizan, de forma tremendamente escalable y ubicua, ese tipo de servicios.

Algunas de estas tecnologías y planteamientos, para el lector que no las conozca, merecerían una explicación, pero no voy a entrar en ella para no alargarme en exceso.

Y algunas de estas tecnologías y planteamiento pueden resultar alejadas del foco mediático actual (aunque lo estuvieron en su momento), quizá incluso parecer, erróneamente, algo 'viejunas' y pasadas de moda, pero, sin embargo, son absolutamente clave y de plena actualidad, si no mediática, sí tecnológica y práctica.


La sencillez de la integración de componentes de inteligencia artificial


La multiplicación de APIs y conectores, en este caso recubriendo servicios de inteligencia artificial y con frecuencia en la nube (especialmente la nube de los hiperescaladores o grandes actores de la inteligencia artificial), y la enorme facilidad para integrar, mediante conectores o uso directo de APIS, esos componentes y servicios en otras soluciones, unida a la proliferación de herramientas 'low-code' que apenas exigen conocimientos de programación para desarrollar soluciones incluyendo integraciones, hace tremendamente simple la inclusión de capacidades de inteligencia artificial en todo tipo de soluciones y es un factor que favorece enormemente su adopción en empresas y administraciones.


La facilidad de uso de la inteligencia artificial


Pensando ya no tanto en la inclusión de capacidades en nuevas soluciones y sistemas, sino en su adopción por las personas, en el trabajo y el ámbito privado, cabe destacar el enorme avance que supone el haber conseguido interfaces conversacionales basadas en voz y lenguaje natural muy eficaces en el tratamiento de esa voz y los 'significados' del lenguaje.

Esto hace que muchas aplicaciones, tanto de inteligencia artificial como de otro tipo, resulten absolutamente naturales en su utilización. eliminando curvas de aprendizaje que traen consigo otro tipo de interfaces (comandos, ventanas, etc) y facilitando la llegada masiva, como así está siendo, de la inteligencia artificial a las personas, a los profesionales y los ciudadanos en general.


Conclusiones


De alguna manera, la inteligencia artificial actual es heredera de los buenos planteamientos que se han venido haciendo desde hace años e incluso décadas en el ámbito de las tecnologías de la información e interfaces de usuario. Y la confluencia de los avances específicos en inteligencia artificial con esos planteamientos, no brinda una sorprendente facilidad de uso e integración de la inteligencia artificial, al menos desde el punto de vista técnico y operativo, y esto debería garantizar una masiva y exitosa adopción de la inteligencia artificial.

En parte lo estamos viendo, pero, en realidad, todavía nos queda, creo, mucho por ver.