Uno de los grandes retos de la Inteligencia Artificial (IA) fue planteado hace muchos años por Marvin Minsky, uno de los pioneros en este campo, al pedirle a un estudiante que hiciese un programa para el verano, en donde dada una foto, el programa indicará qué había en la misma. Minsky pecó de ingenuo o bien no se había dado cuenta de las dificultades que ofrece hacer esto. El asunto es que hoy en día el problema no está totalmente resuelto y desde luego, hay esfuerzos precisamente para lograr esta meta.
Google, siendo el buscador más importante, usa ciertos algoritmos de la IA para hallar fotos que contengan los objetos buscados. Por ejemplo, podemos pedirle que nos dé fotos de torres y probablemente el sistema nos remita a alguna foto de la Torre Eiffel. Se sospechaba que Google estaba usando una red neuronal convolucional para este trabajo, pero no había detalles… Hasta ahora.
Google dice que sí, que usan una red neuronal convolucional basada en SuperVison, construida por un equipo lidereado por Geoffrey Hinton, que ganó el reto del año 2012 denominado ImageNet Large Scale Visual Recognition. El grupo de IA de Google empezó evaluando este enfoque y llegaron a la conclusión que esto trabajaría mejor que cualquier otra cosa. Por esta razón, Google adquirió DNN Research y AI Startup, que Hinton y su equipo lograron conjuntar. Google ya usa esta tecnología en las búsquedas de fotos de Google+.
Lo que quizás es sorprendente acerca de los resultados es la idea básica, de que una red neuronal, la cual ha sido desacreditada y reinventada innumerables veces, se haya mantenido sin cambios. Las nuevas ideas principales están en mejores algoritmos para el entrenamiento, pero en realidad la razón de que nos acerquemos a una IA más real es quye ahora podemos entrenar redes mucho más grandes.
Los detalles revelados en el blog de Google son muchos como podría esperarse del estudio de un artículo original. Para poder, por ejemplo, ser capaz de clasificar las fotos de Google+, se derivaron unas 2000 clases basándose en la descripción escrita de las fotos, tomando solamente la parte de interés. Así, lo que buscaban era “auto” y no “auto hermoso”. Un total de 5000 imágenes se usaron por clase en el entrenamiento y entonces la mayoría aprendió con precisión unas 1100 clases, las cuales se implementaron en la versión final.
En el entrenamiento se notó que la red aprendió a generalizar del conjunto de prueba incluso si éste estaba derivado en imágenes basadas en la web, las cuales tendían a ser arquetípicas. El conjunto de prueba, el cual estaba compuesto por imágenes reales de los usuarios, tendía a ser más variado y menos arquetípico. Se puede concluir que la generalización se debió al uso del diseño convolucional de la red, la cual simplemente saca promedios (eso es la convolución, a todo esto). Esto quiere decir que responde de la misma manera a un patrón sin importar dónde está este localizado en la foto, pero no explica la invarianza de la escala.
El blog dice también que la red neuronal aprende a categorizar con más de un tipo común de ejemplo -un auto puede ser una foto del exterior del mismo o del interior- Y esto resulta sorprendente porque la capa final es un clasificador lineal, el cual en general no trabaja muy bien en problemas de decisiones multimodales. Presumiblemente el bajo nivel de la red fue el exitoso mapeo de los dos modos en la misma área para así llegar a alimentar a la capa final.
Más sorprendente aún es la forma en que la red se maneja para hacer un buen trabajo para aprender ideas abstractas, como besar, bailar y comida. Presumiblemente estos conceptos aparentemente abstractos tienen rangos más limitados de expresiones visuales de lo que esperaríamos en general. Esto permitió manejar la clasificación a niveles más finos, como por ejemplo, clases de plantas.
Pero tal vez lo más interesante de todas las observaciones es que cuando la red se equivocaba, lo hacía de manera parecida a como lo haría un observador humano. Por ejemplo, cuando la red clasifica una foto de un pequeño burro como un perro, no hay ni cómo ayudarle pero esto es “lo que estoy viendo”, podría decir la red. Es importante esto, pues en los esquemas de la IA no basta con dar resultados inteligentes, sino cómo es que se llegaron a ellos.
Todo este trabajo, aunque se ve muy complejo, apenas está iniciando y ya se usa con relativo éxito de forma pública. Lo que parece que ahora se necesita es más de lo mismo y no una nueva y maravillosa técnica que lo haga de forma diferente. Si estamos hablando ya de un millardo de parámetros, necesitamos 1000 veces más esto para tener un sistema más que razonablemente bueno. Parece ser que finalmente las redes neuronales artificiales empiezan a dar resultados útiles.
Referencias: