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. 

viernes, 26 de abril de 2019

Una panorámica de la tecnología de vehículo autónomo con Shaoshan Liu y su equipo

Sus autores afirman que 'Creating autonomous vehicle systems' es la primera visión técnica completa del mundo de la conducción autónoma y puede que estén en lo cierto puesto que, cuando buscaba una referencia biblográfica para introducirme en el tema, éste era casi el único libro que aparecía. Lo cierto es que 'Creating autonomous vehicle systems' es un libro muy completo que nos presenta la conducción autónoma desde todas las perspectivas técnicas posibles y que nos permite alcanzar una muy buena idea del estado del arte tecnológico en este campo.

El libro no es del todo sencillo pero de todas formas, el contenido está descrito en un nivel intermedio, al alcance, si no de todo tipo de audiencias, sí al menos de lectores técnicos de nivel medio.

La obra se estructura en nueve capítulos como sigue:
  • 'Introduction to autonomous driving:' proporciona una visión de alto nivel de las tecnologías incluidas en el estado del arte actual de los vehículos autónomos e introduce una arquitectura sencilla que es importante, aparte de como esquema conceptual, porque guía la estructuración de lo que resta del libro. En esa arquitectura se habla de tres bloques: los algoritmos, los sistemas cliente (que vienen a ser el entorno de ejecución hardware y software) y la plataforma en la nube usada para tareas offline. Dentro de los algoritmos distingue entre aquellos dedicados a la sensorización y localización, los de percepción y los de decisión. Y luego hace un recorrido breve por cada una de las tecnlogías

  • 'Autonomous Vehicle Localization:' Comienza con los algoritmos en su faceta de localización que, lógica aparte, incluye también información sobre los sensores y sistemas de localización. Se habla de los sistemas de satélite GNSS ('Global Navigation Satellite Systems') que incluyen al GPS, los sistemas de enriquecimiento o aumento de los sistemas de satelite (SBAS 'Sattelite-Based Augmentation Systems'), el RTK ('Real Time Kinematics and differential GPS'), PPP ('Precise Point Positioning'), sistemas de navegación inerciales (INS, 'Inertial Navigation System') y su integración con la localización por satélite, LiDAR y Mapas de Alta definición (HD-Maps) y cómo colaboran LiDAR y HD-Maps, la odometría visual, la odometría en las ruedas y unas consideraciones finales sobre la fusión de las diferentes técnicas y ejemplos reales de uso de estas tecnologías en vehículos concretos.

  • 'Perception in Autonomous Driving:' Ataca ahora el segundo grupo de algoritmos, la percepción, que tiene como objetivo que el vehículo entienda el entorno a partir de la información en bruto proporcionada por los sensores. Se comentan diferentes aspectos como la detección, es decir, la identificación de objetos como otros vehículos, peatones u obstáculos, de la segmentación que es un enriquecimiento semántico de la detección, la profundidad, los flujos ópticos y de escena y la monitorización o 'tracking'.

  • 'Deep Learning in Autonomous Driving Perception:' expone el caso particular del uso de deep learning para la percepción. Primero explica en qué consisten las redes neuronales de convolución para luego ver las arquitecturas y usos en detección, en segmentación semántica y en flujo óptico.

  • 'Prediction and routing:' Pasamos, dentro de los algoritmos de decisión y control a hablar de la predicción y el enrutamiento, La predicción se encarga de predecir el comportamiento futuro de los objetos que rodean al vehículo mientras que el enrutamiento indica al vehículo cómo alcanzar su destino siguiendo una secuencia de calles en un mapa de alta definición. Se habla primero de los grandes rasgos de arquitectura y luego se habla de la predicción de tráfico o de la generación de la trayectoria del vehículo y se comentan algunos de los algoritmos más utilizados.

  • 'Decision, Planning and Control:' sigue con los algoritmos de decisión y control abordando ahora la decisión de comportamiento, la planificación del movimiento y el control de realimentación. En el ámbito de la decisión se comenta el modelo de Markov y el enfoque de 'divide y vencerás' basado en escenarios. Igualmente se ven los algoritmos más importantes en planificación del movimiento y en control.

  • 'Reinforcement Learning-based Planning and Control:' Se centra en el uso específico del aprendizaje por refuerzo en el ámbito de la planificación y el control. Tras explicar en qué consiste el aprendizaje por refuerzo, dando detalles de casos como el Q-Learning, se analiza su uso en el caso de la planificación y el control en conducción autónoma.

  • 'Client Systems for Autonomous Driving:' Comienza describiendo el sistema operativo para la conducción autónoma y, en concreto, el Robotic Operating System (ROS) para saltar luego a las plataformas de computación existentes incluyendo soluciones basadas en GPU, en DSP, en FPGA o en ASICs.

  • 'Cloud Platform for Autonomous Driving:' finaliza con la plataforma en la nube y habla de temas como el almacenamiento distribuido, la simulación, el entrenamiento de los modelos o la generación de mapas de alta fidelidad.

