Carrito
El carrito está vacío.
128.-Machine-learning-01jpg

Veo veo

Hace algún tiempo comenzaron a flotar por internet imágenes muy particulares, tanto que le dieron lugar al nacimiento de una nueva forma de arte, el ‘Inceptionismo’, al que algunos de nosotros nos referimos como ‘Google de pepa’.

128.-Machine-learning-A

Estas imágenes fueron generadas utilizando la red neuronal artificial que el gigante megalómano (esperemos por favor que benigno) emplea para ‘buscar por imágenes’. Ahora, a todos nos salta una ceja levantada en duda cuando leemos ‘red neuronal artificial’, así que capaz es un gran momento para tratar de entender qué tanto humo contiene esa construcción. Resulta que una red neuronal artificial es exactamente lo que que el nombre indica, un montón de neuronas conectadas, con la salvedad de que esas neuronas son de mentirita y que viven en una compu, al igual que las conexiones entre sí.

128.-Machine-learning-E.jpg

Lo hermoso es que esta red neuronal artificial se especializa en reconocer objetos o, todavía más interesante, en acercarse muy de a poquito a la idea de generar abstracciones conceptuales que le permitan categorizar objetos, tocándole la puerta a la posibilidad de comprender qué es una silla, independientemente de qué tipo de silla sea. Una especie de problema de los universales metafísicos de sillas ideales. El problema es que esto abre otra discusión: ¿qué hace que una silla sea una silla? Google reconoce a partir de estructura y no de función. Ahí está la parte ‘semántica’ (o algo así) que no logramos resolver vía Inteligencia Artificial (por el momento).

Lo que hace Google es encontrar patrones entre muchas sillas existentes y luego usar eso para identificar (que es lo mismo que hace con el lenguaje). Pero, por más extraño que esto suene ¿puede adelantarse especulativamente a una silla que no guarda parecido con una silla existente? No tenemos idea, pero eso no evita seguir pegándole a la puerta de entender, a ver si se cae.

Para intentarlo, el algoritmo toma imágenes de referencia de los objetos que quiere identificar y les aplica diferentes filtros (como los de Instagram pero menos útiles en términos de selfie), que identifican diferentes rasgos o características de la imagen. Las ‘capas’ de neuronas más cercanas a las que reciben la imagen aplican filtros más gruesos que detectan cosas como patrones o formas generales, mientras que las más lejanas usan filtros más finos que encuentran formas detalladas, específicas. A medida que la imagen avanza a través de la red, va perdiendo la información brindada originalmente por sus píxeles para ganar información referente a su contenido, y al que esté pensando ‘uh, eso es como pensar’, y sí, un poquito sí. También, un poquito, no. Pero no dejemos pasar que un poquito sí, y eso es LOQUÍSIMO.

128.-Machine-learning-Cjpg

Para entender más cómo funciona esto, es necesario pensar en las imágenes como matrices (arreglos de números, tablas en las que cada celda tiene un valor numérico y que, en el caso de las imágenes, representa el color del pixel de ubicación correspondiente) y en los filtros como operaciones con ellas: o sea, si yo fuese una neurona, a mí me llegaría una matriz que representaría la imagen que quiero analizar, y yo haría una cuenta en la que dicha matriz estaría involucrada (como, por ejemplo, multiplicar cada numerito de la matriz por cinco), siendo el resultado de esa cuenta lo que yo le contaría a las otras neuronas. O sea que capa a capa transformo la información tratando de alejarme de los particulares para ir encontrando los generales. Dejo los puntos y voy buscando el patrón que los une, eso que los define.

Pero como para los pibes de Google esto no era suficiente, lo que hicieron fue, literalmente, invertir el proceso y pedirle a la red que tome imágenes y las transforme en otras en las que se vean con más intensidad patrones que estaban presentes en la original. Al darle una foto de un cielo nublado, la red (como nosotros a veces) buscaba formas en las nubes y devolvía una imagen en la que eran mucho más evidentes.

