Sergio Sancho Azcoitia

Sergio Sancho Azcoitia

Estudiante de ingeniería industrial eléctrica e investigador de seguridad en el equipo de Ideas Locas CDO de Telefónica.
AI & Data
Menos accidentes de tráfico gracias a la Inteligencia Artificial
Desde hace unos años una de las aplicaciones para la inteligencia artificial ha sido la seguridad vial. No es ningún secreto que cada día cientos de personas sufren accidentes que podrían haberse evitado. Por eso mismo nuestros coches cada vez son más inteligentes, Desde sensores que detectan cuándo el conductor se encuentra cansado y puede salirse del carril hasta el Autopilot de empresas como Tesla. Por desgracia estas tecnologías no se encuentran al alcance de todos, y por ello, gobiernos de distintos países han apostado por la utilización de cámaras de seguridad vial con inteligencia artificial para sancionar a los conductores que utilizan el móvil mientras se encuentran al volante. Usar el móvil mientras conduces, una práctica peligrosa El uso del móvil mientras se conduce es una práctica peligrosa y que está prohibida en la gran mayoría de países. A pesar de que su uso suponga cuantiosas multas y la retirada de puntos en el carnet, sigue siendo una de las mayores causas de accidentes en nuestro país. En España desde el año 2017 hay más de 300 cámaras que utilizan la IA para detectar si los conductores de los vehículos llevan el cinturón de seguridad. Cada imagen captada por estas cámaras es revisada por un software de visión artificial capaz de determinar si el conductor y el copiloto utilizan el cinturón de seguridad o si están utilizando su teléfono móvil. En el caso de detectar un positivo este es enviado automáticamente al centro de tratamiento de denuncias. En algunas ocasiones tanto las cámaras como el software son incapaces de detectar si el cinturón esta puesto o no (especialmente cuando los ocupantes del vehículo visten una prenda de color oscuro). Por eso mismo, todas las fotos son revisadas “manualmente” por personal autorizado antes de enviarse como prueba a la jefatura provincial de tráfico. Figura 1: Cámara inteligente para control de tráfico Cámaras inteligentes con flash infrarrojo Hace unos meses el gobierno australiano anunció que se estaba llevando a cabo la instalación de un sistema de cámaras similar para la detección de conductores que utilizan el móvil mientras conducen. Para detectar a los infractores se han instalado varias cámaras inteligentes con flash infrarrojo capaces de detectar con total efectividad infracciones de este tipo, independientemente de la hora del día, de la luminosidad en la vía y del clima. Los sensores infrarrojos son tan precisos que son capaces de detectar si un usuario está utilizando el móvil aunque el coche viaje hasta 300 km/h. El gobierno australiano anunció que, en el periodo de prueba en el que se utilizaron tan solo dos de estas avanzadas cámaras con inteligencia artificial, se analizaron hasta 8,5 millones de vehículos de los cuales 100.000 llevaban un conductor que utilizaba el móvil. Sin duda un dato preocupante. Al igual que en España, en este nuevo sistema las sanciones no se aplican automáticamente después de que las cámaras detecten un positivo. Las imágenes son analizadas por personal cualificado y después pasan a disposición judicial donde un juez dicta la sanción que llegará al usuario. El funcionamiento de estas cámaras es muy sencillo. Toman una fotografía a todos los vehículos que circulan por la vía, después la IA analiza la imagen en búsqueda de patrones que puedan indicar que el usuario tiene el teléfono en la mano y la selecciona para comenzar el correspondiente proceso administrativo. A pesar de que estas cámaras no cuenten con una eficacia del 100%, su software va perfeccionándose y es muy posible que en un futuro no sea necesario que un equipo compruebe las imágenes antes de pasar a disposición de las autoridades. Este sistema además de ser eficaz resulta mucho más barato que el uso de helicópteros y otro tipo de recursos para detectar infracciones de este tipo. Figura 2: Carretera Drones de la DGT El pasado mes de Agosto la Dirección General de Tráfico añadió a sus líneas tres nuevos drones que se valen de numerosos sensores y de inteligencia artificial para detectar infracciones y otras prácticas habituales que también pueden ser sancionables por provocar distracciones al volante. Estos dispositivos, a pesar de contar con una autonomía reducida (20 minutos de vuelo por batería), y de necesitar un piloto titulado, un operador de cámara y un guardia civil, son capaces de identificar si los tripulantes de un vehículo llevan puesto el cinturón, si el conductor tiene un brazo o el codo por fuera de la ventanilla o si está comiendo o fumando. Los nuevos drones son capaces de volar a una altitud de 120 metros y detectar las infracciones sucedidas en un radio de 500 metros. De hecho, algunas variaciones de este modelo son utilizadas habitualmente para la inspección de líneas de alta tensión o en labores de rescate. Por el momento estos dispositivos se están probando en algunos de los tramos con mayor índice de accidentalidad en las islas Canarias. A pesar de que los equipos todavía no cuenten con los medios necesarios para detectar los excesos de velocidad, Tráfico ya ha anunciado la adquisición de al menos 20 unidades más que se unirán a las labores de vigilancia en la península. Puede que los resultados obtenidos durante las pruebas piloto de estos dos nuevos métodos de reducción del índice de accidentalidad sean bastante alarmantes. Sin embargo, se ha demostrado que los programas basados en inteligencia artificial ayudan a reducir el número de accidentes y a prevenir comportamientos de alto riesgo en la carretera. Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en Twitter, LinkedIn y YouTube.
30 de marzo de 2021
Ciberseguridad
Scratch, programación al alcance de todos (parte 3)
En los dos anteriores posts de esta serie te contamos qué es Scratch y cómo está organizada su estructura. En esta ocasión te vamos a enseñar cómo utilizarlo para crear un juego educativo de preguntas y respuestas enfocado al ámbito de la ciberseguridad. ¡Vamos a ello! Creando juegos didácticos con scratch Lo primero de todo será crear un proyecto. Para ello sólo tendrás que acceder a tu cuenta de Scratch (si no dispones de una, deberás crearla antes) y entrar en el apartado “mis cosas” (en el menú superior derecho). Desde esta pantalla pulsaremos en “Nuevo proyecto” para que se abra el editor. Para este juego tendremos que crear distintos programas: por un lado, irá el juego; y por otro, una cuenta atrás para añadir un poco de presión a los jugadores. Al igual que haríamos en cualquier otro entorno de programación, lo primero que haremos será definir nuestras variables. En este caso utilizaremos 3 (puntuación, respuesta del usuario y tiempo), y para crearlas sólo tendremos que acceder al apartado variables y pulsar en “Crear una variable”. Para terminar, marcaremos aquellas que se muestren por pantalla durante el juego, en este caso serían puntuación y tiempo. Figura 1: Crear variables en Scratch A continuación, nos iremos al apartado “Fondos” de nuestro editor y crearemos un fondo para nuestro juego (podemos seleccionar una de las imágenes de Scratch o cargar una que tengamos en nuestro ordenador). Hecho ésto, el siguiente paso es utilizar un bloque de eventos para que inicie el juego. Después asignaremos a la variable “puntuación” el valor 0. Más tarde utilizaremos bloques de apariencia para cargar el fondo creado anteriormente y explicar las reglas del juego con otros bloques de apariencia. Figura 2: Bloque de inicio del juego Cómo elaborar preguntas Ahora que ya tenemos el comienzo del juego, el siguiente paso es crear las preguntas. Para ello utilizaremos listas y bucles. Lo primero será elaborar una pregunta y pensar en 4 posibles respuestas (habiendo sólo 1 correcta). Para poder mostrar las respuestas por pantalla utilizaremos las listas y algunos de los comandos diseñados para ellas que podemos encontrar en el apartado de variables (mostrar/ocultar lista). Para realizar la pregunta utilizaremos un bloque del apartado sensores y para almacenar la respuesta del usuario utilizaremos otro bloque similar al utilizado para asignar el valor inicial de la puntuación. Por ultimo teniendo en mente la respuesta correcta crearemos el bucle que informara al jugador de si ha acertado o fallado sumándole un punto por cada acierto que tenga, para ello utilizaremos bloques del apartado operadores. Figura 3: Ejemplo de pregunta Para que sea más sencillo construir el código final y que éste no sea muy largo, podemos utilizar la función de crear bloques, como se ve en la imagen anterior. Una vez que hayamos creado todas nuestras preguntas sólo tendremos que llamar a los bloques en el orden que queramos para que, al contestar una pregunta, salte automáticamente a la siguiente. Para terminar... Ahora que tenemos nuestras preguntas listas sólo nos queda finalizar el juego. Para ello hemos decidido crear un bloque de finalización que muestra la puntuación obtenida y que, en caso de haber acertado más de la mitad de las preguntas, te felicita. Al igual que con las preguntas, podemos crear una función utilizando el apartado "Mis Bloques" y nombrarla, al fin y al cabo siempre es más cómodo trabajar con pequeños fragmentos de código. Figura 4: Marcador de puntuación Por último, y para añadirle un poco más de emoción al juego, crearemos una cuenta atrás para que el tiempo para responder cada pregunta sea de 15 segundos aproximadamente. La cuenta atrás comenzará al mismo tiempo que aparezca la primera pregunta por pantalla; para ello tendremos que calcular el tiempo que tarda el comienzo del juego y utilizar el bloque “esperar (x) segundos”. Figura 5: Código para la cuenta atrás Para elaborar nuestro temporizador hemos asignado a la variable tiempo el número desde el que queremos que comience la cuenta atrás. Después hemos utilizado un bucle para que el marcador de tiempo baje 1 punto cada segundo hasta alcanzar el valor 0. Cuando se acabe el tiempo avisaremos a los jugadores con un mensaje y les diremos cuál ha sido la puntuación obtenida. Al igual que con el temporizador, deberemos añadir un script de finalización para el juego. Ahora que ya tenemos todas las partes del juego por separado, sólo queda juntarlas. Para ello usaremos nuestros bloques creados exceptuando los correspondientes a la cuenta atrás, ya que funcionan de forma independiente y simultánea al programa principal. Si todavía no lo has hecho, lee aquí los anteriores posts de esta serie sobre Scratch: CYBER SECURITY Scratch, programación al alcance de todos (parte 1) 26 de febrero de 2020 CYBER SECURITY Scratch, programación al alcance de todos (parte 2) 4 de marzo de 2020
11 de marzo de 2020
Ciberseguridad
Scratch, programación al alcance de todos (parte 2)
Scratch y su estructura de bloques Como ya os comentamos en la primera parte de este post sobre Scratch, el programa está organizado a través de una estructura de bloques que actúan como un puzle. Cada bloque tiene unas pestañas que lo hacen encajar con aquellos otros bloques con los que es compatible. Al ser un entorno de programación enfocado a todas las edades, aparte de los bloques, dispone de un apartado llamado “disfraces”, dedicado a la creación de objetos que veremos en la pantalla al ejecutar el programa; y otro dedicado a los sonidos, por si queremos que alguno de los elementos emita un sonido determinado. Al seleccionar un objeto previamente diseñado se nos abrirá una ventana en la que podremos elaborar el código para ese elemento. Figura 1: Apartado de disfraces En cuanto a la sección de código, contamos con 8 tipos distintos de bloques organizados por apartados y colores. A continuación veremos brevemente cuáles son estos bloques y para qué sirven sus comandos. Apartado de movimiento: en él se encuentran los bloques destinados a cambiar la posición y la rotación de los objetos que se muestran en pantalla. Apartado de apariencia: encontraremos bloques con los que modificar los efectos gráficos del programa, como cambiar el fondo o el tamaño de los objetos. También hay bloques dedicados a mostrar textos en pantalla o simular que alguno de los personajes diseñados se encuentra pensativo. Apartado de sonido: podremos reproducir los sonidos previamente definidos y modificar el volumen de los mismos. Apartado de eventos: podemos encontrar los bloques de inicio de programa. Alguno de estos bloques nos permitirá establecer qué condiciones o eventos deberán cumplirse para que dé comienzo nuestro programa. Apartado de bloques de control: apartado fundamental en el que se encuentran los bucles y el bloque de finalización de programas. Figura 2: Bloques de control y ejemplo de su utilización Apartado de sensores: bloques enfocados a la interacción del usuario con el programa (desde detectar cuándo el usuario utiliza el ratón sobre la pantalla hasta realizar una pregunta y esperar la respuesta). En este apartado también se ha añadido la función de cronómetro y algunos bloques para controlarlo. Apartado de operadores: como es lógico, podremos encontrar bloques dedicados a realizar operaciones matemáticas (suma, resta, valor absoluto, obtención del módulo, redondeo…), además de las condiciones para nuestros bucles. Apartado de variables: podremos definir nuestras variables, asignarles un valor y decidir si queremos mostrarlas en pantalla. También se pueden crear listas de elementos que funcionarían de una manera similar a las Strings y las Arrays en otros entornos de programación (al igual que con las cadenas en otros entornos de programación, Scratch cuenta con comandos para calcular su longitud o acceder a un elemento concreto de ellas). Apartado Mis Bloques: es posiblemente el apartado con más potencia de Scratch, destinado a crear nuestras propias funciones. Podremos crear nuestros bloques para posteriormente ubicarlos en el programa al igual que si estuviésemos llamando a una función. Además, a la hora de crear nuevos bloques, Scratch nos da la posibilidad de añadir entradas de texto, entradas lógicas y etiquetas. Cuando creamos un bloque, nos aparecerá automáticamente el campo “Definir [nombre del bloque]”. A continuación deberemos elaborar el código de nuestra función para poder llamarla cuando la necesitemos posteriormente. Ahora que conoces un poco más acerca de la estructura sobre la que se organiza Scratch y cómo funcionan algunos de sus bloques es el momento de enseñarte cómo crear un pequeño proyecto. En la tercera parte de este post aprenderás a crear un juego de preguntas y respuestas utilizando algunas de las funciones más importantes de Scratch. Y si aún no lo has hecho, lee aquí la primera parte de este post sobre Scratch: CYBER SECURITY Scratch, programación al alcance de todos (parte 1) 26 de febrero de 2020
4 de marzo de 2020
AI & Data
Inteligencia Artificial en el desarrollo de nuevos fármacos
En este blog ya os contamos cómo es posible utilizar la IA como una herramienta contra la venta de drogas y estupefacientes online. Hoy os hablaremos de otra de las aplicaciones de la IA relacionadas con el mundo de los compuestos químico. Sin embargo, en este caso os explicaremos cómo en unos años la inteligencia artificial puede revolucionar el mundo de la medicina a través del diseño de nuevos fármacos capaces de acabar con algunas de las enfermedades más conflictivas en la actualidad. Algoritmos que crean antibióticos Recientemente un grupo de investigadores del MIT han desarrollado un algoritmo de Machine Learning que ha sido capaz de identificar un nuevo y potente compuesto antibiótico. Durante las pruebas en el laboratorio, el experimento logró acabar con la mayoría de las bacterias causantes de las enfermedades más problemáticas en el mundo, incluyendo algunas de las cepas resistentes a otros antibióticos ya conocidos. Las pruebas de fármaco se realizaron sobre ratones y lograron limpiar la infección en dos especies distintas éstos. El modelo es capaz de barajar entre millones de compuestos químicos en apenas unos días y está diseñado para desarrollar potenciales antibióticos capaces de acabar con las bacterias utilizando mecanismos distintos a los que usan los antibióticos convencionales. La idea del proyecto era desarrollar una plataforma capaz de generar una nueva era de descubrimientos en el mundo de los fármacos. Durante uno de los experimentos realizados por el algoritmo, se descubrió esta interesante molécula que ha resultado ser uno de los antibióticos más potentes y eficaces de la historia. En este estudio también se han descubierto varios candidatos a convertirse en antibióticos prometedores que se irán probando poco a poco. De hecho, se cree que si se sigue trabajando sobre este modelo, se podría utilizar para diseñar nuevos fármacos, basándose en los datos aprendidos de las estructuras químicas que son capaces de acabar con las bacterias. El proyecto está a cargo de la profesora de ingeniería eléctrica Regina Barzilay aunque fue ideado por Jonathan Stokes, un alumno de postgrado del MIT y Harvard. Actualmente también trabajan en él el profesor Tommi Jaakkola y algunos de sus estudiantes, especializados en la creación de modelos de machine learning cuyo entrenamiento se enfoca al análisis de la estructura molecular de los compuestos que cuentan con la capacidad de acabar con algunas bacterias. Figura 1: laboratorio Primeras pruebas El uso de modelos predictivos para el cribado en silicio no es una idea nueva. Sin embargo, estos modelos no contaban con la precisión necesaria para poder transformar los resultados del estudio en fármacos. En sus primeras pruebas, los investigadores se centraron en el entrenamiento de un modelo que desarrollase moléculas efectivas para acabar con las bacterias E. coli. Para esta prueba se entrenó el modelo con una muestra de 2500 moléculas (1700 fármacos aprobados por la FDA y 800 de otros productos naturales) y se puso a prueba con una biblioteca de 6000 compuestos. El resultado fue sorprendente, el modelo sugirió una molécula con una potente carga antibacteriana y con una estructura química nunca antes vista en ningún antibiótico. La molécula ha recibido el nombre de halicina y en diversas pruebas ha demostrado tener un bajo nivel de toxicidad para el ser humano. De hecho, se está estudiando la posibilidad de utilizarla para crear medicamentos que traten algunos tipos de diabetes. Sin duda, esto es otra prueba más de que la inteligencia artificial no solo es el futuro de la robótica o la electrónica, sino que también jugará un papel fundamental en el mundo de la medicina y la salud. Si te interesa este tema, no te pierdas este hilo de nuestra biblioteca. https://twitter.com/LUCA_D3/status/1032587172568883201?s=20 Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
3 de marzo de 2020
Ciberseguridad
Scratch, programación al alcance de todos (parte 1)
Scratch es un lenguaje y plataforma para la introducción a la programación que ha adquirido bastante popularidad durante los últimos años. Es un proyecto desarrollado por el MIT con la idea de acercar el mundo de la programación hasta los más jóvenes. De hecho, se desarrolló pensando en los jóvenes de entre 8 y 16 años que tienen curiosidad por el mundo de la programación. Tras su éxito entre el público joven, se desarrolló una versión junior para que hasta los más pequeños (a partir de 5 años) pudiesen comenzar a hacer sus pinitos y a explorar este interesante mundo. El éxito de Scratch proviene de su sencillez, ya que cuenta con una estructura de bloques con aspecto de puzle que hace que sea sencillo asociar qué bloques se pueden poner juntos y cuáles no. Este método de programación por bloques también reduce bastante la posibilidad de que los programas no compilen por fallos de sintaxis, sin duda uno de los mayores quebraderos de cabeza en el mundo de la programación. Figura 1: editor de Scratch Otra de las ventajas que ofrece su estructura de bloques es que, al contrario que con lenguajes de programación como Python o Java, se puede escoger el idioma en el que se programa, ya que los bloques ya están preestablecidos. Actualmente Scratch está disponible en más de 40 idiomas y cuenta con una aplicación que te permite trabajar en tus proyectos cuando no tienes conexión a internet. Scratch cuenta con una gran comunidad en línea que permite a los usuarios compartir sus proyectos y dejar que la gente inspeccione su código. Esta función permite realizar una gran curva de aprendizaje, además de la posibilidad de dar y recibir consejos o críticas constructivas de otros programadores experimentados. Esto ha convertido Scratch en una de las herramientas escogidas por varios colegios e institutos para enseñar a programar a sus alumnos. Figura 2: Comunidad en Scratch Al igual que en otros softwares de programación, Scratch permite añadir algunas extensiones con las que aumentar todavía más su potencial. Algunas de las extensiones más populares están orientadas a la programación de dispositivos físicos como las placas de MicroBit o los kits de robótica fabricados por LEGO. Además de las extensiones que ya existen, Scratch irá añadiendo extensiones nuevas con sus respectivas guías de uso, ofreciendo cada vez más posibilidades de desarrollo a la comunidad. Scratch es de software libre y es Open Source, podrás encontrar el código fuente de su versión actual y el de las versiones 1.4 y 2.0 en su GitHub. Al utilizar esta plataforma también podrás reinventar o remezclar proyectos de otros autores: si encontramos un proyecto que nos guste de otro editor, podremos modificarlo a nuestro gusto, adaptándolo a nuestras necesidades. La única condición para ello es dar crédito al creador del proyecto original. Como Scratch es gratuito y no requiere de licencias para su uso, se financia a través de donaciones y becas. Figura 3: Es posible investigar y reinventar proyectos El software libre no es siempre gratis. Por suerte, en el caso de Scratch sí que lo es y además está permitido utilizarlo para impartir cursos de programación (gratuitos o de pago) y utilizar imágenes o capturas del programa en guías de aprendizaje o libros de texto. La única condición para hacerlo es dar crédito a los desarrolladores del programa, añadiendo la frase: “Scratch es un proyecto de Scratch Foundation, en colaboración con el Lifelong Kindergarten Group del MIT Media Lab. Está disponible gratis en https://scratch.mit.edu” Scratch es sin duda una potente herramienta y una de las mejores opciones de introducción a la programación. Ahora que sabes qué es Scratch, en la segunda parte de este post te enseñaremos cómo funciona su estructura de bloques, y en la tercera parte, aprenderás a crear un juego de preguntas y respuestas enfocado a la ciberseguridad: CYBER SECURITY Scratch, programación al alcance de todos (parte 2) 4 de marzo de 2020
26 de febrero de 2020
AI & Data
Deep learning contra drogas ilegales en internet
A día de hoy el consumo de drogas es una de las principales causas de muerte en Estados Unidos. Durante los últimos años el consumo de drogas derivadas de los opiáceos ha aumentado exponencialmente, en parte, debido a los nuevos métodos de distribución utilizados por algunos pequeños cárteles y proveedores. El más popular de estos nuevos métodos es la venta on-line. Veremos cómo el Deep Learning puede ser clave en la lucha contra la venta de drogas ilegales en internet. "Camellos" online Aunque encontrar a estos vendedores de droga en línea no resulte tan fácil como parece, éstos siguen suponiendo un gran peligro para la sociedad. A la hora de adquirir drogas online no basta con teclear “opiáceos” en Google y pulsar el botón de búsqueda, solo un pequeño porcentaje de las publicaciones que hablan acerca de droga se encuentran directamente relacionadas con su venta. Según un estudio realizado en Twitter el año pasado menos del 1% de los tweets que hablan acerca de droga están relacionados con la oferta de las mismas. Los vendedores de este tipo de sustancias no suelen utilizar palabras clave para que su producto tenga más visibilidad. Utilizan estrategias como modificar o cambiar sus publicaciones y mensajes constantemente o utilizan imágenes que no tienen nada que ver con el anuncio. IA para localizar transacciones ilegales en internet El departamento de la salud de Estados Unidos está investigando nuevos métodos basados en la inteligencia artificial para localizar distribuidores de opiáceos y farmacias ilegales. Este nuevo enfoque basado en la IA demuestra cómo algunas redes sociales o páginas de Internet pueden utilizarse para organizar y realizar transacciones ilegales en línea. El NIDA ha puesto al cargo de esta investigación Timothy Mackey, profesor de la universidad de San Diego. La herramienta desarrollada por el profesor Mackey y su equipo también es capaz de identificar otros tipos de transacciones ilegales como el tráfico de animales, la venta de productos falsificados o la venta de armas. En redes sociales como Facebook o Instagram, las reglas de la comunidad prohíben el contenido relacionado con las sustancias ilegales. Al realizar búsquedas de drogas como el “percocet” no aparecen resultados. Sin embargo al buscar el mismo nombre con alguna falta de ortografía aparecen miles de mensajes o publicaciones en las que los comentarios están relacionados con la compraventa de estupefacientes. Al realizar una búsqueda utilizando los Hashtags de estas publicaciones no resulta difícil dar con algunas indicaciones para contactar con algunos traficantes o “farmacias de internet”. ¿Cómo funciona? Para prevenir este tipo de comportamientos en las redes el equipo del profesor Mackey ha desarrollado una herramienta basada en el Deep Learning y que es capaz de rastrear a los vendedores de drogas en redes sociales como Facebook o Twitter. El programa se centra en el reconocimiento de ciertos patrones de datos para lograr identificar automáticamente nuevos patrones que puedan sugerir que se está realizando una transacción ilegal. Otra de las armas secretas de la herramienta se basa en el modelado tópico. El modelado tópico es una técnica que consiste en utilizar una serie de palabras o expresiones clave (en este caso el nombre de drogas) para averiguar qué otras palabras o frases pueden estar relacionadas con la búsqueda y que puedan ayudar a identificar comportamientos similares con mayor facilidad. Por el momento esta herramienta no está siendo utilizada por las autoridades pero es muy posible que en un futuro se utilice para frenar las ventas de pequeños traficantes. Por desgracia, disminuir la demanda de este tipo de drogas no se encuentra entre las posibilidades de este tipo de herramientas. Esto solo es posible a través de la concienciación. No obstante, la inteligencia Artificial ha demostrado ser parte de la solución a uno de los mayores problemas de la sociedad actual.
4 de febrero de 2020
AI & Data
Drones e IA, las nuevas herramientas de Indiana Jones
Esta no ha sido la primera vez que en este blog os hemos hablado del uso de la Inteligencia Artificial (IA) para la recuperación de culturas antiguas. Hace ya unos meses os hablamos de una herramienta capaz de traducir instantáneamente textos e inscripciones escritas en leguas muertas. Hoy os hablaremos de un novedoso sistema que se está utilizando para reconocer patrones de "tipo Nazca" sobre la superficie de la tierra, concretamente, sobre el desierto peruano. Inteligencia artificial para descubrir restos arqueológicos Esta interesante tecnología ha sido desarrollada por algunos investigadores de IBM en colaboración con la Universidad de Yamagata (en Japón). El sistema de IA en cuestión se basa en la tecnología Watson Machine Learning Acelerator (WMLA) desarrollada por IBM y tiene como objetivo localizar y reconocer patrones tipo Nazca en el suelo. Para realizar un entrenamiento tan específico los expertos se valieron de varias fotografías aéreas e imágenes satélites o tomadas con drones de algunos geoglifos ya identificados. Gracias a esta muestra (alrededor de 2000 imágenes) la herramienta ha sido capaz de aprender a discernir patrones similares todavía no descubiertos por los sistemas actuales. Figura 1: Avioneta de reconocimiento. Se empiezan a usar drones en su lugar. La tecnología LiDar Desde hace ya varios años el mapeo a través de dispositivos laser es una práctica habitual por geólogos y arqueólogos para la localización de ruinas en lugares donde pudieron existir posibles asentamientos. El LiDar (Ligth Detection and Ranging) es una tecnología con un funcionamiento similar al de un radar convencional, sin embargo recopila información utilizando un láser en vez de ondas de radio. Su funcionamiento es bastante simple. Primero se emite un pulso laser sobre la superficie a estudiar (por lo general desde una avioneta), los pulsos reflejados por la superficie del suelo son recogidos por una serie de sensores capaces de medir el tiempo que ha viajado esa señal. Utilizando una simple fórmula física (distancia = (velocidad de la luz x tiempo)/2) se calcula la distancia desde el dispositivo emisor hasta el suelo. Este proceso se repite millones de veces a gran velocidad dando lugar a un mapa extremadamente detallado y preciso del relieve del terreno. Primeros resultados: detección de un nuevo geoglifo Hace poco, cuando se estaban realizando algunas pruebas con esta tecnología sobre las llanuras del desierto de Perú se logró detectar un nuevo geoglifo, el cual representaba una figura humanoide con un tocado en la cabeza y un palo o bastón ceremonial en uno de los brazos. Este nuevo descubrimiento se suma a los más de 2000 ya descubiertos en Perú, de los cuales la mayoría son animales o patrones geométricos. Este geoglifo al igual que otros habría sido bastante difícil de divisar a simple vista, ya que en muchos casos y debido a su antigüedad y algunas alteraciones en el terreno se suaviza su contorno Durante las pruebas la Inteligencia Artificial detectó alrededor de 500 posibles nuevos geoglifos, incluyendo la figura humanoide ya confirmada. Al revisar las imágenes aéreas y realizar alguna visita en persona al terreno se pudo confirmar la presencia de la figura humanoide (mide 2 metros de ancho y 4 de largo). Esta no es la primera vez que el equipo de la universidad de Yamagata hace un descubrimiento de este tipo, de hecho llevan más de 100 líneas de Nazca descubiertas gracias a las imágenes aéreas y a su trabajo de campo. Conclusión Tras el tremendo éxito de su prueba los investigadores han confirmado que seguirán trabajando para mejorar este sistema de IA. Si se sigue entrenando este modelo con nuevas muestras e imágenes aéreas se logrará identificar marcas y líneas de Nazca desconocidas con una mayor velocidad y precisión. Gracias a este nuevo y avanzado sistema será posible completar y comprender los mapas de líneas de Nazca creados hace miles de años y buscar una forma de conservar y proteger esta cultura milenaria que ha permanecido oculta a simple vista durante tantos años.
9 de enero de 2020
AI & Data
Programación de células: Cómo codificar el ADN para modificar células vivas
En el día de hoy echaremos la vista atrás para hablaros de un interesante proyecto que combina la biología y la informática: la programación de células. En 2016 unos bioingenieros del MIT desarrollaron un lenguaje de programación que permite la creación de circuitos complejos con los que codificar el ADN para modificar células vivas. Gracias a él es posible elaborar un programa con el que ordenar a las células que realicen ciertas funciones (como detectar o reaccionar a ciertas condiciones ambientales), transformando su genoma sin la necesidad de utilizar técnicas de ingeniería genética. A la hora de elaborar este lenguaje los ingenieros del MIT se basaron en Verilog, un lenguaje comúnmente utilizado para la programación de chips de ordenadores. Para poder programar las células fue necesario diseñar algunos elementos como puertas lógicas y sensores que pudiesen ser codificados en el ADN de una célula bacteriana. Los sensores eran capaces de detectar diferentes compuestos, como el oxígeno o la glucosa, al igual que la luz, la temperatura y otras condiciones ambientales. El lenguaje es muy sencillo y personalizable haciendo que cualquier usuario pueda aprender a utilizarlo y añadir sus propios sensores. Durante el proceso de desarrollo el lenguaje se optimizó para la bacteria E-coli, pero tres años después ya ha sido adaptado para poder utilizarse con otras cepas de bacterias y bacteroides que se pueden encontrar habitualmente en el intestino humano. Algunos investigadores del MIT, de la universidad de Boston y del NIST junto con el profesor y biólogo sintético Christopher Voigt y Alec Nielsen (estudiante de postgrado) han estado experimentado con este lenguaje y han logrado diseñar circuitos capaces de detectar hasta 3 entradas y responder en función de la información recibida. Según Voigt este lenguaje se trata básicamente de un lenguaje de programación para bacterias, de hecho su funcionamiento es similar al de cualquier otro lenguaje basado en texto diseñado para la programación de ordenadores solo que al compilar el código se convierte en una secuencia de ADN que posteriormente se introduce en la célula. Esto podría utilizarse para programar células para que sean capaces de detectar células cancerígenas y combatirlas. Otros enfoques interesantes en los que trabajó el equipo fueron la creación de bacterias que se pudiesen ingerir para ayudar en la digestión de la lactosa; bacterias capaces de vivir alimentándose de las raíces de las plantas y producir insecticida si sienten que la planta está en peligro o levaduras capaces de detenerse cuando están produciendo demasiados subproductos tóxicos en un reactor de fermentación. Sin duda ideas brillantes que podrían suponer un antes y un después en el ámbito de la medicina. Para mantenerte al día con LUCA, visita nuestra .
2 de diciembre de 2019
AI & Data
Machine Learning y el futuro de la traducción automática de lenguas perdidas.
Durante los últimos años cada vez son más la aplicaciones del machine learning, en este blog ya os hemos hablado de cómo puede utilizarse para crear herramientas que vencen a los humanos jugando a juegos, como puede utilizarse en el mundo de la medicina o incluso para facilitar el trabajo de una prospección petrolífera. En el día de hoy os contaremos como puede aplicarse el machine learning en el ámbito de la arqueología y la lingüística en una tarea muy concreta, la traducción de lenguas perdidas. En 1886 el arqueólogo británico Arthur Evans se enteró del descubrimiento en Creta de una piedra centenaria en la que había una serie de inscripciones en un lenguaje desconocido. Al descubrirla decidió viajar a la isla para buscar más restos arqueológicos, llegando a encontrar alrededor de 400 piedras con inscripciones en lo que parecía la misma lengua. Las piedras se dataron en el año 1400 antes de cristo lo que convierte las escrituras encontradas en ellas en las más antiguas descubiertas hasta el momento. Al ser analizadas por expertos se llegó a la conclusión de que los lenguajes empleado en ellas era Linear A datado entre 1800 y 1400 antes de cristo (una lengua de la era de bronce) y Linear B, una lengua perteneciente al periodo posterior cuando las islas fueron conquistadas por los griegos. Durante varios años diversos expertos trataron de descifrar estas antiguas lenguas sin éxito usando técnicas tradicionales hasta que en el año 1953 un joven e inexperto lingüista llamado Michael Ventris logró descifrar el Linear B utilizando una serie de reglas creadas por el mismo. Con la ayuda de sus reglas llegó a la conclusión de que el Linear B provenía del griego antiguo y de que algunas palabras que se repetían mucho en las inscripciones aludían a lugares geográficos de la isla. Por otro lado el Linear A todavía no ha sido descifrado. Con los recientes avances en los estudios lingüísticos, los nuevos métodos de traducción instantánea y las enormes bases de datos con las que contamos actualmente solo era cuestión de tiempo que alguien desarrollase una herramienta con la que descifrar estas antiguas lenguas. El equipo formado por Jiaming Luo y Regina Barzilay del MIT y Yuan Cao experto en IA de Google ha desarrollado recientemente un sistema de aprendizaje automático capaz de descifrar lenguajes perdidos y para demostrar la eficacia de su herramienta la han puesto a prueba ni más ni menos que con el lenguaje anteriormente mencionado, el Linear B. La máquina desarrollada por el equipo ha sido capaz de traducir automáticamente este lenguaje con una precisión asombrosa. De hecho fue capaz de traducir correctamente el 67,3% de los cognatos de Linear B a sus equivalentes en griego antiguo en tan solo un intento. Para hacer esto posible el equipo utilizó un enfoque completamente diferente al de las técnicas estándar de traducción automática. La idea detrás de la traducción automática se basa en la relación que existe entre las palabras independientemente del idioma en el que estén escritas. Según Cao la máquina desarrollada por el equipo realiza búsquedas en el texto para ver con qué frecuencia aparece una palabra junto a otra, algo para lo que es necesario grandes bases de datos de texto. De este modo las palabras pueden considerarse como vectores en un espacio que obedecen una serie de reglas matemáticas simples permitiendo asignar un idioma entero a otro (independientemente de cual sea) con una correspondencia de uno a uno. El proceso de traducción se basa en la búsqueda de trayectorias similares a través de estos espacios sin que sea necesario que la maquina conozca el significado de las frases. Cualquier idioma que evolucione con el tiempo lo suele hacer siguiendo ciertas reglas y por lo general distribuciones similares, las palabras relacionadas tienen el mismo orden de caracteres, y así sucesivamente. Cuantas más sean las reglas que limitan la máquina, mucho más sencillo será para ella descifrar un lenguaje. La única condición indispensable para que funcione es conocer el lenguaje progenitor. Por el momento no ha sido posible descifrar Linear A, a pesar de haber realizado numerosos intentos con esta interesante herramienta solo se ha logrado llegar a la conclusión de que no proviene del griego antiguo. Para descifrar el lenguaje es necesario saber de qué otro lenguaje proviene, pero gracias a la inteligencia artificial es posible probar con otras lenguas y simbologías primitivas sin perder apenas tiempo y ahorrando la mayor parte del esfuerzo. Este nuevo método de traducción instantánea podría enfocase como un ataque de fuerza bruta haciendo posible que durante los próximos meses o años sea posible descifrar lenguas olvidadas (incluyendo Linear A) con gran facilidad. Si te interesa la traducción automatica basada en IA, no te pierdas este otro post de nuestro blog. AI OF THINGS Traductores automáticos basados en IA: ¿Nos permitirán comunicarnos también con nuestras mascotas? 8 de octubre de 2018 Para mantenerte al día con LUCA, visita nuestra .
4 de octubre de 2019
AI & Data
Cómo ha ayudado la IA a Magnus Carlsen a convertirse en el mejor jugador de ajedrez del mundo
Hace unos meses en este blog os hablamos de cómo en algunas ocasiones la inteligencia artificial aplicada a campos muy concretos había sido capaz de derrotar a contrincantes humanos como en el caso de Deep Blue, el sistema experto desarrollado por IBM que logró derrotar al campeón del mundo en ajedrez Garri Kasparov en la década de los 90. Hoy retomamos el tema de la inteligencia artificial en el mundo del ajedrez, pero desde una perspectiva completamente diferente y os explicaremos cómo Magnus Carlsen ha utilizado la IA para convertirse en el mejor jugador de ajedrez de toda la historia. Magnus Carlsen siempre fue un niño prodigio. Con tan solo 8 años jugó su primer torneo de ajedrez y demostró un gran potencial, durante los próximos años se enfrentó a grandes jugadores como Nigel Short o Ivan Sokolov llegando a llamar la atención de Garri Kasparov hasta el punto de que este se convirtiese en su mentor durante un tiempo. A la edad de 13 años ganó su primer campeonato y 9 años después a la edad de 22 se proclamó el campeón del mundo más joven de la historia después de Garri Kasparov. También ha logrado alcanzar la puntuación más alta de la historia en la clasificación Elo (escala que mide la habilidad de los jugadores de ajedrez), con 2882 puntos en más de una ocasión. Durante ese último año Magnus no ha perdido ni una sola partida, el año pasado logró defender su título y desde entonces ha ganado en los 7 torneos que ha participado. Tras su última victoria en el torneo Altibox que ha tenido lugar en su país natal (Noruega), el joven explicó en una entrevista que gran parte de su inspiración ha sido AlphaZero, el motor de inteligencia artificial desarrollado por DeepMind. ¿Pero cómo ha podido AlphaZero ayudar a Magnus a jugar de esta forma? La respuesta a esta pregunta se encuentra en los sacrificios a largo plazo, una estrategia que el noruego ha aprendido de AlphaZero y que nunca antes se había visto en este deporte. Con estos sacrificios, Magnus es capaz de lograr una posición más favorable para sus piezas al final de la partida logrando machacar a sus rivales sin que estos puedan predecir sus próximos movimientos. Tras esta enorme racha de victorias, Carlsen sigue entrenando este nuevo estilo de juego con el objetivo de alcanzar los 2900 puntos Elo, una cifra que de superarla le convertiría en el mejor jugador de ajedrez de la historia. Esta es sin duda alguna la prueba de que Alan Turing y Claude Shannon, dos de los padres de la computación, no se equivocaron al decir a finales de los años 40 que el ajedrez sería un buen campo de experimentación para la Inteligencia Artificial.
22 de julio de 2019
AI & Data
Así funciona Azure Machine Learning Studio
El análisis predictivo es una práctica que combina el uso de herramientas estadísticas y procesos de data mining, con el objetivo de predecir posibles escenarios basándose en el análisis de datos que permiten aventurar acontecimientos con un cierto grado de probabilidad. Hoy en día los modelos de análisis predictivo suelen ser utilizados por empresas para tomar ventaja frente a sus competidores, anticiparse a las reacciones de los clientes para ofrecerles un mejor servicio y corregir pequeños problemas que puedan generar pérdidas. Azure Machine Learning Studio es una herramienta diseñada para desarrollar, probar y trabajar con modelos de análisis predictivo. Además es una herramienta sencilla de utilizar y que no requiere de conocimientos de programación. Por lo general, a la hora de trabajar con modelos de análisis predictivo se utilizan varias fuentes de datos y una serie de funciones con las que procesar dichos datos para obtener una serie de resultados. Azure Machine Learning Studio ofrece un entorno de trabajo muy visual e intuitivo en el que podrás entrenar tus modelos y experimentar con facilidad. Una de sus mayores ventajas es que para generar un modelo solo tendremos que arrastrar los conjuntos de datos y los distintos módulos que queramos utilizar. A partir de ahí, podremos editarlo y ejecutarlo para comprobar el resultado. Podrás generar copias de seguridad para no perder tu trabajo en el caso de que el resultado obtenido no sea el esperado, y también podrás probar con distintas iteraciones. Al acceder a Machine Learning Studio también dispondrás de varios videos y documentación acerca del funcionamiento de la herramienta. En el apartado Studio dispondrás de un menú en el que podrás acceder rápidamente a tus proyectos, a los experimentos (borradores), servicios web, cuadernos, conjuntos de datos, modelos entrenados y configuración Para trabajar con Azure ML Studio es fundamental tener claros dos conceptos, el primero es el concepto de Módulo. Un módulo es un algoritmo que puede aplicarse sobre los datos, con estos módulos se pueden realizar diferentes procesos de validación puntuación y entrenamiento. Azure cuenta con una gran variedad de módulos precargados, que se pueden encontrar en el menú situado a la izquierda del editor. En algunos casos, deberemos modificar los parámetros del módulo para adaptarlos a nuestro proyecto. El segundo concepto es el de Conjunto de Datos, los conjuntos de datos están formados por una serie de información que se ha cargado en ML Studio. Para utilizarse en el proceso de modelado, en la herramienta hay disponibles varios conjuntos de datos, pero se pueden ir cargando nuevos a medida que se necesiten (datos de consumo en automóviles, datos sobre diagnósticos médicos, información sobre acontecimientos climáticos…). Para que el experimento funcione y podamos construir un modelo de análisis predictivo los conjuntos de datos deberán estar conectados a los módulos (cuyos parámetros hayan sido prestablecidos) y los puertos de entrada de dichos módulos deberán tener alguna conexión al flujo de datos. Una vez tu modelo de ML esté listo podrás implementarlo como servicio web directamente desde el programa. Ahora que ya sabes un poco más acerca del funcionamiento de Azure ML Studio te recomendamos que eches un vistazo a esta serie de posts en las que os enseñamos como podéis crear vuestro primer experimento. AI OF THINGS Titanic: Tu primer experimento en Azure ML Studio (I) 14 de noviembre de 2017 Para mantenerte al día con LUCA visita nuestra .
18 de junio de 2019
AI & Data
La inteligencia artificial detrás de GitHub
Git es un sistema de control de versiones que se ha vuelto muy popular durante los últimos años. Eso se debe a su gran potencia y versatilidad, lo que ha hecho que miles de proyectos de software libre hayan decidido migrar sus repositorios a Git. Esta popular versión de control en varias ocasiones requiere del conocimiento de comandos algo concretos. Si eres desarrollador desde hace poco tiempo y quieres aprovecharte de las ventajas de Git lo más seguro es que ya hayas oído hablar de GitHub. GitHub es una compañía no lucrativa que ofrece un servicio de hosting de repositorios almacenados en la nube. Su interfaz es usada por millones de empleados de grandes empresas como Google o Facebook. Tal ha sido su éxito que la compañía fue comprada por Microsoft el año pasado por la suma de 7500 millones de dólares. Tras su compra Microsoft liberó en GitHub su nuevo motor de inteligencia artificial llamado Adam, el cual aseguran que es incluso más rápido que el de Google a pesar de su diminuta infraestructura. Adam es un proyecto de Inteligencia Artificial y Machine Learning capaz de aprender y trabajar con cuestiones complejas, de hecho, Microsoft planea utilizarlo para mejorar su asistente Cortana. En su primera fase el proyecto se basa en el reconocimiento de objetos, algo que ya hemos visto en otros motores de inteligencia artificial como en Firefly de Amazon. Para entrenar este reconocimiento, Adam cuenta con una base de datos superior a 10 millones de imágenes que se encuentran divididas en diferentes categorías. Tras acabar con esta fase de reconocimiento se espera que Adam sea capaz de contestar cualquier pregunta o aclarar cualquier duda que se le plantee acerca de seres u objetos. GitHub se basa en la colaboración entre usuarios favoreciendo que varios desarrolladores experimenten con código abierto y compartan sus distintos proyectos e ideas. Por eso mismo Microsoft ha apostado por hacer público el código de Adam. Hoy en día gran parte de la programación consiste en ensamblar y modificar códigos que ya están escritos, y todos esos códigos tienden a reunirse en GitHub, una plataforma accesible a todos los usuarios. Para mantenerte al día con LUCA, visita nuestra .
16 de mayo de 2019
AI & Data
IA en el mundo de la mecánica: Delta
No es la primera vez que os hablamos de sistemas expertos en este blog. Hoy os presentamos DELTA, un interesante sistema experto que se utilizó durante varios años para la reparación de locomotoras diésel. DELTA (Diesel Electric Locomotive Troubleshooting Aid), o también conocido como Cast-1 es un sistema experto desarrollado en 1981 para ayudar a los ingenieros electromecánicos de General Electric en el diagnóstico y reparación de averías en las locomotoras diésel-electricas. El asistente no sólo era capaz de dar consejos expertos, sino que también mostraba vídeos con las instrucciones necesarias para la sustitución de las piezas dañadas. Su interfaz es sencilla y bastante intuitiva. Está escrito en LISP y por lo tanto puede adaptarse a cualquier microprocesador, es un Sistema Experto basado en reglas, como otros de los que ya hemos hablado anteriormente. Hace años, cuando había alguna avería en las locomotoras de GE, el método habitual para solucionarlo era enviar un experto al lugar del incidente, teniendo muchas veces que realizar un viaje en avión o, si era posible, se transportar la locomotora hasta un centro de mantenimiento. En cualquiera de los dos casos era una gran tarea y se requerían conocimientos avanzados en electromecánica. Por eso mismo se decidió apostar por la inteligencia artificial y desarrollar un sistema experto que recogiese el conocimiento de los mejores ingenieros de General Electric, como David Smith (ingeniero con más de 40 años de experiencia en la reparación de locomotoras) y así ponerlo al alcance de diversos mecánicos y centros de mantenimiento. Fue, sin duda, una interesante apuesta por aumentar la eficiencia de su servicio de reparaciones. Su desarrollo se llevó a cabo en varias fases. En cada fase se iban añadiendo reglas con las que se aumentaba su eficiencia. En sus orígenes delta contaba con tan solo 45 reglas con las que se pretendía demostrar la viabilidad del proyecto, en 1982 se aumentó el número de reglas hasta 350 pero todavía no alcanzaba el nivel de eficacia deseado, en 1983 fue posible elaborar un prototipo el cual contaba ya con 530 reglas y era capaz de detectar y dar instrucciones para solucionar alrededor del 50% de los problemas. No fue hasta 1984 cuando se elaboró el prototipo llevado a producción, que contaba con alrededor de 1200 reglas y cubría el 80% de los problemas y averías. Este SE utiliza una estructura de inferencia mixta, que funciona en ambos sentidos, lo que permite identificar fallos y realizar algunas preguntas al experto con las que localizar e identificar que componentes del vehículo han podido resultar dañados y , en base a eso, reproducir un vídeo en el que se muestra como sustituir o reparar dicho elemento. Delta tiene un menú en el que se muestran las posibles zonas en las que ha sucedido el fallo- El usuario debe seleccionar una de ellas. A continuación, el sistema genera una serie de preguntas con las que solucionarlo. Por ejemplo: ¿Cuál es la temperatura del motor? O ¿Cuál es el nivel de refrigerante? Si la temperatura del motor es muy elevada y el nivel de refrigerante es bajo existe un problema en el sistema de refrigeración del motor. Su funcionamiento es bastante similar al de un lector OBD. Los lectores OBD son una herramienta utilizada por los mecánicos en los talleres de automóviles. En este caso se conecta un dispositivo, o en su defecto un ordenador con el software necesario a la centralita del vehículo, donde el programa es capaz de realizar una lectura de los posibles códigos de error que hayan podido quedar registrados en la ECU (Engine Control Unit) y nos alerta de que partes del vehículo pueden estar dañadas, solo que en este caso no se muestra ningún vídeo explicativo sobre cómo arreglarlo ni se dan instrucciones concretas o consejos para la reparación. DELTA fue un pionero en la detección y el diagnostico de fallos en un motor, una herramienta que ayudó a General Electric a hacer que sus reparaciones fuesen más eficientes ahorrando mucho tiempo y dinero a la compañía y demostró lo útil y viable que puede ser el uso de la Inteligencia Artificial en el mundo de la mecánica.
10 de abril de 2019
AI & Data
OpenAI ya no es abierto ¿qué alternativas quedan?
Hace apenas unos días la conocida compañía de investigación en el ámbito de la inteligencia artificial OpenAI ha anunciado el fin de su actividad sin ánimo lucrativo. Desde sus comienzos Open AI apostaba por el desarrollo y la promoción de una inteligencia artificial beneficiosa para la humanidad. La empresa fue fundada el 11 de diciembre de 2015 por Sam Altman y Elon Musk en San Francisco junto a varios emprendedores de Silicon Valley. Para poder actuar como una entidad sin ánimo de lucro dependían directamente de mecenas acaudalados, los cuales ya no pueden hacer frente a los gastos de la empresa. Aunque OpenAI haya “cerrado sus puertas”, la propia empresa acaba de anunciar su decisión de crear otra empresa vinculada a la misma, capaz de operar con ánimo de lucro y así poder atraer capital y nuevos empleados con la posibilidad de obtener acciones o participaciones en la empresa. Esta decisión se ha visto motivada porque, para que la empresa siga creciendo y realizando su trabajo, será necesario invertir millones de dólares durante los próximos años en cloud computing además de captar nuevos expertos en IA. Según Ilya Sutskever, jefe científico de OpenAI la investigación en el ámbito de la IA requiere de enormes inversiones, lo que les ha llevado a tomar esta decisión para poder seguir siendo una compañía competitiva. Otra de las causas por las que OpenAI dejó de ser viable para sus fundadores es que, en la actualidad , algunos de expertos en inteligencia artificial cuentan con sueldos que se encuentran a la altura de los de deportistas de élite (algunos ascienden a millones de dólares al año). El equipo de trabajadores de open AI estaba formado inicialmente por unas 100 personas, pero será ampliado con varios expertos en la materia durante el próximo año. Muchos de estos expertos actualmente trabajan para exitosas compañías de Silicon Valley, en las que pueden adquirir acciones (al contrario de lo que se podía hacer en OpenAI). Aunque OpenAI LP ahora ofrezca la posibilidad de adquirir acciones, OpenAI. Inc Seguirá siendo la única accionista con capacidad de controlar la nueva empresa. De hecho, si algún miembro del consejo de administración de OpenAI es también inversor de OpenAI LP, no se le permitirá votar en las decisiones que afecten la relación entre ambas empresas. Aunque las herramientas lanzadas por OpenAI sigan estando disponibles, su mantenimiento se verá afectado por este cambio. Por eso mismo, aprovechamos para presentaros algunas alternativas a las herramientas de OPenAI con las que podréis trabajar cómodamente en vuestros proyectos de Machine Learning. Scikit-learn: Es una librería completamente enfocada al machine learning, ofrece herramientas simples y eficientes para la extracción y análisis de datos, incluye varios algoritmos de regresión, clasificación y análisis de grupos, es accesible para todo el mundo y está construida en base a NumPy, SciPy y Matplotlib. Este proyecto comenzó como un proyecto de Google Summer of Code por David Cournapeau. Scikit-learn se encuentra escrita mayoritariamente en Python, pero también cuenta con algunos algoritmos escritos en Cython, un lenguaje que hace más sencilla la escritura de módulos de extensión para Python en C y C++. Pandas: Es una de las mejores librerías para el análisis de datos, es open-source y proporciona un alto rendimiento y facilidad de uso haciendo que no sea necesario cambiar nuestro código a otros lenguajes como R para poder analizarlo. Azure ML: Esta herramienta desarrollada por Microsoft ha cambiado su nombre recientemente a Azure Machine Learning Studio. Se trata de un servicio que permite la creación y el desarrollo de soluciones analíticas con un sencillo manejo ya que no requiere de conocimientos de programación y se utiliza a través del ratón. Este servicio en la nube cuenta con varios tutoriales que podrás encontrar en la página web de Azure. Si eres desarrollador o data scientist Azure ML Studio será una herramienta muy útil para ti, el software esta optimizado para utilizarse en Machine Learning aplicado. OpenCV: OpenCV (Open Source Computer Vision Library) está publicado bajo una licencia BSD y por lo tanto es gratis tanto para uso académico como comercial. Cuenta con interfaces en C++, Python y Java, además está soportado por los principales sistemas operativos (Windows, Linux, Mac OS, iOS y Android). Esta herramienta fue diseñada con la eficiencia como su principal característica y está enfocado a aplicaciones a tiempo real. Escrito en C y C++ esta librería puede aprovechar el procesamiento con varios núcleos. En la actualidad cuenta con una gran comunidad de usuarios que asciende a más de 47.000 personas y cuenta con más de 14 millones de descargas.
14 de marzo de 2019
AI & Data
Sistemas expertos e IA en el mundo de las prospecciones petrolíferas
No es la primera vez que os hablamos de sistemas expertos y de su evolución en este blog. Hoy, hablaremos de los comienzos de la inteligencia artificial en uno de los campos que más ha condicionado el avance del ser humano durante los últimos años, el campo de las prospecciones petrolíferas y la extracción de combustibles fósiles. Comenzaremos hablando de Dipmeter Advisor, un sistema experto temprano desarrollado en 1980 por Schlumberger Doll Research para ayudar con el análisis de los datos recolectados durante las exploraciones petrolíferas. Figura 1: Explotación petrolífera. El sistema experto se componía por un motor de inferencia y una pequeña base de conocimientos basada en tan solo 90 reglas. Sin embargo, era capaz de asesorar a los trabajadores y trabajar como una estación de trabajo completa. Dipmeter estaba escrito en INTERLISP-D y se ejecutaba sobre una maquina Dolphin Lisp desarrollada por Xerox que permitía a la herramienta disponer de un menú fácil de utilizar para los trabajadores. Su desarrollo se llevó a cabo por un pequeño grupo de personas, entre las que se encontraban Reid G. Smith, James D. Baker y Robert L. Young y tuvo una gran repercusión mediática, no porque fuese un gran avance técnico, sino porque fue uno de las pocos proyectos exitosos durante los comienzos de la inteligencia artificial. Las reglas de Inteligencia Artificial de Dipmeter Advisor derivaban del trabajo de AI Gilreath, el ingeniero de interpretación de Schlumberger que desarrolló el método de los patrones de colores (rojo, verde, azul) de la interpretación Dipmeter. Por desgracia, Dipmeter fue desarrollado para las prospecciones petrolíferas de la costa del Golfo, lo que supondría serias limitaciones para la herramienta al utilizarse en entornos geológicos más complejos. Dipmeter Advisor se utilizaba principalmente dentro de Schlumberger como una herramienta de visualización gráfica para asistir en la interpretación de geofísicos entrenados y, a pesar de sus limitaciones, esta herramienta supuso un gran acercamiento a las estaciones de trabajo con interpretación gráfica de la información geológica. Durante los años 80 y 90 Dipmeter Advisor causó un gran impacto en el que entonces era un sector todavía en desarrollo. En la actualidad, otras compañías como IBM o Galp han tomado el relevo a este pequeño sistema experto con la creación de nuevas herramientas que estudian la actividad sísmica de las áreas de explotación petrolífera y de gas con el fin de evaluar el riesgo de realizar las prospecciones y optimizar la ubicación de los pozos a través de informes geológicos mucho más precisos. Figura 2. Expendedor de combustible. Este nuevo proyecto ha estado en periodo de desarrollo durante unos tres años y el resultado ha sido un asistente inteligente para geofísicos. Este asistente es capaz de localizar y evaluar los mejores lugares en los que perforar los pozos. Su conocimiento está basado en todos los trabajos que ha realizado previamente y a la experiencia recogida por Galp, desde sus comienzos en el mundo de las prospecciones. Además, a medida que se van realizando proyectos, la base de datos del asistente aumenta y va adquiriendo más experiencia con la que realizar mejor su trabajo. Todos los datos recogidos durante las prospecciones se integran en una plataforma única con los análisis de contexto y las prácticas de los usuarios. Además, los geólogos y geofísicos también pueden introducir pequeñas anotaciones o sugerencias con los que aumentar la precisión de la herramienta. Gracias a su capacidad para examinar grandes volúmenes de datos el asistente es capaz de identificar las estructuras geológicas con más probabilidad de almacenar gas y petróleo y de evaluar los riesgos que podría conllevar la perforación. Aunque los combustibles fósiles sean cada vez más escasos, gracias a la inteligencia artificial, su extracción podría convertirse en un proceso más eficiente y se podría reducir parte del impacto ambiental que generan las prospecciones.
22 de febrero de 2019
AI & Data
CLIPS La historia de los sistemas expertos en la NASA
No es la primera vez que os hablamos de sistemas expertos en este blog. En artículos anteriores os hemos hablado desde como surgieron, hasta algunos de los caminos que han ido tomando durante los últimos años. Hoy os presentaremos CLIPS, un sistema experto desarrollado por la NASA durante la década de los ochenta, que tuvo una gran repercusión, ya que proporcionaba un entorno completo para la construcción de sistemas expertos basados en reglas u objetos. Desde los comienzos de la Inteligencia artificial el lenguaje de programación usado para crear sistemas expertos era LISP . Por desgracia, en muchas ocasiones era incompatible con otras herramientas o aplicaciones. Para solventar este problema se decidió recurrir al lenguaje C, un lenguaje de programación universal. En un principio la NASA propuso que el desarrollo de una herramienta así fuese llevado a cabo por una empresa externa. Sin embargo, los costes del proyecto eran demasiado altos, así que se le encargó a la unidad de IA de la NASA. En cuanto a su funcionamiento, al igual que otros sistemas expertos, CLIPS se basa en una serie de conocimientos y reglas. Los conocimientos son la información del entorno que es percibida y las reglas son las pautas que tiene el sistema para que sea posible su evolución. Puede que al principio CLIPS se tratase de una herramienta de entrenamiento para la construcción de sistemas expertos sin embargo también servía para el desarrollo y ejecución de ellos. Tras completarse el desarrollo de su primera versión y ser utilizado durante un año como periodo de prueba se demostró que era una alternativa mas barata a otras herramientas que hacían el mismo trabajo. A partir de mediados del año 1986 CLIPS (ya en su versión 3.0) fue liberado para grupos y usuarios que no perteneciesen a la NASA haciendo que se diese a conocer y fuese ganando más popularidad poco a poco. Con los años este sistema experto se ha continuado usando gracias al trabajo de sus desarrolladores, que han seguido actualizándolo y añadiendo algunas mejoras a pesar de que éste sea dominio público. Sin duda, este es solo otro ejemplo de cómo algunos sistemas expertos han supuesto grandes avances en varios campos, incluyendo en el de la ingeniería aeroespacial y que siguen siendo empleados a día de hoy. Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas
29 de enero de 2019
AI & Data
Machine Learning para el Pentesting: La Importancia de la IA en el ámbito de la Ciberseguridad
Muchas empresas utilizan herramientas para analizar la seguridad de sus productos, una de estas herramientas son las GANS ( Generative Adversarial Networks) y con ellas se puede detectar los fallos que hay en un modelo de machine learning. Además se pueden utilizar para entrenar determinados modelos y hacerlos más robustos. Las GANS son algoritmos de inteligencia artificial diseñados para llevar a cabo aprendizaje automático no supervisado, están compuestos por un sistema de redes neuronales que compiten entre sí. A continuación os hablaremos de tres interesantes frameworks que pueden resultarte muy útiles si quieres entrenar tus modelos de machine learning. Las GANS son algoritmos de inteligencia artificial diseñados para llevar a cabo aprendizaje automático no supervisado. Están compuestos por un sistema de redes neuronales que compiten entre sí. A continuación os hablaremos de tres interesantes frameworks que pueden resultar muy útiles si quieres entrenar tus modelos de ML. DEEP-PWNING Es un pequeño framework escrito en Tensorflow que sirve para experimentar con modelos de machine learning con el fin de evaluar su nivel de robustez frente a un adversario motivado. En la actualidad Deep-pwning no ha alcanzado su máximo desarrollo, se trata de un framework con el que experimentar y cuyos conocimientos se expanden paulatinamente abriendo así la posibilidad de que en un futuro pueda convertirse en una herramienta para realizar test de penetración y estudios estadísticos sobre algunos modelos machine learning. Los investigadores se han dado cuenta de que es sorprendentemente sencillo engañar a un modelo de machine learning haciéndole tomar decisiones incorrectas. Este campo de investigación se conoce como "adversarial machine learning".No es ninguna exageración decir que cualquier atacante podría bypasear cualquier sistema de machine learning. Lo único que necesitaría es tiempo e información con la que manipularlo. Esta posibilidad suele ser pasada por alto cuando los ingenieros y diseñadores elaboran estos sistemas. Las consecuencias son preocupantes cuando se ponen estos sistemas en situaciones críticas en ámbitos como el médico, el financiero o la seguridad. ADVERSARIAL LIB Esta librería escrita en Python es open source y al igual que Deep-pwning está diseñada para evaluar la seguridad de los clasificadores machine learning frente a los "adversarial atacks" . Viene con diversas funciones muy potentes. Su uso es tan sencillo como lanzar un script. Soporta un amplio rango de algoritmos de machine learning, los cuales optimiza y reescribe en C++. Además, en caso de necesitar un algoritmo que no se encuentre en la librería, se puede añadir a ésta, convirtiéndola así en una herramienta cada vez más completa. THE GAN ZOO Para terminar, os hablamos de The GAN Zoo, una página de referencia en la que se pueden encontrar infinidad de GANS con las que poner a prueba y entrenar modelos de machine learning. The GAN Zoo tiene detrás de sí una gran comunidad de desarrolladores que cada semana añaden nuevos papers a su repositorio en GitHub. El machine learning se ha convertido en una poderosa herramienta para los desarrolladores e investigadores en el campo de la seguridad informática. La posibilidad de utilizar una herramienta para llevar a cabo numerosos test de seguridad y penetración ahorra mucho tiempo y esfuerzo a los investigadores permitiéndoles centrarse en otras tareas simultáneamente. Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas Para mantenerte al día con LUCA visita nuestra .
9 de enero de 2019
AI & Data
MYCIN, el comienzo de la Inteligencia Artificial en la medicina
El mundo de la Inteligencia Artificial abarca cada vez más campos y su uso en la vida cotidiana es cada vez más habitual, desde los videojuegos hasta la creación de hogares inteligentes. Todo ello ha sido posible gracias a numerosos sistemas expertos, diseñados originalmente para aprender de los humanos y replicar su comportamiento. Hoy os hablaremos de cómo uno de estos sistemas logró marcar un hito en el ámbito médico. MYCIN fue uno de los primeros sistemas expertos desarrollados en la historia de la IA. Su objetivo era facilitar el diagnóstico de enfermedades de la sangre, apoyando a los médicos y ahorrándoles tiempo en sus decisiones clínicas. Era capaz de identificar las bacterias responsables de las infecciones en los pacientes y sugería los antibióticos adecuados, ajustando las dosis según el peso del paciente. También detectaba enfermedades infecciosas graves como la meningitis o la bacteriemia. MYCIN fue pionero en demostrar que una máquina podía igualar —y a veces superar— a médicos humanos en tareas específicas. Su desarrollo comenzó a principios de los años setenta en la Universidad de Stanford, como parte de la tesis doctoral de Edward Shortliffe, bajo la supervisión de varios expertos, entre ellos Bruce Buchanan. El sistema fue escrito en Lisp y se tardaron entre cinco y seis años en completarlo. El nombre "MYCIN" se inspiró en los nombres de algunos de los antibióticos que recetaba. Cómo funcionaba MYCIN: un avance que nunca llegó a los hospitales MYCIN es un sistema experto creado a partir de una serie de reglas causa-efecto. Su base de datos consta de alrededor de unas 500 reglas. Para que el programa funcione, es necesario que un sujeto responda una serie de preguntas cuyas respuestas solo pueden ser “sí” y “no”. Una vez obtenido el diagnóstico, muestra la lista de las posibles bacterias culpables de la dolencia además de indicar su índice de confiabilidad. Su comportamiento es muy similar al de un doctor de verdad; de hecho, también es capaz de explicar cómo llegó a su conclusión final y de recetar los medicamentos necesarios para acabar con las bacterias. El 70% de aciertos en diagnósticos superaba en muchos casos a médicos especialistas. Aunque MYCIN fue todo un éxito, el programa no llegó a utilizarse en los hospitales. Sus resultados eran bastante buenos. De hecho, el porcentaje de acierto en sus diagnósticos rondaba por el 70%, una cifra en la mayoría de los casos superior a la obtenida por la mayoría de los expertos humanos en una serie de pruebas realizadas bajo los mismos criterios. Un legado que sigue vigente A pesar de su alto nivel de exactitud a la hora de realizar diagnósticos, el programa tuvo bastantes críticas que concluyeron haciendo que nunca llegase a utilizarse en los hospitales por problemas legales. Si se diese el caso en el que el programa ofreciese un diagnóstico erróneo con consecuencias negativas para un paciente (incluyendo la muerte), ¿quién sería el responsable? MYCIN abrió el debate sobre la responsabilidad legal de la inteligencia artificial en la toma de decisiones críticas. Aunque todavía no se ha explotado todo el potencial de los sistemas expertos en el ámbito médico, hay muchas iniciativas en marcha. En la actualidad también se están aplicando con gran éxito a otros muchos campos: desde la selección de los mejores candidatos para la autorización de créditos en algunas entidades bancarias hasta la realización de prospecciones minerales o la ingeniería genética. IA & Data Medicina de precisión: tu ADN es una herramienta clave para cuidar tu salud 15 de julio de 2024 Actualizado abril 2025.
15 de noviembre de 2018
AI & Data
Sistemas Expertos en Medicina
Desde su aparición hace unos años los sistemas expertos se han aplicado en distintos campos, debido a su eficacia han incrementado los proyectos que buscan sus aplicaciones en el ámbito clínico. A continuación os recordaremos en qué consisten los sistemas expertos y cuáles son algunas de sus posibles aplicaciones, en este caso asociadas al ámbito de la medicina. Un Sistema Experto (SE) es un programa que emplea una serie de conocimientos humanos adquiridos para resolver problemas o realizar tareas que normalmente resolverían humanos expertos. En muchos casos estos programas llegan a funcionar mejor que cualquier experto humano debido a su eficacia y velocidad a la hora de tomar decisiones. En la actualidad los sistemas expertos constituyen el área de aplicación de la I.A. con mayor éxito en el mundo de la medicina. Los sistemas expertos permiten almacenar y utilizar el conocimiento de uno o varios expertos humanos en un dominio de aplicación concreto. El uso de herramientas avanzadas como los sistemas expertos incrementa la productividad y la eficiencia en la toma de decisiones, algo fundamental para la resolución de problemas cuando los expertos tienen dudas o no están presentes. A continuación os presentaremos brevemente algunos de los sistemas expertos que han triunfado en el mundo de la medicina: MYCIN: Diseñado en Stanford por Edward Shortliffe, es capaz de diagnosticar enfermedades infecciosas de la sangre y recetar los antibióticos apropiados. PUFF: Diseñado a finales de los 70 con la colaboración de Robert Fallat (especialista en enfermedades pulmonares) es capaz de diagnosticar enfermedades pulmonares. CADUCEUS: Originario de la Universidad de Pittsburgh es utilizado para la realización de diagnósticos en medicina interna. Estos sistemas expertos resultan muy útiles y pueden facilitar mucho el trabajo de algunos profesionales, a pesar de ello muchos expertos en el mundo de la medicina han manifestado su inquietud frente a la idea de que en un futuro todo el proceso de toma de decisiones pueda quedar en manos de máquinas, volviendo irrelevante el papel de los médicos. Sin embargo, hay que aclarar que los sistemas expertos en medicina no están pensados para sustituir al médico, sino para complementar su labor. Por el momento no existe ninguna máquina capaz de simular el comportamiento de un doctor ni su ojo clínico (serie de conocimientos adquiridos por un profesional a lo largo de todo su ejercicio).
18 de octubre de 2018
AI & Data
Historia de Lisp y su uso en redes neuronales (II)
Hace un mes dimos comienzo a una serie de dos artículos en la que se hablaría de Lisp. En la primera parte hablamos de su historia, sus comienzos y utilidades a la hora de crear redes neuronales. En esta segunda parte de la serie os mostraremos como funciona Lisp y a elaborar una sencilla red neuronal. Antes de comenzar, recordaremos brevemente cómo funcionan las redes neuronales. Las redes neuronales se basan en una serie de nodos o “neuronas” que se encuentran conectados entre sí conformando una serie de capas, su funcionamiento pretende simular el comportamiento de un cerebro humano a la hora de resolver un problema, a medida que la señal avanza ésta irá tomando un camino u otro en función de una serie de parámetros preestablecidos. Nuestra red neuronal en cuestión será bastante sencilla y constará de tres capas, su función será averiguar en qué compañero de nuestro equipo de trabajo estamos pensando, si nos fijamos en la imagen de abajo, los nodos o neuronas corresponderían al nombre de nuestros compañeros y las capas corresponderían a las condiciones que nos llevan hacia una respuesta u otra. Figura 2. Aunque esta red neuronal consiste en 3 capas, puedes incrementar la complejidad de una red neuronal agregando capas y subcapas (Fuente: Gengiskanhg, Wikipedia.) Para crear las distintas capas de la red utilizaremos preguntas a las que solo se pueda responder con sí o no. Las preguntas serán escogidas cuidadosamente para que al responderlas se pueda ofrecer una respuesta o de lo contrario se pase a la siguiente capa. Este proceso se repetirá tantas veces como sea necesario hasta obtener una respuesta. A medida que el usuario vaya contestando preguntas, menor será el número de posibles candidatos para una respuesta final. En este breve ejemplo en cada pregunta contestada se puede obtener la respuesta o de no ser así se descarta un posible candidato. Figura 3. Nuestro ejemplo de la red neuronal nos dice en quien estamos pensando Como ya os hemos dicho, esto se trata de un ejemplo bastante sencillo, pero partiendo de esta base se pueden crear redes neuronales mucho más complejas a medida que se van añadiendo capas y subcapas. Un claro ejemplo de ello es el sistema experto Akinator, del cual ya os hemos hablado anteriormente en el blog. En el caso de Akinator la red neuronal que lo compone es inmensa y ésta aumenta a medida que se añaden nuevos personajes (nodos) al “juego”. El lenguaje LISP es uno de los mejores ejemplos para entender algunos de los conceptos de la Inteligencia Artificial y la programación funcional (como la recursividad), es por eso que se convirtió en el favorito de muchos investigadores del MIT para desarrollar sus proyectos durante los años posteriores a su aparición. ◾ MÁS DE ESTA SERIE AI of Things Historia de Lisp y su uso en redes neuronales (I) 20 de junio de 2018
23 de julio de 2018
AI & Data
Historia de Lisp y su uso en redes neuronales (I)
Hoy damos comienzo a una nueva serie que constará de dos artículos en los que os haremos una breve introducción a Lisp, hablaremos de sus comienzos, su historia y os enseñaremos a hacer una pequeña red neuronal utilizando este lenguaje de programación. Desde los años 50 la programación funcional ha sido cada vez más utilizada en el campo de la inteligencia artificial, y esto se debe en gran parte a la aparición de Lisp. Este lenguaje fue creado por John McCarthy, hoy considerado por muchos como el padre de la Inteligencia Artificial, su idea era optimizar el funcionamiento y el uso de recursos en los ordenadores de la época y como resultado apareció List Procesor (LISP). Este nuevo lenguaje, basado en parte en el ya existente Fortran, utilizaba algunas técnicas innovadoras como las estructuras de datos de árbol o el uso de la computación simbólica de la cual nacería posteriormente la programación simbólica. Como ya os hemos dicho al comienzo del artículo, la programación funcional tuvo sus inicios en los años 50, prácticamente a la vez que Lisp. Este nuevo estilo de programación fue en el que se basaron los ordenadores científicos IBM700/7000 series. El funcionamiento de Lisp se basa en el cálculo lambda, el cual es un modelo universal de computación que puede ser usado para simular cualquier máquina de Turing. Su nombre, debido a la letra griega lambda, se utiliza en términos de vincular una variable a una función. Este tipo de cálculo es sorprendentemente simple y potente. Su núcleo se basa en dos fundamentos bastante simples: la abstracción de funciones (sirve para generalizar expresiones a través de la introducción de variables) y la aplicación de la función, utilizada para evaluar expresiones dándoles nombres a determinados valores. Lisp no tardó en convertirse en el lenguaje favorito en el mundo de la Inteligencia Artificial. Su uso en el MIT se volvió algo habitual en numerosos proyectos de investigación. A diferencia de otros lenguajes, su base matemática le permitía resolver operaciones y ser utilizado para probar teoremas. Muchos de los lenguajes y algunos de los programas más revolucionarios de la Inteligencia Artificial a lo largo de la historia están basados en Lisp, de hecho términos tan habituales como If, Else o Then fueron inventados por John McCarthy. A pesar de los términos mencionados anteriormente, Lisp utiliza una estructura distinta a los demás lenguajes de programación, sobre todo en lo que a las operaciones matemáticas se refiere. Sin embargo, no es un lenguaje que resulte complicado de comprender. Para terminar con este primer artículo, explicaremos brevemente cómo funciona una pequeña red neuronal. Las redes neuronales se basan en una serie de pequeños nodos ( neuronas artificiales) que se encuentran conectados entre sí conformando una serie de capas. Su funcionamiento pretende simular el comportamiento de un cerebro humano a la hora de resolver un problema. A medida que la señal avanza, ésta irá tomando un camino u otro en función a unos parámetros establecidos previamente hasta ofrecer un resultado. Las redes neuronales se han utilizado durante años para realizar varias tareas como, por ejemplo el reconocimiento de voz o la creación de sistema expertos con conocimiento incorporado, algo que marcó un cambio en el rumbo de la inteligencia artificial en los años 80. ◾ MÁS DE ESTA SERIE AI of Things Historia de Lisp y su uso en redes neuronales (II) 22 de julio de 2018
21 de junio de 2018
AI & Data
Los Sistemas Expertos que han logrado derrotar a humanos
No es la primera vez que en este blog os hablamos sobre "sistemas expertos" y sobre los avances que supusieron durante los comienzos de la inteligencia artificial. Según el matemático Alan Turing en algún momento de la historia las maquinas obtendrían inteligencia siendo capaces de simular comportamientos y razonamientos similares a los de un humano. Hoy en día la predicción de Turing no parece tan lejana ya que los avances en el sector de la inteligencia artificial durante los últimos años han sido destacables. A continuación os hablaremos sobre algunos de los Sistemas Expertos que han sido capaces de derrotar a humanos y han logrado dar a conocer la Inteligencia Artificial durante los últimos años. Comenzaremos hablándoos de Deep Blue, el sistema experto desarrollado por IBM que logró derrotar al campeón de ajedrez Garri Kasparov en 1997. Desde siempre, el juego del ajedrez ha sido asociado al intelecto y a la inteligencia de sus jugadores, sin embargo el juego en sí depende en gran parte de la probabilidad y de la estadística a la hora de analizar cada movimiento. Este experimento comenzó el 1996, durante un torneo en el que Deep Blue (el ordenador de IBM) fue derrotado por Kasparov en las dos partidas que jugó. Esto resultó un duro golpe para IBM que siguió trabajando para desarrollar una versión mejorada de su ordenador a la que llamó Deeper Blue y que en 1997 fue capaz de derrotar al campeón en tres ocasiones seguidas. Este acontecimiento generó un gran revuelo haciendo que el campo de la Inteligencia Artificial se diese a conocer en todo el mundo. Tras Deep Blue, muchas otras compañías se interesaron en el mundo de la Inteligencia Artificial, como es el caso de Google, el cual en 2005 presentó al mundo a AlphaGo, un sistema experto cuya función es ganar partidas de Go, un juego de origen chino cuya complejidad es superior a la del ajedrez. A pesar de su complejidad y la dificultad de reducir el juego a un problema de combinatoria AlphaGo derrotó al campeón de Europa Fan Hui en las 5 partidas que jugaron. El secreto de AlphaGo reside en el Deep Learning de Google, un sistema avanzado de algoritmos de aprendizaje automático que hacen que el programa sea capaz de aprender a partir de los datos que recopila sobre una materia concreta, en este caso sobre el juego del Go. Está previsto que AlphaGo siga enfrentándose a algunos de los jugadores más experimentados durante los próximos años. Continuamos con otro de los sistemas expertos desarrollados por IBM, en este caso se trata de Watson, un motor de computación cognitiva que fue capaz de ganar a participantes humanos en un concurso de preguntas y respuestas llamado Jeopardy. Con Watson, IBM volvió a demostrar al mundo que sus sistemas expertos son capaces de superar a los humanos en muchos ámbitos. Watson es un sistema experto muy avanzado, que tiene más utilidades. De hecho, ganar el concurso , solo fue una demostración de su potencial. Actualmente este sistema experto es utilizado para hacer recomendaciones de productos en algunas plataformas de compra online o en el campo de la medicina ayudando en el diagnóstico de enfermedades. Por último, os hablaremos de uno de los sistemas expertos más recientes y que, gracias a sus algoritmos de Deep Learning, es capaz de jugar a juegos que requieren bastante información, como en el caso del Go, el Ajedrez o el Poker (juego por el que se ha hecho famoso). El sistema experto en cuestión se llama DeepStack y es el resultado de un estudio finalizado en diciembre de 2016 y publicado en marzo de 2017. DeepStack ha sido capaz de aprender a jugar al póquer tomando decisiones en menos de 5 segundos (funciona en cualquier portátil con una GPU de Nvidia) y es capaz de simular la intuición humana en cada mano de la partida. Durante su proceso de aprendizaje el programa jugó más de 44.000 manos de póquer y actualmente ha sido capaz de derrotar a más de 11 jugadores profesionales. Figura 1: Fichas de poker. Es muy posible que las direcciones que ha tomado la inteligencia artificial durante los últimos años difieran de lo que esperaban sus creadores. Sin embargo, los avances en este sector no han hecho más que empezar. Poco a poco la Inteligencia Artificial se va abriendo paso para incorporarse en tareas cotidianas como la realización de compras. Hoy en día el uso de asistentes de voz como Siri, Cortana o Google Now no nos resulta nada extraño. Sin embargo, hace años esto podría parecernos ciencia ficción. La Inteligencia Artificial todavía es un campo joven que tiene mucho que ofrecer. Proyectos como los anteriormente mencionados ayudan a dar visibilidad a este sector que cada vez va ganando más adeptos. Para mantenerte al día con LUCA, visita nuestra .
22 de mayo de 2018
AI & Data
Akinator, un adivino basado en sistemas expertos
En este blog ya hemos hablado de sistemas expertos en otras ocasiones. Los sistemas expertos pueden considerarse como el comienzo de la inteligencia artificial. Según el matemático Alan Turing en algún punto de su historia las maquinas obtendrían inteligencia siendo capaces de simular comportamientos y razonamientos similares a los de un humano. Hoy en día la predicción de Turing no parece tan lejana ya que los avances en el sector de la inteligencia artificial durante los últimos años han sido destacables. En la actualidad es muy común el uso de productos y aplicaciones basadas en la inteligencia artificial, desde Siri hasta Google Now. En este artículo os hablaremos de Akinator, una aplicación que funciona gracias a un sistema experto con estructura de árbol. La aplicación en cuestión es un programa cuyo objetivo es adivinar el nombre del personaje en el que estás pensando. Para ello ,realiza una serie de preguntas a las que puedes responder: "Si", "No", "No lo sé", "Probablemente sí" y "Probablemente no". Tras una serie de preguntas Akinator es capaz de decirte el nombre del personaje en el que estabas pensando con una probabilidad muy pequeña de equivocarse. Para explicar más en profundidad como funciona este sistema experto tomaremos un ejemplo, el personaje escogido para esta prueba será Chema Alonso, CDO de Telefónica. Con nuestro personaje en mente comenzamos a contestar las preguntas de Akinator. El genio comienza con preguntas muy genéricas acerca del sexo, la existencia y la edad del personaje, a medida que vamos respondiendo a esas preguntas Akinator va descartando candidatos y va haciendo preguntas un poco más concretas hasta adivinar en quien pensamos. Figura 1: Avinator es una aplicación que usa un sistema experto con estructura de árbol. Justo debajo de las preguntas se muestra una barra que indica el progreso del proceso, esta va avanzando a medida que vamos respondiendo preguntas, si alguna de las respuestas dadas no corresponde con lo que Akinator esperaba la barra retrocederá. En muchas ocasiones Akinator es capaz de adivinar nuestro personaje en tan solo 8 preguntas. Dependiendo de nuestras respuestas el programa va tomando un camino u otro, por ejemplo, si nos pregunta que si nuestro personaje es de sexo masculino y respondemos que sí, Akinator descartará automáticamente todos los personajes femeninos que consten en su base de datos. Tras cada pregunta se reduce el número de posibilidades. Por otro lado, si damos una respuesta errónea, el genio seguirá siendo capaz de adivinar el personaje en el que pensamos haciendo preguntas clave como: “¿Su personaje es un hacker?” o “¿Su personaje lleva gorro?”. Cuando este sistema experto llega a una conclusión nos muestra un personaje en pantalla y nos pregunta si es en el que estábamos pensando. En caso de no haber acertado, nos ofrece dos opciones: abandonar el juego o continuar respondiendo preguntas. Si Akinator acierta, podremos encontrar el informe de nuestra partida deslizando nuestra pantalla hacia la derecha. En el registro nos muestra todas las preguntas a las que hemos respondido indicándonos la respuesta esperada por Akinator y nuestra respuesta, en caso de no coincidir las respuestas la pregunta saldrá marcada en color rojo. Figura 2: Akinator adivinó con éxito a nuestra persona, Chema Alonso. En el registro también pueden aparecer preguntas marcadas en azul, en las que la respuesta esperada por Akinator no es ninguna. Esto puede deberse a que ya se haya respondido a una pregunta similar anteriormente o que Akinator desconozca esa información acerca del personaje. Si nuestro personaje no aparece en la base de datos de Akinator, evidentemente no podrá ser adivinado y la aplicación nos ofrecerá la posibilidad de añadirlo a su base de datos. Para hacerlo, deberemos introducir su nombre, una breve descripción y una fotografía suya si disponemos de ella. Sin duda, esto es solo un curioso ejemplo de la aplicación de los sistemas expertos. Pero cada vez es más común su uso en muchas empresas debido a su capacidad de gestionar grandes volúmenes de datos y ofrecer las mismas respuestas que ofrecería un humano experto en un menor periodo de tiempo.
3 de mayo de 2018
AI & Data
Plataformas y librerías para comenzar en el mundo del Machine Learning
Desde los comienzos de la IA las principales empresas tecnológicas han empleado sus técnicas de aprendizaje con juegos clásicos como el ajedrez o el Go (juego tradicional chino) para mostrar su progreso siendo muchas veces capaces de derrotar a seres humanos como el campeón de ajedrez Gary Kasparov, que fue derrotado por Deep Blue de IBM. A día de hoy, la inteligencia artificial (IA) se ha convertido en uno de los campos de desarrollo con más potencial, y se estima que durante los próximos años se convertirá en uno de los sectores que más avance y genere mayores beneficios a las empresas. En este campo emergente, con una tasa anual de crecimiento de un 25%, existen varias plataformas enfocadas a que los desarrolladores puedan trabajar en sus proyectos. Las plataformas consisten en software que una empresa ofrece a terceros, haciendo que éstas dependan del mismo a la hora de realizar su trabajo (como por ejemplo el sistema operativo Windows). A continuación os hablaremos de algunos de los lenguajes y librerías que pueden resultarte de interés si quieres comenzar en este mundillo. Comenzaremos hablando de Python, Python es un lenguaje de programación con propósitos más generales que su uso en la inteligencia artificial. Sin embargo, está obteniendo gran popularidad entre expertos e ingenieros de Machine Learning. Todo esto se debe a algunas de sus librerías, algo que le hace capaz de ofrecer casi las mismas funcionalidades que otros lenguajes o plataformas como R o MatLab. A continuación, os presentaremos brevemente algunas de ellas. Si quieres saber más sobre librerías de Python, no te pierdas este otro post de nuestro blog: Python para todos (3): ScyPy, NumPy, Pandas ...¿Qué librerías necesitamos?) NumPy: Esta es la principal librería para computación científica, contiene herramientas para integrar C++ e incluye funciones útiles en Algebra y transformadas de Fourier. SciPy: En este caso tenemos una librería open-source para las matemáticas, ciencia e ingeniería. Esta librería incluye paquetes como Matplotlib o Pandas. Pandas: Es una de las mejores librerías para el análisis de datos, es open-source y proporciona un alto rendimiento y facilidad de uso haciendo que no sea necesario cambiar nuestro código a otros lenguajes como R para poder analizarlo. Scikit-learn: Esta librería está completamente enfocada al machine learning, ofrece herramientas simples y eficientes para la extracción y análisis de datos, es accesible para todo el mundo y está construida en base a NumPy, SciPy y Matplotlib. Theano: Con esta librería podrás definir, evaluar y optimizar funciones matemáticas, tiene un funcionamiento fluido y se puede integrar con NumPy. Tensorflow: Es una librería dedicada a la computación numérica, TensorFlow fue creada originalmente por el Brain Team de Google con el fin de realizar investigación de redes neuronales a un nivel profundo, pero su uso también es aplicable a varios dominios. Continuamos con C++, un lenguaje enfocado principalmente a software a bajo nivel como el de componentes de un sistema operativo o protocolos de red. Este lenguaje se utiliza con frecuencia en sistemas integrados e infraestructuras que funcionan con sensores. En muchas ocasiones resulta ser un lenguaje un poco complicado para principiantes pero goza de un gran potencial. A continuación os presentamos algunas de las librerías que se pueden utilizar en C++ para realizar trabajos de Machine Learning. LibSVM: Esta librería es muy útil para trabajar con máquinas de soporte vectorial (SVM), sirve para resolver problemas de clasificación y regresión de vectores. También puede servir para predecir la clase de una futura muestra. Shark: Esta librería ofrece métodos de optimización lineal y no lineal, está basada en el aprendizaje de los algoritmos del núcleo, redes neurales y otras técnicas avanzadas de machine learning. Es compatible con la mayoría de sistemas operativos. Mlpack: En este caso nos encontramos frente a una librería cuya finalidad es ofrecer una rápida puesta en marcha de los algoritmos de machine learning, esto lo hace proveyendo a estos algoritmos una línea de código simple que facilita su integración en soluciones de mayor escala. Otro de los lenguajes más utilizados en el Machine Learning es Java, esto se debe a que es un lenguaje orientado a objetos y es bastante consistente, se basa en la claridad y fiabilidad, es open-source y es compatible con cualquier plataforma. Con java podrás desarrollar prácticamente cualquier aplicación, además cuenta con una gran cantidad de librerías, a continuación os presentaremos algunas de ellas enfocadas al mundo del Machine Learning. Spark+MLlib: Esta librería encaja a la perfección con las APIs de Spark y trabaja conjuntamente con NumPy, Spark acelera el funcionamiento de MLlib, cuyo objetivo es realizar un aprendizaje escalable y más sencillo. Mahout: Nos encontramos frente a una librería similar a NumPy, está enfocada a las expresiones matemáticas, algebraicas y estadísticas. Deeplearning4j: Esta es una librería dedicada al Deep learning, está escrita para Java y Scala, ofrece un entorno para que los desarrolladores entrenen y elaboren modelos de IA. Por último, pero no por ello menos importante os hablamos de R, un lenguaje diseñado para la programación estática, es uno de los mejores para minar datos a gran escala y que también ofrece una gran colección de paquetes que permiten aplicar infinidad de algoritmos de Machine Learning y realizar test estáticos con ellos. Varias de las librerías mencionadas anteriormente son compatibles con R, y es por eso que , habiendo diversas posibilidades a la hora de elegir un lenguaje o plataforma para trabajar con IA a día de hoy, R es uno de los favoritos para desarrolladores de todo el mundo. Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas
24 de abril de 2018
AI & Data
Sistemas Expertos, el comienzo de la inteligencia artificial
En un mundo cada vez más digital, escuchar el término Inteligencia Artificial no nos resulta nada raro. Este término se escuchó por primera vez en 1950, cuando el filósofo y matemático Alan Turing publicó su obra Inteligencia y funcionamiento de las máquinas. En su obra Turing explicó que en algún punto las maquinas obtendrían inteligencia y serían capaces de simular los razonamientos de un humano. Poco después Allen Newell y Herbert Simon desarrollaron la teoría de la lógica, la cual fue aplicada a la hora de crear el primer Sistema Experto. Hoy en día los Sistemas Expertos (SE) pueden ser considerados como un subconjunto de la IA. Un Sistema Experto es un sistema que emplea conocimiento humano capturado en un ordenador para resolver problemas que normalmente resolverían humanos expertos. Los sistemas bien diseñados imitan el proceso de razonamiento que los expertos utilizan para resolver problemas específicos. Estos sistemas pueden funcionar mejor que cualquier humano experto tomando decisiones individualmente en determinados dominios y pueden ser utilizados por humanos no expertos para mejorar sus habilidades en la resolución de problemas. Los Sistemas Expertos fueron desarrollados por la comunidad de IA a mediados de los años 60. En este periodo de investigación en el campo de la IA se creía que con la suma de unas pocas reglas de razonamiento y potentes ordenadores se podía producir un experto de rendimiento superhumano. Durante esta época los investigadores Allen Newell y Herbert Simon desarrollaron un programa llamado GPS (General Problem Solver). Este programa era capaz de trabajar con criptometría, con las torres de Hanoi y problemas similares. Sin embargo, era incapaz de hacer lo que su propio nombre indicaba, resolver problemas en la vida real. Esto hizo que algunos investigadores estudiasen la posibilidad de enfocar sus programas a un dominio más concreto y así intentar simular el modo de actuar y los razonamientos de un experto humano, lo que significó el nacimiento de los Sistemas Expertos tal y como los conocemos hoy en día. Uno de estos investigadores fue Edward Feigenbaum, que junto a su equipo logró desarrollar DENDRAL, el primer Sistema Experto en ser utilizado para propósitos reales (fue utilizado durante más de 10 años), el cual tuvo un gran éxito entre químicos y biólogos ya que era capaz de identificar estructuras químicas moleculares a partir de su análisis espectrográfico. Despues de DENDRAL vino MYCIN, un Sistema experto orientado a la investigación y determinación de diagnósticos en el campo de las enfermedades infecciosas de la sangre. Este sistema experto introdujo el conocimiento impreciso a la hora de razonar y la capacidad de explicar el proceso de razonamiento usado dando lugar a un sistema vacío (Shell) que resultó en la aparición de varios sistemas expertos orientados a la determinación de problemas médicos y a la elección del tratamiento para ellos. Hay dos tipos de Sistemas Expertos, basados en reglas y los basados en probabilidades. En el caso de los primeros el SE aplica leyes heurísticas apoyadas en la lógica difusa, en cambio en los basados en la probabilidad el SE aplica redes bayesianas basadas en la estadística y el teorema de Bayes. En la actualidad estos Sistema Expertos han evolucionado y siguen siendo de gran utilidad para muchas empresas ya que son capaces de manejar grandes volúmenes de información y mejorar la productividad de las mismas. Durante los últimos años la inteligencia artificial ha avanzado y su aplicación se ha extendido en varios campos, incluyendo entre ellos el de la robótica, domótica, incluso el de la seguridad informática.
5 de marzo de 2018