'Creating autonomous vehicle systems' es, en fin, un muy buen libro. que expone de una forma rigurosa y realista el estado del arte de los vehículos autónomos.

Shaoshan Liu

(Fuente: Traducción y ligera elaboración propia de su perfil en LinkedIn)

Shaosan Liu
Saoshan Liu es Presidente y co-fundador de PerceptIn, trayendo consigo más de diez años de experiencia en conducción autónoma y sistemas distribuidos. PerceptIn es una compañía de inteligencia visual enfocada a hacer soluciones integradas de hardware y software para sistemas robóticos autónomos.

Antes de fundar PerceptIn en 2016, era el líder en Baidu USA de los equipos de conducción autónoma y de infraestructura deep learning. Antes de unirse a Baidu, Liu estuvo trabajando en Big Data en LinkedIn y fue también miembro fundador PMC del mundialmente reconocido proyecto open source Alluxio. Y con anterioridad a unirse a LinkedIn perteneció a los equipos de kernel Windows, el de sistemas empotrados en Microsoft, el equipo de investigación sobre GPU en INRIA y los sistemas de ejecución en Intel Research.

El doctor Liu tiene un doctorado y un grado en ingeniería de la computación por la Universidad de California. Fue el autor principal delo libro 'Creating Autonomous Vehicle Systems', la primera visión global técnica de la conducción autónoma. Tiene más de 40 publicaciones y más de 100 patentes en computación distribuida así como sistemas de conducción autónoma.

Es Co-fundador de IEEE Special Technical Community on Autonomous Driving Technologies, miembro senior del IEEE, Distinguished Visitor de la IEEE Computer Society y Distinguished Speaker de la ACM.

Puedes saber más del autor visitando su perfil en LinkedIn.

Jean-Luc Gaudiot

(Fuente: Traducción y ligera elaboración propia de su biografía en la IEEE Computer Society)

Jean-Luc Gaudiot
Jean-Luc Gaudiot, es profesor de ingeniería eléctrica y ciencias de la computación en la Universidad de California en Irvine, y ha prestado servicio durante muchos años en varias oficinas de la IEEE Computer Society. Actualmente es Vicepresidente para publicaciones y está en el Comité de Gobierno. En 2013 fue Vicepresidente para actividades educativas. Fue el primer editor jefe de IEEE Computer Architecture Letters e IEEE Transactions on Computers, presidente del IEEE Computer Society Technical Committee on Computer Architecture durante dos mandatos y presidente general de muchas conferencias relevantes. Gaudiot es miembro de la Computer Society Golden Core y fellow de IEEE y de AAAS.

