miércoles, 29 de mayo de 2019

Ha llegado la hora. Publico mi primer libro: 'La Carrera Digital'

Ha llegado la hora. Así se titula la introducción del libro 'La Carrera Digital' que acabo de publicar. Y 'ha llegado la hora' es lo que siento en este momento en que, con esta publicación. realizo un sueño muy arraigado en mi y largamente acariciado.

'La Carrera Digital' habla de Transformación digital y en él intento volcar una parte de lo aprendido en casi treinta años de ejercicio profesional, bien acompañado de continuado estudio y actualización personal.

Podría haber hablado de otras muchas cosas, amplio es el abanico de mis intereses, pero tras una inspiración, tras una visualización de lo que el libro podía ser, decidir apostar por este tema. Y espero aportar una visión compresible y rigurosa sobre la realidad de tecnología digital y sobre el significado y, sobre todo, la forma de llevar a cabo una transformación digital.

Hablaré con frecuencia de mi libro en este blog y en mis otros medios sociales, pero hoy, aparte de proporcionar los enlaces al libro en la editorial ExLibric (donde lo he publicado) y en Amazon, me limitaré a dejaros con este vídeo promocional.



¿Donde encontrarlo?

Puedes encontrar el libro en:


miércoles, 22 de mayo de 2019

Ética para Web Scraping

Últimamente oímos hablar de ética en relación con la tecnología, muy especialmente con la Inteligencia Artificial. Y es afortunado que así sea porque la ética es un fundamento de nuestra sociedad y porque, en efecto, algunos avances científicos y tecnológicos desafían tanto el 'status quo' y abren posibilidades tan desafiantes, que conviene acompañarlas, precederlas a ser posible, por un debate ético y una previsión legal.

Pero aunque no me sorprende el oír hablar de ética en contextos como la inteligencia artificial o la edición genética, jamás se me hubiera ocurrido plantear ética en relación con una tecnología tan poco llamativa, en cierto sentido tan 'menor', como es el Web Scraping, es decir, la  utilización de robots para la extracción de información de pantallas de aplicaciones web e incluso interacción con dicha aplicación, una de las tecnologías que habitualmente encontramos integradas en las soluciones de Automatización Robótica de Procesos (RPA).

Por eso me ha llamado la atención el encontrarme unas breves consideraciones éticas en el libro 'Web Scraping with Python' de Ryan Mitchell, cuya lectura estoy finalizando. La pequeña disertación ética se produce ya bastante avanzado el libro cuando la autora se dispone a enseñarnos cómo saltarnos algunas de las protecciones contra robots (contra el web scraping) que algunos.portales habilitan. Y como paso previo, y creo que le honra, se pregunta si es ético enseñar a saltarse esas protecciones. La respuesta, como el lector se puede imaginar, es afirmativa, es decir, es lícito enseñar las técnicas para rodear esas protecciones. Y para ello, aporta tres motivos:

  • En primer lugar, porque hay situaciones en que no sólo es permisible, sino casi aconsejable desde el punto de vista ético utilizar Web Scraping. La autora menciona un trabajo real en que intervino en que unos portales web estaban publicando datos personales de clientes (nombres, direcciones, números de teléfono, etc) sin conocimiento ni consentimiento de esos clientes. La autora fue contratada por algunos de los perjudicados para extraer esa información y contribuir a una demanda formal.

  • Porque, de forma indirecta, enseñar a saltarse las protecciones contra los robots contribuye también a que los desarrolladores de portales puedan protegerse mejor frente a ataques maliciosos. La autora no le da ese nombre pero sería algo así como una especie de 'hacking ético' hecho con base en enseñanza.

  • Finalmente, la autora muestra su convencimiento de que cualquier actividad de divulgación y enseñanza produce al final un saldo neto positivo para la sociedad.

¿Son suficientemente firmes estos argumentos? ¿Los compartiría todo el mundo?

No estoy seguro, pero bueno es que, como mínimo, se planteen esas consideraciones éticas.

A lo mejor deberíamos hacerlo más a menudo.

lunes, 20 de mayo de 2019

Un framework para process mining

El process mining, es decir, el análisis y la gestión de procesos de negocio con base en información de la ejecución de esos procesos, es un campo bastante complejo, lleno de álgebra y algoritmia aunque, en el fondo, la idea que se persigue es bastante fácil de entender.

En su libro 'Process Mining. Data Science in action' de Wil van der Aalst, el autor hace una excelente descripción de todos los conceptos y algoritmos usados en process mining hasta la fecha.

Sin embargo, es cierto que, aun siendo un libro excelente, a veces resulta farragoso y difícil de seguir por la abundancia de formalismos y de algoritmia.

Quizá por eso el propio autor, hacia la mitad de la obra, nos proporciona un 'framework' que sirve de marco general para entender todo el campo del process mining y para agrupar y resumir de alguna manera todo lo visto hasta ese momento.

Por lo ilustrativo y clarificador que resulta, me ha parecido interesante traerlo a este blog. El 'framework' es el que se ilustra en la figura inferior (propiedad del autor y de Springer):



En la parte superior de ese framework se sitúa el 'mundo real' ('world'), un mundo real que es donde existen organizaciones y personas que ejecutan procesos de negocio.