128.-Machine-learning-B

Y como todavía había espacio para limarla, unos alemanes le pidieron a su red que genere imágenes que produjeran actividad similar a la que producían las de los pintores en las capas inferiores de la red, pero parecida a la foto original en las capas superiores. O sea, le pidieron que ‘aprendiera’ qué era lo que hacía que un Van Gogh fuese un Van gogh y le pidieron que ‘pintara’ un Van Gogh a partir de cualquier cosa (y sí, voy a seguir usando comillas hasta que tengamos un mejor lenguaje para esto, que medio que lo estamos necesitando urgente). Aunque, estrictamente, las redes no tenían ni idea de qué hacía a Van Gogh ser Van Gogh, eso se lo dijeron los científicos. Ni siquiera sabían, necesariamente, distinguir entre Van Gogh y Picasso. Nada más sabían que había dos imágenes y que debían armar una nueva que tenga la pinta de una de ellas en las capas inferiores y la pinta de la otra en las superiores. Y las redes pudieron.

128.-Machine-learning-D

Al ver esto, es casi imposible no pensar en cómo las computadoras parecen estar aprendiendo a hacer cosas que nosotros hacemos pero que apenas empezamos a entender cómo hacemos, lo que, inicialmente, nos huele un poco raro: las computadoras son máquinas tontas, son como cajas llenas de burócratas que agarran la información que les damos, revisan un libro de reglas que dice qué tienen que hacer en cada caso, y hacen exactamente eso, nada más. Nada menos. No piensan, no son capaces de tomar decisiones por sí mismas y menos de aprender.

Por supuesto que no, ¿no? ¿O sí?

La inteligencia artificial es una disciplina que se dedica, justamente, a resolver preguntas como esta (aunque la misma gente que labura en IA tiende a evitar el término ‘inteligencia’ porque, bueh, todos los problemas semánticos que venimos teniendo con la nota). ¿Es posible que una computadora sea inteligente como un ser humano, que ‘piense’? ¿Es posible que una computadora aprenda? ¿Cómo? y, peor ¿qué es exactamente ‘aprender’?

La primera de esas preguntas la hizo el inmenso Alan Turing hace unos sesenta años, y sugirió el ahora llamado Test de Turing para determinar si una computadora era inteligente o no. Propuso que se pusiese a un examinador humano a ‘chatear’ con dos sujetos, uno de ellos humano y el otro, una computadora. Si el examinador era incapaz de determinar cuál de los sujetos era humano luego de un tiempo razonable, se consideraría que la computadora había superado el test, por lo que sería considerada inteligente.

Ahora, vale notar un aspecto fundamental de este test: cualquier computadora capaz de imitar a un humano, entienda lo que está haciendo o no, sería capaz de superarlo. Consideremos, volviendo a la analogía de humanos dentro de cajas, una ‘computadora’ compuesta literalmente por una caja de cartón enorme y cerrada dentro de la cual hay una persona que conoce únicamente el idioma inglés, y un manual para agarrar tarjetas con letras chinas en cierto orden y reordenarlas, obteniendo siempre un resultado coherente con el orden original (ojo que esta idea de meter gente en cajas no es mía, es de John Searle). La caja tiene una ranura que permite meter y sacar tarjetas (y agujeritos para respirar, porque necesitamos que la persona esté viva para continuar con el experimento y mechar una referencia al Principito que siempre garpa). Ahora, supongamos que se somete a esta computadora al Test de Turing, siendo el examinador y el otro sujeto personas que conocen únicamente el idioma chino. Tanto al sujeto como a la computadora se les facilita lo que dice el examinador usando tarjetas, y ellos responden de la misma forma.