Antes de unirse a la Universidad de California en Irvine en 2002, fue presidente de departamento durante seis años y profesor de Ingeniería Eléctrica en la University of Southern California. Su experiencia industrial incluye ingeniería de software en Teledyne Controls y el diseño de arquitecturas de procesamiento innovadoras en TRW. Tiene más de 250 publicaciones en el campo de la arquitectura de computadores y es doctor en ciencias de la computación por la University of California, Los Angeles.

Puedes saber más del autor visitando su perfil en LinkedIn.

Ficha técnica:

AUTOR: Saoshan Liu, Liyun Li, Jie Tang, Shuang Wu y Jean-Luc Gaudiot.
AÑO: 2018
ISBN: N/A
PAGINAS: 191

Artículos de este blog relacionados

miércoles, 24 de abril de 2019

Cuatro razones para usar Screen Scraping en lugar de un API


Uno de los  mecanismos más característicos que incluyen todas o la mayor parte de las soluciones de Automatización Robótica de Procesos para interaccionar con aplicaciones existentes, ya sean éstas aplicaciones corporativas o aplicaciones de terceros, típicamente en la web, es el Screen Scraping, es decir, la obtención de datos a partir de las propias pantallas de las aplicaciones con las que se necesita interactuar.

Es éste un mecanismo en cierto sentido atípico en la disciplina de integración de sistemas. Estamos acostumbrados a la integración de aplicaciones a partir de API ('Application Programmatic Interface') ofrecidos como servicios. Y desde hace años se propone SOA ('Service Oriented Architecture') como la mejor forma de estructurar la integración entre sistemas. Y SOA, propone, precisamente, la creación de esos servicios y esas APIs.

¿Entonces? ¿Por qué usar Screen Scraping? ¿No es ese mecanismo una suerte de rodeo a las buenas prácticas de arquitecturas¿ ¿No es casi, casi, una 'chapucita'?

Bueno, si y no.

Hay que dejarlo claro: desde un punto de vista de arquitectura de sistemas es claramente preferible, muy preferible, la integración a través de APIs y, si es posible, con arquitectura SOA. Sin embargo, a nivel práctico, cuando añadimos consideraciones de naturaleza temporal, presupuestaria y otras, hay ocasiones en que puede tener sentido, lo tiene de hecho, usar un método más relajado como es screen scraping, una de cuyas virtudes, probablemente la principal, y que traslada como propuesta de valor a RPA, es que no necesita modificar en absoluto la aplicación con que se integra, no pide ningún desarrollo concreto... ni siquiera la existencia de un API.

He iniciado la lectura del libro 'Web Scraping with Python' de Ryan Mitchell y en él, tras reconocer que las APIs son el mecanismo preferente de integración, la autora aporta cuatro razones, o cuatro situaciones en que se justifica utilizar Screen Scraping (en su caso,Web Scraping, es decir, la variante del Screen Scraping que se centra en pantallas Web). Son estas:

  • Cuando lo que se quiere es recopilar conjuntos finitos de datos de una larga serie de aplicaciones web sin que exista un API coherente en todas ellas.

  • Cuando los datos que se quieren recoger son de poco volumen y no muy habituales, por lo que las aplicaciones no disponen de un API para ello (y, añado yo, no vale la pena desarrollarla)

  • La fuente ni dispone, por alguna razón, de la infraestructura o capacidad técnica (o, añado yo, temporal o presupuestaria) para desarrollar un API.

  • Los datos a los que queremos acceder son valiosos o están protegidos y no se prevé distribuirlos de forma amplia.

Creo que, quizá, se podría añadir alguna situación más, pero la idea básica es bastante clara: en general es preferible usar APIs, pero Screen Scraping puede ser una alternativa razonable cuando, por un lado, no existe ese API y, por otro, no vale la pena desarrollarlo.

lunes, 22 de abril de 2019

Los diez elementos de un sistema OCR (Optical Character Recognition)


