29 de mayo de 2018

¿Qué es la visión artificial?


La visión artificial es una disciplina que tiene como objetivo conseguir que los ordenadores puedan obtener determinadas informaciones a partir de imágenes fijas o en movimiento. En la visión humana, a través de los ojos recibimos puntos de luz que se envían por el nervio óptico al cerebro para que los procese; es en el cerebro donde se produce ese proceso por el cual identificamos, por ejemplo, una gran mancha azul con el cielo, o una figura rectangular como una mesa. El objetivo de la visión artificial es que los ordenadores también puedan hacer ese tipo de procesamiento.

La visión humana, para reconocer los objetos, necesita de un periodo de aprendizaje. Esto ha podido comprobarse recientemente de manera experimental, en un estudio del MIT publicado en la revista Nature Neuroscience. ¿Cómo llegaron los científicos a esta afirmación? Detectaron a 5 pacientes que eran ciegos de nacimiento por razones operables (cuatro por cataratas congénitas y uno por opacidad de la córnea). Operaron a todos ellos, con lo que los pacientes dejaron de ser ciegos. Al retirar los vendajes de los ojos, comprobaron que los pacientes eran capaces de ver; para ello, mostraron un primer objeto a los pacientes, y a continuación les mostraron dos objetos, pidiendo a los pacientes que identificaran el original. Todos eran capaces de hacerlo; sin embargo, no fueron capaces de superar otra prueba que hicieron a continuación. La prueba consistió en impedir temporalmente la visión de los pacientes y pedirles que tocaran con sus manos ciertos objetos. Después, y ya con la visión recuperada, se pidió a los pacientes que identificaran qué objetos habían tocado. No fueron capaces. El experimento fue repetido al cabo de una semana, y los pacientes ya habían experimentado una mejora importante en los resultados a esta segunda prueba.

Los humanos, por tanto, necesitamos de un cierto tipo de entrenamiento para poder identificar objetos con la vista. Según uno de los investigadores que participaron en el estudio citado, algunas tareas complejas como por ejemplo identificar una cara, pudieron tardar entre 6 y 12 meses para los pacientes una vez que comenzaron a ver.

Esta es una conclusión empírica que cierra un debate abierto en filosofía desde 1693, cuando el científico irlandés William Molyneux se lo planteó a John Locke. El empirista Locke, en su Ensayo sobre el entendimiento humano, respondió en línea con lo que ahora se ha comprobado, pero otros pensadores posteriores, como Leibniz o Diderot, argumentaron en contrario.

De la misma forma que los humanos, los ordenadores también necesitan un periodo de aprendizaje para poder reconocer objetos en imágenes. Esto es algo que sabemos porque somos capaces de provocarlo mediante programación.

La pregunta que queremos responder entonces es ¿Cómo se puede provocar ese aprendizaje artificial? ¿Cómo aprenden los ordenadores a “ver”?

Imaginemos que mostramos a una persona mil fotografías de perros chihuahua. Desde distintas perspectivas y posiciones. Sería algo parecido a esto:



Después, mostramos a esa misma persona una fotografía y le preguntamos si lo que aparece en ella es un perro chihuahua. Lo más probable es que acierte. Pues algo parecido es lo que hacemos con los ordenadores con el “machine learning”.

Básicamente, el “machine learning” o aprendizaje automático en visión artificial consiste en aportar un número muy elevado de imágenes a un ordenador, e indicarle que todas ellas representan una misma cosa; junto a esto, se aporta también al ordenador una función matemática normalmente muy sencilla, de tipo lineal, y que representa la relación entre las características de la imagen (que el ordenador expresa en forma de conjunto ordenado de valores numéricos que representan los colores de cada pixel), y la identificación con el objeto indicado.

Las funciones que se utilizan más habitualmente son de este tipo:



La primera es una función sigmoide y la segunda una rectificación lineal.

Lo que hace el ordenador es ir ajustando automáticamente la función, de tal manera que las características de la imagen que él es capaz de obtener se acerquen lo más posible al resultado dado. Normalmente estos sistemas de aprendizaje automático suelen tener unos niveles bajos al principio (cuando cuentan con pocas imágenes), pero luego pasan a una aceleración en su optimización (cuando cuentan con un número elevado de imágenes). Como se observa en los gráficos, y según nos dicta también el sentido común, cuantas más imágenes (datos) se aporten al ordenador, más eficaz será su aprendizaje. Pues bien, este es el funcionamiento de una red neuronal de visión artificial.