Si las instrucciones del manual son lo suficientemente buenas, el examinador probablemente no va a poder darse cuenta de cuál de los dos sujetos es una computadora, por lo que nuestra caja con esclavo incluido será considerada ‘inteligente’. Ahora, mirando lo que dijimos antes, podemos ver que la persona no entiende nada de lo que está haciendo. No sabe leer ni escribir chino, por lo que no tiene forma de saber lo que le dice el examinador mediante las tarjetas ni lo que le está respondiendo cuando las reordena; solamente sabe que alguien lo encerró en una caja y que cuando salga lo va a re cagar a trompadas. ¿Considerarían ustedes, sabiendo esto, que nuestra computadora es inteligente? En una de esas, ni siquiera es relevante preguntarse si es inteligente. Dijkstra decía que preguntarse si una máquina puede pensar es igual de relevante que preguntarse si un submarino puede nadar o si Chano puede tocar el piano, aunque esa última entendemos que es válida pero apócrifa.

La discusión que les presento es una discusión aún abierta, y es la de si la mente humana es o no un proceso computacional. Es decir, si es posible describir el proceso mental de un ser humano en su totalidad de forma que este pueda ser llevado a cabo por computadoras (más allá de las limitaciones físicas de memoria y capacidad de procesamiento).

El experimento que llevaron a cabo los muchachos de Google es sorprendente porque nos muestra que el ‘entendimiento’ de lo que es una banana, para la red neuronal artificial en cuestión, es más que suficiente para mostrarnos una banana además de, sencillamente, reconocerla. Podríamos decir que la red sabe lo que es una banana, o, peor, que puede aprender, con ayuda, lo que hace que un Van Gogh sea un Van Gogh.

O, por lo menos, si le pedís que te muestre una banana y un Van Gogh, lo hace como cualquier persona inteligente que sabe lo que es una banana. Para algunos humanos eso es suficiente, para otros, no.
Probablemente, lo más loco de todo sea pensar cómo le hacemos esa pregunta a una red neuronal y, si llegáramos a encontrar la forma de hacer la pregunta, qué respondería.

128.-Machine-learning-f 128.-Machine-learning-G 128.-Machine-learning-h

Una cosita más: Google se copó y liberó el código usado para generar estas imágenes. Está en este repositorio de GitHub. También hay varios sitios en internet a los que uno puede subir imágenes para generar otras nuevas.

Gracias, Valentín Muro y Esteban Siravegna, por la vista y corrección de la nota.

 

http://googleresearch.blogspot.com.ar/2015/06/inceptionism-going-deeper-into-neural.html
Penrose – The Emperor’s New Mind: Concerning Computers, Minds and The Laws of Physics (1989)
Gathys, Ecker, Bethge – A Neural Algorithm of Artistic Style (2015)
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html

 




Hay 15 comentarios