Aunque OCR ('Optical Character Recognition') es una tecnología en apariencia bastante antigua, está ganando cierta actualidad hoy en día en círculos especializados gracias, por un lado, a las aportaciones que recibe procedentes de los avances en Inteligencia Artificial y, por otro, a su inclusión como elemento importante de soluciones de Automatización Robótica de Procesos (RPA, 'Robotic Process Automation') o de Captura Inteligente ('Intelligent Capture').

Por eso me ha interesado revisar sus fundamentos y actualidad tecnológica para lo cual estoy leyendo el libro 'Optical Character Recognition Systems for Different Languages with Soft Computing' de Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh, uno de los pocos documentos en formato libro que parecen estar disponibles.

Aunque el libro se concentra en avances en lo que denomina 'soft computing' y que se centran en la aportación de conceptos de conjuntos difusos ('fuzzy') en los algoritmos y los resultados al aplicarlo en diversos idiomas, tiene un segundo capítulo muy interesante por la perspectiva que aporta respecto a la tecnología de OCR, que es justo lo que estaba buscando.

En concreto, los autores estructuran las tecnologías de OCR en diez pasos o elementos que se desarrollan de forma secuencial y que permiten, me parece, tener un buen marco conceptual y tecnológico. Estos son esos diez elementos:

  • Entrada de texto: Se trata simplemente, de disponer del texto en algún formato, pensemos, por ejemplo, en un texto en papel o un correo electrónico. 

  • Escaneado óptico: Ese texto, cuando es necesario, se pasa por un escáner óptico que traduce el formato analógico original en un formato digital sobre el que empezar a trabajar.

  • Segmentación de localizaciones: Este paso, primero plenamente algorítmico, intenta detectar los elementos constituyentes de una imagen y separar las partes de datos y documentos de las que recogen imágenes o figuras. Como ejemplo, los autores nos mencionan, en el caso de un correo electrónico, el separar el texto de elementos como el logo de la compañía o sellos diversos.  En este paso, además, y ya para los textos, estos se separan en letras y palabras, operando la mayor parte de los algoritmos a nivel de letra.

  • Pre-procesado: Realiza una preparación de los datos en bruto, antes de someterlo a los siguientes análisis. Así, por ejemplo, se aplica el 'smoothing' (suavizado) para eliminar ruido y defectos del escaneado. En este proceso se produce tanto el rellenado de pequeños gaps o agujeros que puedan haber quedado ('filling') como el adelgazamiento ('thinning') de algunas líneas. En el filtrado se suelen utilizar algoritmos de filtrado por convolución con diferentes máscaras. Otra técnica que se aplica en paralelo es la normalización mediante la cual se intenta conseguir caracteres de igual tamaño, inclinación y rotación. Para conseguir lo que se denomina una línea base (es decir, la línea en que virtualmente se 'apoyan' los caracteres de una línea de texto), se aplican algoritmos como 'nearest neighbor clustering', correlación cruzada entre líneas o la transformada de Hough. Para normalizar la inclinación se puede utilizar una variante de la transformada de Hough  Otros algoritmos y técnicas se aplican también para el escalado y normalización del tamaño de los caracteres o para la suavización ('smoothing') de contornos. Para hacer más fácil el tratamiento posterior se suele intentar un formato de tipo blanco o negro mediante el 'umbralizado' ('thesholding') donde da buenos resultados el método adaptativo local de Niblack. Para el adelgazamiento ('thinning') de líneas existen diversos algoritmos, algunos que actúan a nivel de píxel y otros en entornos más amplios. 

  • Segmentación: Una vez que el prepocesado nos proporciona unas imágenes del texto limpias, comprimidas, con bajo ruido y normalizadas, la segmentación trata de separar la imagen del texto en sus componentes. Para ello existen estrategias explícitas, implícitas y mixtas. En las explícitas se trabaja en propiedades a nivel carácter pero sin información de formas o clases específicas y se emplean tecnologías de análisis de disección ('dissection analysis'). Las implícitas, por su parte, se basan en el reconocimiento es decir, sí que trabaja con clases predefinidas y busca reconocer esas clases en el texto. Para ello utilizan algoritmos bien de proceso de búsqueda o bien de segmentación de características de las imágenes.  En este segundo caso se utilizan, Modelos Ocultos de Markov ('Hidden Markov Models') y otros algoritmos no de Markov reutilizando técnicas procedentes de la identificación de objetos ocultos en visión artificial. Las estrategias mixtas, evidentemente, combinan las técnicas anteriores y suelen proporcionar los mejores resultados.

  • Representación: La representación genera la información que se utilizará en el reconocimiento. En los casos más sencillos son simples niveles de gris o binarios. Existen tres tipos de métodos: transformadas globales y expansión en series ('global transformation and series expansion'), representación estadística y representación topológica/geométrica. Las primeras se basan en el hecho de que una señal continua se puede representar como una serie infinita de otras señales más sencillas. y utilizan técnicas como la transformada de Fourier, la transformada de Gabor, wavelets, momentos o la expansión de Karhunen Loeve. La representación estadística utiliza distribuciones estadísticas de diversos aspectos y se centra en características como las densidad de zonas, cruces y distancias o proyecciones. Finalmente, en las representaciones geométricas y topológicas se representan algunas propiedades de los caracteres con alta tolerancia a la distorsión y variaciones de estilo.  

  • Extracción de características: Su misión es capturar las características principales de los símbolos y realizar una clasificación. Para la extracción de características se utilizan técnicas de distribución de puntos, transformadas y expansión en series y análisis estructural. En clasificación se puede realizar mediante dos enfoques: decisión teórica, en que se emplea un vector de características para representar a un carácter y se emplean algoritmos como clasificadores de distancia, clasificadores estadísticos o redes neuronales) o métodos estructurales en que los métodos dominantes son los análisis sintácticos.  

  • Entrenamiento y reconocimiento: OCR usa ampliamente tecnología de reconocimiento de patrones ('pattern matching'), existiendo cuatro enfoques: correspondencia de plantillas ('template matching'), técnicas estadísticas, técnicas estructurales y redes neuronales, técnicas no necesariamente disjuntas ni independientes. En la correspondencia de plantillas se busca el grado de proximidad de un vectores de características entre lo que tenemos en el texto objeto de análisis y prototipos o plantillas y se presentan en variantes que buscan la correspondencia directa ('direct matching'), plantillas deformables y encaje elástico ('deformable templates and elastic matching') o correspondencia por relajación ('relaxation matching'). Las técnicas estadísticas emplean algoritmos que maximizan la probabilidad de que un patrón observado se corresponda con un modelo y emplean técnicas como análisis de clusters, modelos ocultos de Markov, razonamiento sobre conjuntos difusos, etc. Las técnicas estructurales utilizan descripciones recursivas en patrones cada vez más sencillas existiendo enfoques gramaticales y gráficos. Finalmente, las redes neuronales utilizan el enfoque conexionista empleando arquitecturas de redes como, por ejemplo, el perceptrón multicapa, o los mapas auto-organizativos de Kohonen.

  • Post-procesado: Un tratamiento final destinado a temas como agrupación (en palabras, números, etc) o detección y eliminación de errores y se apoyan con frecuencia en reglas sintácticas y diccionarios.

  • Salida de texto: Simplemente, la presentación del texto en el dispositivo o medio digital objetivo.
El listado anterior nos permite disponer de un marco de referencia para encuadrar las tecnologías y algoritmos implicados en OCR. Y también nos permite comprender hasta qué punto este tipo de soluciones, a pesar de que en cierto sentido nos hayamos acostumbrado a ellas como algo casi natural, son muy complejas y sofisticadas y con gran variedad de técnicas y algoritmos en competencia y evolución. No se trata, pues, de un campo completamente maduro y estático, sino una tecnología en evolución aunque, con frecuencia, no la percibamos de forma independiente sino integrada en soluciones más amplias.