Esos procesos de negocio, en mayor o menor medida están soportados por unos sistemas de información ('information system(s)'. Esos sistemas de información son el origen o procedencia ('provenance') de unos datos en forma de trazas ('logs').

Esas trazas, a su vez, pueden tomarse de instancias o casos de procesos ya finalizados ('historic data') o bien de instancias o casos aún en curso ('current data'). El primer caso nos servirá para lo que se conoce como análisis 'post-mortem' (para, por ejemplo, a nivel individual conocer qué fue mal en una instancia o, a nivel agregado, obtener medidas de los procesos) mientras que en el segundo caso hablaríamos de un análisis 'pre-mortem' que nos debería servir para monitorizar y guiar la ejecución.

En la parte inferior de la figura se observan los modelos de proceso de negocio. Unos modelos que incorporan la información de flujo ('control-flow'), de los datos y reglas de negocio ('data/rules') así como de la organización que los ejecuta y los recursos que utiliza ('resources/organization').

Estos modelos de negocio pueden ser modelos teóricos o 'de jure' es decir los procesos que en teoría se están o deberían estar ejecutando, y los procesos 'de facto' que son los que en la realidad suceden. Las dos flechas, una ascendente y otra descendente, nos hablan de cómo se relacionan los modelos con el mundo real. Los modelos 'de iure' intentan moldear la realidad e influir en ella, es decir, que los procesos que suceden en el mundo real se correspondan con el modelo de proceso teórico (flecha ascendente). Los modelos 'de facto' intentan recoger y representar lo que sucede en el mundo real (flecha descendente).

En la zona media, entre los logs y los modelos de procesos, se desarrolla la actividad del process mining propiamente dicho. Y ahí tenemos las siguientes actividades, recorriendo la figura de derecha a izquierda:

  • 'Cartography:' Se ocupa de describir la realidad, realizando un cierto nivel de abstracción sobre ella. En cierto sentido, se trata de un bloque que mira hacia el pasado. Incluye tres actividades:

    • 'Discover:' quizá lo más representativo del process mining, a saber, deducir el modelo de procesos a partir de la información de las trazas.

    • 'Enhance:' Es decir, revisión de modelos de procesos existentes, bien para hacer correcciones en los mismos, bien para enriquecerlos de alguna manera.

    • 'Diagnose:' En realidad no exactamente process mining, sino análisis de procesos más tradicional. Se ocupa de diagnosticar los procesos de negocio detectando cuellos de botella, ineficiencias o, en general, posibilidades de mejora.

  • 'Auditing' Ahora miramos al presente de los procesos de negocio con la idea, fundamentalmente, de asegurarnos que dichos procesos se ejecutan conforme a lo diseñado y previsto.

    • 'Detect:' Compara los procesos que se están ejecutando con los modelos de proceso 'de jure' y, en caso de detectar inconsistencias, se eleva una alarma o aviso.

    • 'Check:' Compara datos 'post-mortem' de los procesos con los modelos 'de jure' con el objetivo de detectar desviaciones y medir el nivel de cumplimiento 'compliance'.

    • 'Compare:' Compara los modelos 'de facto' con los modelos 'de iure' aunque ahora sin utilizar ya directamente los logs.

    • 'Promote:' Con base en el análisis anterior se `puede promover que algunos aspectos del modelo 'de facto' pasen a los modelos 'de iure', incorporándose como buenas prácticas.

  • 'Navigation:' Finalmente, ahora nos enfocamos al futuro con la idea, por ejemplo, de hacer recomendaciones.

    • 'Explore:' Se comparan los casos en ejecución con las ejecuciones pasadas del mismo modelo de proceso

    • 'Predict:' Combinando la información de los casos actualmente en ejecución con los modelos de proceso, se pueden hacer predicciones respecto al futuro.

    • 'Recommend:' La misma información usada para predecir el futuro se puede usar para emitir recomendaciones (por ejemplo, para intentar minimizar tiempos y/o costes).

La verdad es que visto el framework y entendiendo sus conceptos resulta mucho más sencillo de entender, casi trivial, este, por otro lado, bastante farragoso, campo del process mining.

viernes, 17 de mayo de 2019

Los algoritmos de Optical Character Recognition con Arindam Chaudhuri et al.

'Optical Character Recognition for different languajes with soft computing' es una obra muy especializada y técnica sobre reconocimiento óptico de caracteres. Su objetivo es mostrar el trabajo llevado a cabo por el equipo que redacta el libro y con el que quieren demostrar que las técnicas de soft computing son más efectivas que los algoritmos tradicionales en la tarea del reconocimiento de textos.

El libro se estructura en diez capítulos, siendo el primero '1. Introduction' una explicación de en qué consiste el propio libro.

El segundo capítulo, '2. Optical Character Recognition Systems' es, para mi gusto, el capítulo más interesante y el que contiene la información que realmente estaba buscando al leer este libro, a saber, el funcionamiento y algoritmia ligada al reconocimiento óptico de caracteres. Se nos proporciona algo de background y perspectiva histórica para luego repasar las diferentes técnicas siguiendo el esquema secuencial de aplicación: escaneado óptico, segmentación de localización, preprocesado, segmentación, representación, extracción de características, entrenamiento y reconocimiento y postproceso.

El tercer capítulo '3. Soft Computing Techniques for Optical Character Recognition Systems' es, sin embargo, el capítulo que entiendo principal desde el punto de vista de los autores, puesto que en él se explican las técnicas de soft computing que los autores defienden como más eficaces. Nos hablan de conjuntos difusos ('fuzzy sets'), algoritmos genéticos, la transformada de Hough, variantes difusas del Perceptrón Multicapa o los Support Vector Machines, etc

A continuación en los siguientes capítulos se aplican las técnicas descritas en el tercer capítulo a diferentes idiomas y se analizan los resultados. Siguiendo un esquema muy parecido, se desarrollan los siguientes capítulos:
  • '4. Optical Character Recognition for English Language'
  • '5. Optical Character Recognition for French Language'
  • '6. Optical Character Recognition for German Language'
  • '7. Optical Character Recognition for Latin Language'
  • '8. Optical Character Recognition for Hindi Language'
  • '9. Optical Character Recognition for Gujrati Language'
En todos ellos se proporciona una breve introducción sobre el idioma en si, sobre alguno de los retos que plantea desde el punto de vista de OCR, las fuentes de datos usadas, qué técnicas y cómo se han aplicado y los resultados obtenidos.

Finaliza el libro con el capítulo '10. Summary and future research' que, siguiendo el estilo académico habitual, resume los hallazgos y plantea siguientes líneas de trabajo.

Un libro de alta calidad pero también muy, muy duro de leer, pensado para estudiantes e investigadores muy especializados y con un gran dominio de la algoritmia y mucho interés en ella.

Arindam Chaudhuri

(Fuente: Elaboración propia)

Arindam Chaudhuri
Experto en Pattern Recognition y Machine Learning, actualmente trabaja como ingeniero de investigación en Google Tokio donde se centra en las aplicaciones de negocio del Machine Learning.

Anteriormente, y durante dos años, fue profesor de 'Computer Science' en la NIIT University cercana a Delhi, India.

Arindan Chauduri tiene un doctorado en Computer Science por la Netaji Subhas Open University de Bengala.

Ficha técnica:

AUTOR: Arindam Chauduri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh.
EDITORIAL: Springer
AÑO: 2019
ISBN: 978-3319843575
PAGINAS: 268

Artículos de este blog relacionados

lunes, 13 de mayo de 2019

Dos pensamientos sobre la colaboración entre humanos y robots


No quisiera con el título de este artículo generar unas expectativas desmedidas. No voy a hacer un tratado completo sobre la relación entre humanos y robots, por más interesante que me resulte el tema. Ni voy a analizar de manera profunda las implicaciones técnicas, sociológicas, legales o laborales que esta colaboración implica. 

Lo que quiero es, únicamente, compartir des pensamientos que, de forma espontánea vinieron a mi la semana pasada a propósito de esa colaboración entre humanos y robots.

El disparador de ese pensamiento fue la inspiradora experiencia que supuso acudir a la Global Robot Expo en su sección WeAreCOBOTS dedicada a la robótica colaborativa. Allí pude atender a diversas ponencias y mesas redondas y, sobre todo, lo que más deseaba, asistir a una demo y recibir algunas explicaciones sobre un robot colaborativo de Universal Robots.

Los robots colaborativos son robots en general de dimensiones, peso y fuerza más reducidos que los robots industriales habituales y eso los hace aptos para trabajar de forma no aislada en una celda sino cercana a los humanos y eventualmente interaccionando con ellos.


Primer pensamiento: paralelismo entre robots físicos y robots software


Y se me ocurrió establecer el paralelismo entre esos robots físicos colaborativos y los robots que se manejan en las soluciones RPA ('Robotic Process Automation'), una tecnología a la que he dedicado mucho tiempo en el último año y que crea unos robots software capaces de realizar tareas hasta ahora realizadas por humanos, especialmente tareas repetitivas con altas dosis de interacción con sistemas de información y documentos.

Resulta que en RPA se distinguen dos tipos de robots: los atendidos y los no atendidos. Los no atendidos funcionan de manera completamente autónoma, ya sea de manera programada o reaccionando ante eventos, pero sin intervención de personas. Por su parte, los robots atendidos son invocados por las personas como cualquier otro programa y, de esta forma, las tareas se realizan conjuntamente entre el humano y el robot.

Y me parece estimulante observar el paralelismo del robot industrial tradicional con el robot no atendido del mundo software. Y, quizá más interesante, entre los robots colaborativos o cobots, tan de moda en la automatización industrial y los robots atendidos de RPA y como en ambos se tiende a una relación colaborativa entre los humanos y los robots. 

Esto es sólo un síntoma, un caso concreto, pero detecto paralelismos más profundos e interesantes, que seguramente desarrolle en este momento en este blog o en algún otro ámbito entre esa robotización hardware y software, entre el mundo industrial y el mundo de los servicios y la oficina.


Segundo pensamiento: una razón para la colaboración humano-robot.


El segundo pensamiento me surgió cavilando brevemente sobre el porqué colaborar humanos y robots. Por qué parece estar tan de moda la relación de colaboración entre humanos y robots. Es un tema que se presta a abstracciones, idealismos y demagogias y a teorías de naturaleza filosófica, sociológica, laboral e incluso ética.

Pero a mi se me ocurrió una razón mucho, mucho más prosaica e inmediata. Sin excluir que pueda haber otros motivos más complejos o elevados, mi explicación más inmediata es muy simple: recurrimos a la colaboración humano-robot porque todavía hay muchas tareas que no somos capaces de automatizar completamente mediante robots.

Así de simple.

Probablemente, desde un punto de vista meramente económico y de negocio, fundamentalmente en lo relativo a la eficiencia, rapidez e incluso la calidad, elegiríamos la automatización completa si fuese posible. Pero, como aún no lo hemos conseguido, usamos robots para al menos automatizar lo que sea posible y los hacemos colaborativos para que puedan interaccionar de forma sencilla y segura con humanos y de esa forma, integrarlos de forma ventajosa en la cadena productiva y en los procesos de negocio a la espera de que sean capaces de automatizar de forma completa esa cadena o proceso.


*****

Ya lo anunciaba al inicio del artículo. Se trata de dos reflexiones sencillas y apresuradas sobre un tema que merece mucho más estudio, reflexión y debate...pero me han parecido al menos suficientemente interesantes como para compartirlas con mis lectores...


viernes, 10 de mayo de 2019

Algoritmos genéticos para Process Mining

Tras dos artículos seguidos dedicados a los algoritmos genéticos, uno en que simplemente me preguntaba si estaban resurgiendo y otro en que explicaba su funcionamiento, cierro hoy esa mini-serie hablando de una de las aplicaciones recientes que me ha sido dado observar de uso de este tipo de algoritmos: su empleo como una técnica de Process Mining para el descubrimiento de procesos de negocio.

Recuerdo, escuetamente, que Process Mining son un conjunto de técnicas para obtener información de procesos de negocio a partir de las trazas ('logs') dejadas por los sistemas de información en que se apoyan esos procesos de negocio.

Y recuerdo también que una de las tareas que se pueden hacer con 'Process Mining', probablemente la más representativa y también la más compleja, es el descubrimiento de procesos de negocio, es decir, a partir de esos logs, lograr deducir la estructura de actividades, conexiones y bucles que definen ese proceso de negocio.

En su libro 'Process Mining. Data science in action', Wil van der Aalst nos describe el Genetic Process Mining como una técnica avanzada para el descubrimiento de procesos. Antes de leer lo que sigue, y para el lector que no recuerde cómo funcionan los algoritmos genéticos, le recomiendo repasar mi artículo anterior '¿Cómo funcionan los algoritmos genéticos?'

Y ahora sí, pasamos a ver su aplicaciones en process mining. Y nos apoyamos en la siguiente figura procedente de la obra y autor citados: 




Los pasos serían los siguientes:

  • Inicialización: Partiendo de los logs (que contienen registros con instancias de actividades correspondientes a instancias de procesos) se construye la población inicial ('initial population'). En el caso que nos ocupa, cada individuo o fenotipo sería un modelo de proceso de negocio expresado como una red de Petri, un diagrama BPMN o algo similar.

  • Selección: Se realiza la evaluación obteniendo para cada cada fenotipo (modelo de negocio candidato) el valor de adecuación ('fitness value'). En el caso del process mining dicho valor de adecuación mide hasta qué punto el modelo de proceso de negocio explica los logs, es decir, su ejecución sería capaz de producir esos logs. Un ejemplo muy sencillo (aunque no muy eficaz) de esa evaluación es calcular qué proporción de las trazas pueden ser replicadas por el modelo de proceso.Las funciones reales son más sofisticadas, pero no vamos a entrar en ello aquí. En cualquier caso, tras realizar la evaluación tenemos un valor de adecuación de cada modelo de proceso de la población. Ahora seleccionamos los mejores, los que tengan un valor de adecuación más alto. Esos individuos seleccionados, serán los procesos de negocio 'padres' de la siguiente generación.

  • Reproducción: Se aplican dos de los operadores genéticos de los que ya hablamos en el anterior artículo: el cruce ('crossover') y la mutación ('mutation'). El cruce, como su nombre indica, mezcla el material genético, en este caso secciones del modelo de proceso, para generar un modelo de proceso nuevo que tiene partes procedentes de cada uno de los padres. No es esta una tarea fácil pero en la obra citada se aporta algún ejemplo de cómo hacer esto. Mediante la mutación, además, se producen algunos cambios aleatorios que, en este caso, consisten en introducir alguna nueva relación causal. 

  • Con esto ya hemos cerrado la primera iteración. A partir de ahí se repiten todos los pasos, con lo que la calidad de cada generación debería ir mejorando y se actúa de esta forma hasta que se alcance un umbral de adecuación de proceso prefijado. 

Lo descrito constituye el esquema general que, como se puede ver, es una aplicación bastante inmediata de la estructura general de un algoritmo genético. Sin embargo, y aunque no lo hemos explicitado mucho, su uso real implica especificidades tanto del hecho de tratar con modelos de proceso así como decisiones específicas como la forma de representar el modelo de proceso, la forma de crear la población inicial, la función de evaluación concreta a aplicar, la estrategia concreta de selección a usar, el mecanismo concreto de cruce, el mecanismo concreto de mutación, etc

Parece un poco mágico que mediante los mecanismos descritos se pueda deducir un modelo de proceso de negocio a partir de unas simples trazas pero, aparentemente, igual que en la naturaleza la genética y la selección natural han conducido a una evolución exitosa, los algoritmos genéticos aplicados a la función de descubrimiento de procesos dentro del process mining parecen haber dado frutos satisfactorios.

miércoles, 8 de mayo de 2019

¿Cómo funcionan los algoritmos genéticos?

En el artículo anterior, me preguntaba si estaba ocurriendo algo con los algoritmos genéticos, si el hecho de que, tras años 'sin saber nada de ellos', ahora me los hubiese encontrado en muy breve plazo en dos lecturas actualizadas, significaba algún tipo de resurgimiento. Aunque en el artículo esbocé muy someramente en qué consistían, me quedé con las ganas de hacer una explicación básica pero algo más detallada sobre cómo funcionan estos algoritmos genéticos.

Y esa explicación sencilla es el objeto de este artículo. Y como apoyo tomo una de las dos lecturas que me 'avisaron' de ese posible renacimiento de los algoritmos genéticos, a saber, el libro 'Optical Character Recognition Systems for Different Languages with Soft Computing' de Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh. En el tercer capítulo de la citada obra se repasan diferentes algoritmos del campo del 'soft computing' que son aplicables al reconocimiento óptico de caracteres (OCR). Y como los algoritmos genéticos se encuadran en ese concepto, los autores hacen una breve revisión de conceptos.

Para ello, se apoyan en la siguiente figura (NOTA: la propiedad intelectual de esa figura es de los autores y la editorial Springer).


Los algoritmos genéticos fueron inicialmente propuestos por John Holland. En ellos, existe una población ('population') de soluciones candidatas al problema a resolver. Cada una de las soluciones posibles que conforman esa población se denomina individuo, criatura o fenotipo. Cada una de estos fenotipos está caracterizado por una serie de características que se denominan cromosomas y que, aunque depende del problema y algoritmo concretos, se intentan representar como cadenas digitales de unos y ceros.

Sobre cada población se aplica una función de evaluación ('evaluation') para obtener el valor de adecuación ('fitness value') de cada fenotipo como solución del problema, es decir, hasta qué punto resuelve o se acerca a resolver el problema que estamos tratando.

A su vez, cada población, una vez evaluada, y suponiendo que aún no damos por resuelto el problema,  se transforma, es decir, evoluciona, a una nueva población mediante la aplicación de los operadores genéticos ('genetic algorithm operators'). Estos operadores son reproducción ('reproduction'), cruce ('crossover') y mutación ('mutation'). Mediante la reproducción generamos individuos nuevos. Mediante el cruce se mezclan los materiales genéticos, es decir, creamos un nuevo individuo o fenotipo que usa parte de las características de uno de sus padres y parte de las características del otro. Mediante la mutación introducimos variaciones aleatorias en esos cromosomas, es decir, en las características del fenotipo, individuo o solución candidata.

¿Cómo funciona?

Para verlo nos apoyamos en la siguiente figura (NOTA: de nuevo, la propiedad intelectual de esa figura es de los autores y la editorial Springer).



  • Generamos una serie de soluciones candidatas (población inicial) generalmente al azar.A partir de ahí funcionamos en bucle hasta alcanzar la solución perseguida.

  • Primero aplicamos la función de evaluación a la población y encontramos el valor de adecuación de cada uno de sus individuos. Si alguna solución es suficiente, finalizaría el algoritmo. Si no, se seleccionan los individuos que tienen un mejor valor de adecuación.

  • Con esos individuos seleccionados se realiza la reproducción y el cruce, para obtener nuevos individuos hijos.

  • Al conjunto de individuos hijos se le aplican mutaciones aleatorias.

  • Hecho esto, tenemos ya una nueva población, que pasaría a evaluarse y así continuaría el bucle.

Como se puede apreciar los algoritmos genéticos están claramente inspirados en lo que sabemos de genética y selección natural. Esa inspiración y paralelismo se refuerzan utilizando términos procedentes, en efecto, de la biología y la genética.

De todas formas, no perdamos de vista que son algoritmos matemático-informáticos, unos algoritmos no especialmente eficientes (más bien, bastante poco eficientes) pero que pueden producir soluciones que no encontraríamos mediante algoritmos más clásicos y deterministas.

lunes, 6 de mayo de 2019

¿El retorno de los algoritmos genéticos?


Durante los primeros años de la Inteligencia Artificial  (casi podríamos decir, incluso, que durante las primeras décadas) se intentaron diversas técnicas, estrategias y algoritmos, muy diferentes entre si, pero que buscaban encontrar la manera de crear esa inteligencia en las máquinas.

A día de hoy,  la resurgida inteligencia artificial se enfoca mucho en el Machine Learning y este, a su vez, en los enfoques conexionistas (redes neuronales, con frecuencia ampliadas con el enfoque de Deep Learning), estadísticos o de tratamiento del lenguaje natural.

Parecen  olvidados conceptos, entonces dominantes como, son la representación del conocimiento (ligada a la inteligencia artificial de orientación simbólica), los sistemas expertos (elicitación de las reglas que usan los expertos humanos para resolver problemas complejos y aplicación de esas reglas mediante un motor de inferencia), la lógica difusa ('fuzzy logic') álgebra que maneja etiquetas cualitativas, en lugar de números o valores claros de verdadero / falso)… y de lo que en este artículo hablamos: los algoritmos genéticos.

¿Qué son los algoritmos genéticos?

Debo confesar que nunca los he llegado a estudiar en profundidad, quizá porque es un enfoque que nunca estuvo del todo de moda y, probablemente, porque nunca ha obtenido grandes éxitos, al menos a nivel comercial. En cualquier caso, sí puedo decir que los algoritmos genéticos son un tipo de algoritmos que enfocan la resolución de problemas mediante una estrategia inspirada en la genética y la selección natural. 

Con esa idea, lo que hacen los algoritmos genéticos es buscar la solución a un problema generando 'mutaciones', es decir, pequeños cambios más o menos aleatorios en la soluciones posibles, y comprobando si las nuevas soluciones o el nuevo algoritmo mutado, es mejor que lo teníamos antes. Si es así, 'sobrevive' y la mutación permanece; y si no es así 'perece'

Cabe entender que los algoritmos genéticos pueden encontrar su aplicación en problemas muy complejos para los cuales somos incapaces de encontrar reglas claras sobre cómo resolverlos con lo que, de alguna forma, aplicamos una especie de 'ensayo y error' hasta acertar o, al menos, encontrar una solución satisfactoria. También cabe pensar, o al menos yo así lo entiendo, que los algoritmos genéticos son más bien una filosofía para enfocar la resolución de problemas pero que, en realidad, pueden caber dentro de esta etiqueta, una multiplicidad de algoritmos.

Sea como sea, la idea de los algoritmos genéticos tiene, al menos, 30 años y, aunque parecen haber encontrado algunos campos de aplicación, lo cierto es que nunca han alcanzado 'la fama', nunca parece haberse convertido en una tecnología 'mainstream', que se dice.

Personalmente, hace mucho que no encontraba referencia a ellos, a pesar de leer abundante literatura en tecnologías relacionadas con la inteligencia artificial o, incluso, plenamente dedicadas a ella.

Y sin embargo...

Y sin embargo, en el espacio de poco más de un mes, me he encontrado dos referencias a los algoritmos genéticos. En un caso los he visto mencionados como una de las posibles técnicas de 'soft computing' a utilizar en OCR (Optical Character Recognition). En efecto, en el libro 'Optical Character Recognition Systems for Different Languages with Soft Computing' de Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh, se menciona a los algoritmos genéticos usados como mecanismo de extracción de características.

El otro caso es en el libro 'Process Mining. Data science in action' de Wil van der Aalst en que se menciona los algoritmos genéticos para la identificación de procesos de negocio a partir de logs.

¿Es esto casual? ¿No son más que aplicaciones residuales de los algoritmos genéticos que, por azar, han llegado hasta mi de forma concurrente o hay algo más?

¿Es que los algoritmos genéticos se han perfeccionado o se ven beneficiados por el aumento de la capacidad de computación?

¿Están hallando nuevas aplicaciones o métodos? ¿Son más eficaces? O, de nuevo, estamos sólo ante una coincidencia.

¿Asistimos, en fin, al retorno de los algoritmos genéticos? ¿O es que nunca se fueron del todo?

Por si acaso, desde ya, activo las 'antenitas' de detección de tendencias...

viernes, 3 de mayo de 2019

Ética e Inteligencia Artificial con José Ignacio Latorre

'Ética para máquinas' es un libro interesantísimo y muy oportuno, que se adentra, no sin asumir algún riesgo, en las implicaciones más importantes de la inteligencia artificial y las máquinas inteligentes. Y lo hace con un enfoque multidisciplinar, que aúna la tecnología (aunque tratada de forma muy, muy superficial), la filosofía, la ética, el derecho, la sociología... en una visión tan híbrida, con tanto mestizaje de conocimientos que, realmente, hacen a este libro de muy difícil clasificación aunque de apasionante y absorbente lectura.

Comienza con un capítulo introductorio, 'El legado de los humanos' en que adopta una cierta perspectiva histórica examinando cómo ha evolucionado la humanidad en cuanto a su propia inteligencia y en cuanto a su relación con las máquinas, y concluye que nuestra inteligencia se potencia cuando es ética y que, por tanto, es precisamente la ética el legado que los humanos podemos dejar a unas máquinas que nos acabarán superando en inteligencia.
  • '1. MÁQUINAS SIN ALMA:' Revisa la evolución de las primeras máquinas, aquellas que no exhibían inteligencia y, por tanto, tampoco nada que pueda ser considerado un alma. 

    • 'Fuerza bruta:' Utilizando como punto de partida un recuerdo a la película '2001 - Una odisea del espacio' y su famoso monolito, recorre algunas de las máquinas tradicionales que el hombre ha creado hasta el siglo XX y que le han servido de alguna forma para potenciar sus capacidades físicas: coches, relojes, armas, etc

    • 'Cálculo bruto:' Arrancando ahora con el ábaco, repasa algunas creaciones utilizadas para el cálculo y la computación, llegando hasta los ordenadores y logros de la inteligencia artificial como Deep Blue.

    • 'Máquinas sin alma:' Comenta el declive físico y posiblemente intelectual que el uso generalizado de máquinas trae como consecuencia en el ser humano, así como el incremento del consumismo. De cara al futuro, aboga por la toma de decisiones responsable sobre el futuro de las máquinas.


  • '2. MÁQUINAS QUE PARECEN INTELIGENTES:' Se adentra en tecnologías más modernas y que exhiben realmente inteligencia, especialmente lo que es la aplicación de la inteligencia artificial en sus diversas variantes. 

    • 'Máquinas que aprenden:': Se centra en tecnologías que incluyen alguna forma de aprendizaje y, así, se adentra en inteligencia artificial, data mining, sistemas expertos y, tras un breve alto para hablar sobre el cerebro humano, aborda las redes neuronales y los algoritmos genéticos.

    • 'Máquinas muy listas:': Prolongación un poco del capítulo anterior habla del tratamiento del habla, del deep learning y de experiencias como el sistema que juega al Go.

    • 'Máquinas que inventan:': Un breve capítulo para hablar de casos en que las máquinas van un poco más allá, sin ayuda humana, creando contenidos o entrenándose con otras redes neuronales artificiales, en lugar de con datos proporcionados por humanos.

    • 'Máquinas que deciden:': Habla de la capacidad de decidir y de cómo algunas tecnologías empiezan a incorporar o podrían llegar a incorporar esa capacidad: los vehículos autónomos, diagnóstico de enfermedades, justicia artificial, etc

    • 'Máquinas humanoides:': habla de autómatas y androides, es decir, casos en que las máquinas adoptan una apariencia humana o bien situaciones híbridas humano-máquina como los cyborg.

    • 'Miedo a las máquinas inteligentes:' comenta algunos errores cometidos por algoritmos y algunas actitudes negativas que genera la inteligencia artificial como son la reticencia o la despreocupación.


  • '3. ÉTICA PARA MÁQUINAS:' realizado en las dos partes anteriores el recorrido esencial por las tecnologías y aportaciones principales de las máquinas, esta parte se centra en aquello que da título a la obra: la ética. 

    • 'Éticas pretéritas:' Primero se repasan algunas visiones éticas precedentes, como son la visión de Hume, la ética protestante, la división política entre izquierdas y derechas o las religiones y, entrelazado con todo ello, la certeza de la automatización y la desaparición de trabajos.

    • 'Principios éticos para las inteligencias artificiales:' busca algunos principios en los que apoyar una eventual ética para máquinas, recordando el imperativo categórico de Kant o las éticas de Nietzsche o Aristóteles.

    • 'Programar ética:' Menciona algunas posibilidades para conseguir una programación de la ética y así habla de la función de error y de aspectos como la trazabilidad o el código abierto.

    • 'Ética de la información:' Comenta aspectos éticos ligados a los datos como son la privacidad o los derechos a la confidencialidad o el olvido.

    • 'Justicia para las máquinas:' Situa a las máquinas como objetos de derecho con deberes y obligaciones y también plantea una roboética.

    • 'Derechos eternos:' Muy brevemente comenta algunos derechos universales como son los Derechos Humanos o el derecho a la educación.


  • '4. MÁQUINAS QUE NOS SUPERARÁN:' Mira ya hacia un futuro incierto, al momento en que la inteligencia artificial y las máquinas superen a los humanos que las hemos creado. 

    • 'La singularidad:' Un capítulo breve para comentar la singularidad, el momento en que la inteligencia artificial sea superior a la humana y pueda asumir su propia evolución.

    • 'Tránsito:' Dando por cierto que esa superación de los humanos por las máquinas se producirá, habla del proceso transitorio y cómo hacer ese relevo.

    • '¿Humanos?:' explora las direcciones en que puede evolucionar el ser humano a partir de esa singularidad, como pueden ser la no violencia, el hedonismo y el entretenimiento, la posibilidad de llegar a prescindir del cuerpo e, incluso, se atreve a cuestionarse si los humanos seremos realmente necesarios.


  • '5. IMITAR EL ALMA:' Una última parte, muy especulativa, que se atreve a explorar, con declarada humildad, la problemática del alma. 

    • 'Almas:' Analiza cómo se ha tratado el tema del alma en el lenguaje o en culturas antiguas y parece concluir que el camino en lo que a las máquinas se refiere es, más que dotarlas o no de alma, que sean capaces de imitarla.

    • 'Value upload:' Intenta imaginarse cómo sería una inteligencia única y superior, y apuesta por una inteligencia pacífica, tolerante y consistente.

    • 'Todo es programable:' Explora la posibilidad de programar cosas como el amor o el odio, la pasión o la libertad.

A pesar de lo profundo y avanzado de los temas tratados, el lenguaje de la obra es muy, muy llano, de tono divulgativo y al alcance de casi cualquier lector con la suficiente curiosidad. No obstante, es preciso reconocer la vasta cultura y profundidad de pensamiento que se oculta detrás de esa aparente sencillez. Algoritmos y filosofía se cuentan con infinita sencillez y, sin embargo, cada frase lleva consigo una alta carga de conocimiento por parte del autor, única forma, probablemente, de conseguir esa sencillez sin faltar al rigor.

Admito que, puntualmente, aquí o allá, no he estado del todo de acuerdo en alguna explicación (principalmente del ámbito técnico) o con la forma de abordar algún tema más de futuro y que puede conducir al lector no advertido, a esa cierta fantasía y casi demagogia que rodea con tanta frecuencia a la inteligencia artificial. Aún así, los aciertos y el mérito que este libro atesora superan con tanta diferencia a esos pocos detalles, que no puedo dejar de aconsejar la lectura de esta 'Etica para máquinas'. Es muy asequible, es muy ameno, es muy interesante y hace pensar... ¿Qué más se puede pedir?

José Ignacio Latorre

(Fuente: Ligera elaboración propia de su biografía en Centre de Cultura Contèmporanea de Barcelona)

José Ignacio Latorre
José Ignacio Latorre es catedrático de Física teórica de la Universidad de Barcelona y director del Centro de Ciencias de Benasque Pedro Pascual.

Se doctoró en teoría de la cromodinámica cuántica de las partículas elementales. Estudió un posdoctorado en el MIT en USA y, posteriormente, en el Instituto Niels Bohr de Copenhague. Actualmente es catedrático de física teórica en la Universitat de Barcelona y Long Term Visiting Professor en el Center for Quantum Technologies de Singapur.

Ha investigado en diversas áreas de partículas elementales, en aplicaciones de inteligencia artificial y en la teoría de la información cuántica. Lidera el grupo Quantic para construir un ordenador cuántico en el Barcelona Supercomputing Center. También ha escrito varios libros de divulgación, como 'La nada', o 'El vacío cuántico' y 'Cuántica, tu futuro en juego'. Es el director gerente del Centro de Ciencias de Benasque Pedro Pascual. Participa activamente en la difusión de la mecánica cuántica tanto en el mundo empresarial como en el de las humanidades. Finalmente, ha producido dos documentales, uno de los cuales recoge los recuerdos de Roy Glauber, hasta hace poco el último científico vivo del Proyecto Manhattan. Con dos amigos de Alicante, elabora un vino buenísimo.

Puedes saber más del autor visitando su página personal o siguiéndole en Twitter donde se identifica como @j_i_latorre

Ficha técnica:

EDITORIAL: Ariel
AÑO: 2019
ISBN: 978-8434429659
PAGINAS: 320


miércoles, 1 de mayo de 2019

La esencia del Process Mining


Si exceptuamos todo lo que tiene que ver con las tecnologías de automatización, probablemente el process mining sea el concepto más actual y puntero que nos podamos encontrar en materia de BPM, 'Business Process Management'.

Para entenderlo mejor, me encuentro leyendo poco a poco la que probablemente sea la fuente más autorizada al respecto, el libro 'Process Mining. Data Science in action' de Wil van der Aalst. Se trata de un libro muy serio, muy bien organizado y muy riguroso, aunque no del todo sencillo de leer, por el gran uso de notación algebráica que el autor emplea, probablemente en busca de ese rigor y de la capacidad de tratamiento matemático y algorítmico.

No es demasiado sencillo, por tanto, entresacar mensajes nítidos y atractivos que traer a colación a este blog. Sin embargo, y para el lector que no conozca en exceso lo que es Process Mining, pero tenga interés en ello, me ha parecido interesante contar el workflow que el autor aporta y que se resume en la siguiente figura (NOTA: la propiedad intelectual de la imagen corresponde al autor del libro, Will van der Aalst, y a la editorial, Springer):


Con base en este figura, no resulta demasiado difícil entender el flujo que sigue el process mining y, de paso, su esencia:

  • Process Mining no deja de ser una forma de Data Mining y, por tanto, trabaja sobre datos. Esos datos provienen de diversas fuentes ('data sources'), normalmente trazas ('logs') procedentes de sistemas que automatizan al menos parcialmente procesos (Sistemas de Gestión Empresarial, Business Process Management Systems (BPMS), etc).

  • Lo primero que hay que hacer es extraer esos datos de esas diversas fuentes. Para ello, se puede hacer de forma directa, o bien recurrir a un almacenamiento intermedio, un datawarehouse sobre el que se vuelcan datos procedentes de esas fuentes aplicando los tradicionales mecanismos ETL ('Extraction, Transformation and Load')

  • Ya sea directamente de las fuentes o del Datamart, se procede a una extracción ('extract') de los datos que se van a utilizar para el estudio de procesos que aplique en cada caso.

  • Con ello se construyen unas trazas (logs) que integran eventos sin filtrar pero, eso sí, uniendo los datos de diversas fuentes y proporcionándoles un formato común como puede ser el XES ('eXtensible Event Stream'), un caso particular de XML usado para reflejar, como el nombre indica, flujos de eventos (que es lo que son, ni más ni menos, las trazas que se usan como punto de partida en Process Mining).

  • Sobre esas trazas ya uniformizadas se realiza el filtrado de eventos según convenga para el estudio a realizar y obtenemos unas trazas de eventos filtrados, 

  • A partir de ahí ya se aplican los algoritmos o técnicas que convengan para trabajar en una de las tres líneas que ya comentamos en un artículo anterior: descubrimiento del proceso, estudios de conformidad o enriquecimiento.

Hablamos de mecanismos farragosos, especialmente en lo que a la búsqueda, extracción y homogeneización de datos se refiere, y complejos, especialmente en el caso del descubrimiento de procesos. Sin embargo, el esquema, la idea principal, creo que es sencilla de entender con el esquema mostrado.