Una red neuronal de visión artificial como la descrita puede conseguir buenos resultados ante la pregunta para la que se ha entrenado de manera específica. En nuestro ejemplo, si aportamos una fotografía al ordenador, y le preguntamos si lo que se muestra en ella es un perro chihuahua, lo más probable es que acierte.

Pero no es infalible. De hecho, los humanos somos mejores que las máquinas en estas tareas. Por ejemplo, a un ordenador entrenado a distinguir chihuahuas le costará mucho distinguirlos de ciertas madalenas, como vemos a continuación:



Sin embargo, nosotros podremos hacerlo fácilmente.

Algunos detractores de estas técnicas de aprendizaje automático las están saboteando conscientemente mediante la incorporación a los sistemas de aprendizaje de ejemplos conflictivos, que hacen que el sistema tenga que “romper” la función matemática que usa, dejándola inservible, porque se han incorporado a la colección de imágenes que el sistema utiliza para aprender, algunas con características totalmente distintas. Este es un tipo de ciberactivismo que puede parecer un simple acto de gamberros, pero que en un mundo en el que los algoritmos cada vez toman más decisiones, puede tener sus consecuencias.

En cualquier caso, las redes neuronales de visión artificial se especializan en la resolución de problemas de este tipo, y su aprendizaje será más eficaz cuanto más optimizada esté la función que utiliza, algo que se produce por la incorporación sucesiva de ejemplos adecuados.

Ahora daremos un paso más dentro de la visión artificial: de las redes neuronales a las redes neuronales profundas de visión artificial (Deep neural networks). ¿Cuál es la diferencia?

El aprendizaje automático (machine learning) puede estar formado por una sola red neuronal que puede tener una estructura muy sencilla, pero cuando esta red neuronal pasa a tener una estructura muy compleja, con muchas capas dentro de sí, estamos ante una red neuronal profunda, que puede generar aprendizaje profundo (Deep learning).

Para comprenderlo mejor, volvamos una vez más a nuestro ejemplo de los chihuahuas. Ya hemos conseguido que nuestro ordenador sea eficaz en la tarea de dilucidar si una fotografía que le aportamos muestra a un chihuahua o no (ha “aprendido” a “ver” chihuahuas). Para ello hemos tenido que aportarle mil fotos de chihuahuas, más la función. El sistema, por sí solo (machine learning) ha ido optimizando la función. Lo interesante es que esto mismo podemos hacerlo con todas las razas de perros que se nos ocurran: dálmatas, pastores alemanes, caniches, etc.

En efecto, podemos aportar mil imágenes de dálmatas, mil imágenes de pastores alemanes, mil imágenes de caniches, etc. El organismo mundial canino Federación Cinológica internacional cifra en 343 las razas de perros existentes en el mundo. De esta manera, con 343.000 imágenes bien seleccionadas seríamos capaces de enseñar a un ordenador a distinguir qué raza de perro aparece en una imagen dada.

Esto puede dar una sensación de sabiduría “humana” en una máquina, y maravillarnos fácilmente: muy pocos de nosotros sabríamos nombrar la raza de la mayoría de los perros, y hay ya sistemas comerciales que lo consiguen sin mayor problema. Sin embargo, su “sabiduría” no es fruto de un aprendizaje “mágico”, sino que en realidad parte de una sistemática muy sencilla. Lo que hace el ordenador es plantearse 343 preguntas seguidas: ¿en la imagen aparece un chihuahua? ¿Y un dálmata? ¿Y un pastor alemán? ¿Y un caniche?, etc. Al final del proceso, si el sistema está bien diseñado, el ordenador habrá respondido negativamente a 342 de esas preguntas, y de manera afirmativa a una de ellas: la correspondiente a la raza del perro que se le ha mostrado. Esto es aprendizaje profundo o “Deep learning”.