Añadir más
  1. ​María Alejandra Petino Zappala

    bueno, acabo de verle el lado positivo a una eventual dominación del mundo por computadoras: el “arte” va a estar buenísimo.

  2. Ana

    Una genialidad!! Quedé con la boca abierta y no paro de babear.
    La ilustración no le va en zaga.
    Felicitaciones a los autores y a El Gato y … por haberlos invitado y publicar tanto talento.
    Gracias a todos!!

  3. Boris

    Muy buena la nota!
    Una cuestión que está en discusión dentro de la psicología, muy cercana a los estudios de inteligencia artificial tiene que ver con la caracterización de inteligencia. Personalmente creo que la inteligencia depende de dos elementos o procesos: uno es la capacidad de crear (o poyesis) y la otra es la intencionalidad. Por ejemplo, si un ser inteligente que posee lenguaje se topa con algo innominado, puede crear un nombre, o, puede hallar nuevas funciones para su propio cuerpo o ambiente, en cambio, una computadora que este construida sobre un hardware de gran potencial pero tenga un software que no ocupe todas sus funciones, al menos hasta donde sé, no puede crear nuevo software para dominar ese hard.
    Otra cuestión aparte es que puede haber aprendizaje sin necesariamente inteligencia (varios animales y computadoras son ejemplo de esto).
    Saludos!

    • Esteban Siravegna

      No hay un modelo concluyente, que yo sepa, aún, sobre la inteligencia (por eso la gente que sabe del tema prefiere aprendizaje de máquina sobre el término Inteligencia Artificial), por lo que me temo que la analogía de dominar el hardware, no aplica, al menos, desde la Ciencia de la Computación.
      Por otra parte, los límites del hardware/software hace unos diez años que son cada vez más difusos (estrictamente hablando ahora desde Machine Learning): hay técnicas que permiten correr un mismo algoritmo/simulación en un clúster (grupo en red) de servidores, paralelizando inclusive el mismo (es decir, el mismo programa se ‘desarma’ y corre porciones del mismo en en varias computadoras, o secciones de las mismas (hay métodos de cálculo que corren sobre placas gráficas. Una computadora puede tener varias, por lo que se puede armar un clúster con múltiples puntos de cálculo), por lo que, nuevamente, no tiene mucho sentido el concepto de ‘explotar’ el hard con el software.
      Finalmente, todas las computadoras modernas han sido diseñadas según una máquina de Turing (un modelo matemático/lógico de cómo debería ser una computadora). Hace relativamente poco tiempo, se han planteado matemáticamente, e inclusive programado, redes neurales…que corren máquinas de Turing. Es decir, es algo así como una computadora simule un proceso para resolver el problema, que puede programar computadoras simuladas.
      Y esa máquina de Turing…’aprende’ a realizar programas rudimentarios, para resolver el problema propuesto.
      No hay otro animal, aparte del ser humano, que programe cosas.
      ¿Eso hace a esa red neural inteligente (asumiendo que podamos definir ese concepto)?
      No sé.
      ¿Importa?
      No creo.
      “The question of whether Machines Can Think… is about as relevant as the question of whether Submarines Can Swim.”
      Edsger Dijkstra, 1984.

      http://arxiv.org/pdf/1410.5401v2.pdf

    • Eluá

      Una red neural que esté conectada a todas las opciones del hardware sí podría, también podría hacerlo cualquier tipo de inteligencia que tenga la capacidad de compilar código. Incluso, una IA con acceso al mundo externo a su hardware (brazos robots), podría accederse a sí misma.

  4. Charly R.

    Es un tema interesante, el avance en las formas de “entrenamiento” (o la búsqueda de la minimización del mismo) últimamente es bastante rápido, quizás porque hay compus que permiten manejar elevadas cantidades de datos o quizás sea por el libre acceso a muchos códigos sobre RNA, GA, Fuzzy Logic y otros.
    Para mí, que me sorprendo con lo menos importante, lo más loco es que la idea/concepto de RNA se origina en la década del 40 cuando el poder computacional a nivel mundial debe haber sido menor al de un celular actual. Lo que probablemente hizo que quien definió el término haya resuelto varios de estos algoritmos a mano…

    Para los que alguna vez jugaron Mario Bros (nintendo, family, snes), revisen Mario/IO
    https://www.youtube.com/watch?v=qv6UVOQ0F44

    Está programado en Lua y usa redes neuronales artificiales y algoritmo genético para jugar.

  5. Ive

    amo todas las preguntas que abre esta nota, los debates éticos, los cuestionamientos a la humanidad. amo que den vuelta la pregunta ‘¿puede una maquina pensar?’ para convertirla en si la mente humana ‘es o no un proceso computacional’. amo que nos planteemos cual es el limite del entendimiento y qué significa pensar, y si no estaremos a cada momento de nuestras vidas devolviendo por una ranura tarjetas chinas que no sabemos qué carajo dicen.

  6. Rodrigo Esteban Rollan

    “preguntarse si una máquina puede pensar es igual de relevante que preguntarse si un submarino puede nadar” – Creo que una de las grandes preguntas fue y sigue siendo es la conciencia y como funciona. Si podemos definir los procesos involucrads en términos que posibliliten abstraerlos del medio, nada impide que podamos replicarlo en otro medio (osea, hacer una maquina capaz de emularlos y crear una conciencia artificial). Y ahí si que te quiero ver, gato…..


Publicar un nuevo comentario