Otro acercamiento habitual al “Deep learning” en el caso de la visión artificial, especialmente cuando el anterior no es aplicable, es dividir el problema a resolver por el ordenador en varias fases. Cada una de ellas tendría como entrada la resolución que ha logrado la capa anterior. En este caso las distintas etapas tendrán distintos niveles de complejidad (en el caso anterior todas tienen el mismo nivel), y no podrían resolverse de manera independiente, sino que forman un proceso conjunto. Volviendo a nuestro ejemplo, el de un ordenador que identifica razas de perros, este acercamiento se plasmaría en la resolución sucesiva de varias etapas. Una posibilidad sería que el programador creara algo parecido a esto: 1ª etapa: ¿En la imagen puede verse alguna cabeza?; 2ª etapa: en caso afirmativo, ¿es la cabeza de un perro?; 3ª etapa: en caso afirmativo, ¿es la cabeza de un chihuahua?

Este acercamiento al Deep learning precisa que el programador plantee el problema como un todo, y se programe el sistema para ello. Como puede verse, se trata de un acercamiento más complejo que el anterior.

En cualquier caso, es fácil de comprender que para que el Deep learning funcione adecuadamente, resulta necesario que el ordenador que lo ejecuta cuente con un buen procesador. De lo contrario, el procedimiento resultará muy lento.

Una empresa que cuenta con un número enorme de ordenadores con grandes procesadores es Google. Además, esa empresa cuenta con un número elevadísimo de imágenes que están etiquetadas y que puede utilizar por tanto para dárselas a sus ordenadores para que “aprendan”. Solamente hay que utilizar su buscador de imágenes en Internet para darse cuenta de ello. No es de extrañar en consecuencia que sea probablemente la compañía que más avanzado tiene su conocimiento sobre visión artificial, y más lo esté aplicando a distintas tareas.

Porque de eso se trata: las técnicas de machine learning con redes neuronales y de Deep learning con redes neuronales profundas pueden ser de aplicación a muchas tareas en el campo de la visión artificial. Lo importante en este punto será discriminar, en primer lugar, qué tareas pueden llevarse a cabo con esta estrategia de trabajo y cuáles no y, en segundo lugar, cuáles de las tareas que sí pueden llevarse a cabo son más interesantes que otras.

Además, será fundamental trabajar muy bien los algoritmos, evitando en todo momento los ejemplos conflictivos que puedan echar a perder sus funciones. Cuanto más depurado esté un algoritmo, mejor funcionará. Por eso las grandes empresas tecnológicas están hambrientas de datos: cuantos más datos tengan sobre determinadas realidades, mejor serán capaces sus sistemas informáticos de comprenderlas. Los datos (adecuados) son el petróleo del siglo XXI.

Hasta aquí hemos hablado de la visión artificial con ejemplos sencillos referidos a imágenes, que hemos entendido como estáticas: fotografías. Pero ¿qué pasa con la visión artificial referida a las imágenes en movimiento, los vídeos? La respuesta a esta pregunta es que la cuestión se vuelve más compleja.

En todo caso, y vamos ya concluyendo, lo importante de la visión artificial es que cumpla bien con su labor. Por eso Google y otras empresas similares quieren fichar a los mejores expertos que encuentran. Quieren que sus sistemas de visión artificial funcionen adecuadamente, y eso significa que resuelvan razonablemente bien los problemas que se les presenten.

De lo contrario, podría suceder lo que les pasó a aquellos conejos de la fábula del poeta ilustrado canario Tomás de Iriarte, que se enredaron en la disputa de distinguir galgos de podencos, con consecuencias funestas para ellos. Recordémosla como colofón a esta explicación sobre la visión artificial:

“Por entre unas matas,
seguido de perros,
no diré corría,
volaba un conejo.
De su madriguera
salió un compañero
y le dijo: «Tente,
amigo, ¿qué es esto?»
«¿Qué ha de ser?», responde;
«sin aliento llego...;
dos pícaros galgos
me vienen siguiendo».
«Sí», replica el otro,
«por allí los veo,
pero no son galgos».
«¿Pues qué son?» «Podencos
«¿Qué? ¿podencos dices?
Sí, como mi abuelo.
Galgos y muy galgos;
bien vistos los tengo.»
«Son podencos, vaya,
que no entiendes de eso.»
«Son galgos, te digo.»
«Digo que podencos
En esta disputa
llegando los perros,
pillan descuidados
a mis dos conejos.
Los que por cuestiones
de poco momento
dejan lo que importa,
llévense este ejemplo.


No hay comentarios:

Publicar un comentario