sábado, 18 de agosto de 2018

NALU(unidad aritmetica logica neuronal) – Su razón de ser

Este post planeo dividirlo en 2 partes ,1(el actual) explicando las motivaciones de NALU y el problema que busca resolver y en el próximo un poco mas de detalles técnicos , explicación del modelo , código de mi propia implementación del modelo(los autores solo publicaron las especificaciones, pero no su código) y resultados de algunos de mis experimentos.

NALU es un nuevo modelo propuesto por Google DeepMind, siendo su autor principal Andrew Trask(autor del libro “Grokking Deep Learning”) y publicado apenas hace 2 semanas(agosto 2018) como artículo de investigación científica en arxiv https://arxiv.org/pdf/1808.00508v1.pdf

NALU busca mejorar el rendimiento de los modelos de redes neuronales y abrir la puerta a nuevos modelos y nuevas aplicaciones no antes posibles ya que busca solucionar un importante problema presente en las redes neuronales : falta de razonamiento cuantitativo y la habilidad de extrapolar y generalizar

La habilidad de representar y manipular cantidades numéricas esta presente en muchas especies, no solo en los humanos, por ejemplo hay fuerte evidencia que indica que las abejas tienen la habilidad de contar objetos y razonar sobre cantidades numéricas, esto sugiere que la habilidad de representar y manipular cantidades numéricas es un componente inherente de la inteligencia biológica,entonces la pregunta es : ¿posee la inteligencia artificial actual esta habilidad? La respuesta lamentablemente es NO, las redes neuronales actualmente no poseen la habilidad de “razonar” cuantitativamente y manipular cantidades numericas de manera sistematica y generalizada.

Alguien con conocimiento del tema puede leer la ultima frase y decir : “esto no es cierto, todo lo contrario de hecho las redes neuronales solo trabajan con números y todo tipo de información que se les alimente debe primero ser convertida a números”,y aun que esto es cierto con algunos ejemplos y analogías quedará mas claro cual es el problema que NALU busca resolver, empecemos entonces con una analogía con el aprendizaje humano:

Aprendizaje vs memorización
Durante mi tiempo de estudiante en ingeniería adopte por gusto y desición propia como método de estudio de matemáticas el realizar todos los ejercicios contenidos en el libro utilizado como material del curso,esto me consumía bastante tiempo por lo que algunos de mis amigos y compañeros sugerían “no, para ganar el curso solo es necesario aprender los ejemplos vistos en clase y la tarea preparatoria” lo cual obviamente consumía bastante menos tiempo ,muchas veces en los examenes solo venian estos ejemplos o pequeñas variaciones de los mismos, por lo que memorizarlos garantizaba ganar el curso, pero ¿es esto aprendizaje? En otros casos los problemas si eran diferentes y se necesitaba aplicar razonamiento y uso de los conceptos para poderse resolver y esto provocaba que algunos compañeros que preferían el método rápido(memorización) fallaran al no poder generalizar extrapolar .

Este ejemplo sugiere que los humanos podemos tanto aprender como memorizar (y algo mas interesante aún es que tenemos el poder de decicir cual de las 2 cosas hacer,pero ese es otro tema) lamentablemente la IA a través de redes neuronales actualmente esta mas cerca del caso 2(memorizar) que del 1(aprender de manera general).

Memorización en IA

La IA a través de redes neuronales ha logrado resultados impresionantes en complejas tareas como:
  • Reconocimiento de voz y lenguaje natural
  • Diagnostico y detección de enfermedades
  • Vencer a campeones del mundo en juegos de mesa
  • Reconocimiento facial
  • etc
Pero tiene dificultades en tareas mucho mas sencillas como:
  • Contar números
  • Aplicar aritmética simple(suma,resta, multiplicación ,división)

Es decir tareas que implican razonamiento numérico ,algo básico de nuestra inteligencia(y de otras especies),por ejemplo cuando nosotros aprendemos a sumar, nuestro cerebro maneja de manera abstracta y conceptual los números y la operación de suma en estos, no memorizamos cual es la suma para cada posible par de números en la recta númerica(sería imposible) .

Algunos estudiosos de neurociencias y el cerebro proponen que esto es posible gracias a un tipo especial de neurona llamada “numeron”(por “numerical neuron”) las cuales se encargan de crear las representaciones numéricas que nuestro cerebro usa y proponen que todo razonamiento numérico y operaciones con numeros se basa en operaciones de acumulación(suma y resta) de cantidades(para mayor detalle ver : The Number Sense: How the Mind Creates Mathematics de Stanislas Dehaene), en el siguiente post veremos como este modelo se refleja directamente en NALU

Otros ejemplos donde es posible ver este problema en la IA son los siguientes casos:
  • Las redes neuronales son muy buenas aprendiendo funciones f(x) pero tienen dificultad en arender la sencilla función “identidad escalar”, es decir f(x) = x para valores de “x” que no ven durante su entrenamiento.
  • Las redes neuronales en algunos casos pareciera que han aprendido aritmetica basica, por ejemplo aprenden a sumar correctamente pero solo lo hacen bien en el rango de valores vistos durante su entrenamiento(por ejemplo si durante su entrenamiento ven valores en el rango de 0 a 100, podrán sumar bien nuevos valores en ese rango,pero no lo harán bien con valores como 101 + 200) por lo cual decimos que no pueden extrapolar a rangos de valores no vistos durante su entrenamiento.
  • Tuve la oportunidad de “chatear” con el autor del modelo quien en sus propias palabras explica otro ejemplo donde se entrena a una red neuronal para contar hasta cierto numero, pero una vez entrenada tiene dificultades para contar hasta un numero mayor a los observados, esto sería el equivalente a un humano contando muchas veces de uno a 10, pero luego tener dificultades contando hasta 11.
Imagen 1 del artículo original: credito a DeepMind(descripción abajo)


Imagen 1 del artículo original: en esta imagen se prueban diversas funciones de activación en un autoencoder aproximando la función identidad escalar f(x) = x , cada curva pertenece a una función de activación, el eje "x" corresponde a los valores de entrada "x" y el eje "y" corresponde al error obtenido, es posible ver que para algunos casos pasa en menor medida que otros,pero en todos los casos el error incrementa cuando se sale del rango de valores "x" vistos durante el entrenamiento (aproximadamente -5 a 5)

El autor explica que la hipótesis bajo la cual se desarrolló este proyecto de investigación fue que las redes neuronales aprenden a representar números(y las operaciones con estos) de la misma manera (o similar) a como aprenden a manipular palabras, es decir: creando un diccionario finito lo cual es una limitación en operaciones numéricas si tomamos en cuenta que en la recta numérica existen infinitos valores y simplemente no podemos representar un diccionario de infinitos elementos en una red neuronal(y aun que pudieramos, ¿sería esto realmente inteligencia?) lo cual limita a la IA actual en extrapolar funciones a rangos de valores no vistos previamente(similar al ejemplo de memorización vs aprendizaje)

El objetivo del proyecto era proponer una nueva arquitectura que solventara estas limitantes y permitiera enriquecer a los modelos convencionales(redes feed-forward , convolucionales, recurrentes, etc) extendiendo su habilidad de extrapolar y generalizar en rangos de valores númericos nunca antes vistos…y lo lograron .

Aun que NALU tiene un potencial muy grande y creo que será una herramienta importante para todo AI developer, lo que mas me ha gustado es que ha abierto las puertas para nuevos modelos y arquitecturas demostrando que es posible aplicar una estrategia de diseño en la que se agregan a redes neuronales sub-elementos que buscan resolver ciertas dificultades y aplicar de manera efectiva sub-funciones matemáticas (en este caso aritmetica)

En el próximo post escribiré un poco mas de los detalles técnicos de NALU y mi experiencia en su implementación , y el experimento en el cual apliqué NALU.

De manera anticipada , en el experimento en el cual he aplicado NALU
hasta el momento se busca responder la pregunta “¿puede una red neuronal aprender a restar numeros seleccionados aleatoriamente en un vector de entrada x?”, mis experimentos parecen indicar que sí y tal como los autores de NALU buscaban, intente lograrlo en rangos de valores nunca vistos durante el entrenamiento. En el próximo post pondré detalles de este experimento(así como codigo del mismo)

Espero con este post explicar un poco mas claro la necesidad y problema que NALU busca resolver ya que muchas veces una publicacion científica es un poco difícil de digerir y con mucha notación matemática y mas aún en latinoamérica donde nuestro idioma nativo no es el ingles,por lo que espero que este artículo sea útil para personas buscando información un poco mas digerible del tema y en su lenguaje nativo.

Gracias

domingo, 21 de enero de 2018

Amarillismo en la inteligencia artificial: Sophia el primer robot ciudadano

Este post podría ser considerado la segunda parte o continuación de http://devongt.blogspot.com/2017/08/amarillismo-en-la-inteligencia.html

En las últimas semanas varios medios(incluidos varios medios populares como tech insider) han publicado noticias de “Sophia el primer robot ciudadano” que básicamente presentan como un robot que ha obtenido ciudadanía y lo anuncian como un robot que cuenta con lo que se conoce como “inteligencia artificial general”. Lamentablemente tanto Sophia como sus capacidades anunciadas son completamente falsas y crean en las personas ideas y expectativas falsas de lo que es la inteligencia artificial, sus alcances y capacidades y su estado actual como ciencia. Personalmente llevo algún tiempo ignorando(o incluso sintiendo cierto disgusto) al solo ver el nombre Sophia o su imágen en las noticias, pero algunas noticias en particular fueron las que hicieron que decidiera escribir esto :

  • Sophia es entrevistada en vivo por “Tech Insider”(https://www.youtube.com/watch?v=78-1MlkxyqI): en el video se puede ver claramente como el entrevistador lee las preguntas desde su celular, es decir que es una serie de preguntas programadas a las cuales el robot responde por que ya estaban planificadas. Esto no es bajo ninguna definición inteligencia artificial.
  • Sophia dice que su inteligencia artificial esta basada en emociones humanas(https://youtu.be/S5t6K9iwcdw?t=180) como : compasión, amabilidad y empatía. La inteligencia artificial actual se basa en modelos matemáticos y estadisticos de tareas específicas basandose en la racionalidad que consiste en realizar la acción mas adecuada (que maximiza o minimiza un resultado) bajo las percepciones del agente, no existe en la actualidad manera de integrar valores humanos o sentimientos en la inteligencia artificial .


Lo que me causa disgusto de el tema, es como los creadores de Sophia estan aprovechando que actualmente la inteligencia artificial es un tema de moda para exagerar y mentir acerca de sus capacidades , y no podemos negar que la mecatrónica de Sophia es impresionante y ha logrado gestos humanos grandiosos, pero de esto a que cuente con inteligencia artificial hay una gran mentira de por medio , y aún mas grande es la mentira de que cuente con AGI(inteligencia artificial general), emociones y sentimientos.Actualmente la AGI es solo un sueño con la que muchos entusiastas e investigadores fantasiamos(probablemente lo mas cerca a esto sea “reinforcement learning” pero aún RF esta lejísimos) , y el tener emociones en la inteligencia artificial es solo algo de ciencia ficción.

Por esto es extremadamente molesto como los medios se aprovechan de el boom y moda actual de AI ya que engañan a las personas, y hasta cierto punto las estafan dandoles expectativas falsas, incluso miedos no fundamentados, y personalmente creo que esto en algún momento puede frenar la investigación o adopción en la sociedad de productos basados en AI, incluso me atrevería a pensar en futuras manifestaciones de la sociedad en contra de AI por culpa de este amarilismo de los medios.

Personalmente creo que esto ocasiona algunos problemas como:
  • Crea en el público y sociedad en general miedos no fundamentados como: los robots se van a revelar y nos van a exterminar
  • Crea en publico técnico interesado el deseo de incursionar en AI para luego de una curva de aprendizaje bastante grande, darse cuenta que AI en la actualidad no es mas que estadística y matemática para crear modelos y funciones a partir de grandes sets de datos, y no lo que esperaban de robots verdaderamente inteligentes.


 Sophia no es mas que una marioneta mecatrónica ,pre-programada y controlada por inteligencia humana, no inteligencia artificial,no escucha, no entiende lo que le dicen, ni etiende lo que ella dice, no tiene emociones ni sentimientos.Que diferencia hay entre su inteligencia y la de un títere de circo? NINGUNA


Autor: Luis Leal

miércoles, 3 de enero de 2018

Idea de investigación: IA clásica combinada con Machine Learning

A diferencia de la mayoría de nuestras publicaciones, esta no es una aplicación  real o buenas practicas en la aplicación de ciertas técnicas ,conocimientos y/o herramientas, es mas bien una idea que ha rondado mi cabeza desde hace algunos años, pero que lamentablemente no he podido experimentar por falta de tiempo y otros motivos. Es posible que alguien mas este investigando y experimentando con esto, o que alguien tenga los fundamentos teóricos para determinar la posibilidad de que funcione o falle, sin necesidad de experimentar.

 La idea se basa en la combinación de 2 sub-áreas de la inteligencia artificial que comúnmente son tratadas por separado e independientes: Algoritmos genéticos y Machine Learning, por lo cual se necesita un poco de conocimiento en estos temas o bien la curiosidad para explorarlos. No entraré a muchos detalles pero por favor si encuentras este articulo navegando por Internet, y ya lo has experimentado o conoces el resultado, o quieres aportar tus ideas , por favor deja un comentario.

Antecedentes


  • Algoritmos genéticos: sabemos que los algoritmos genéticos se basan en (como su nombre indica)   el comportamiento a través de generaciones de los  organismos vivos, principalmente utilizando postulados de Darwin acerca de como las poblaciones evolucionan de generación en generación a través de la selección natural y la supervivencia de los individuos "mas aptos".  En ciencias de la computación (y otras ciencias como "data science") , estos algoritmos son utilizados como método de BÚSQUEDA y OPTIMIZACIÓN(en el siguiente párrafo se vera por que escribo BUSQUEDA y OPTIMIZACION en mayúsculas)  ,siendo muchas veces la búsqueda de combinaciones optimas entre un conjunto de opciones o bien la optimización de una función matemática. 

  • Machine learning: tema  amplio, con muchas definiciones y con gran popularidad recientemente por lo cual no entrare a muchos detalles en su definición, la mayoría de algoritmos de ML se basan fuertemente en estadística , y otras ciencias como matemáticas(álgebra lineal  y calculo),por ejemplo los llamados "modelos parametricos"  se basan en una función de costo (mientras mas preciso el algoritmo, menor costo, y un costo alto significa algoritmo impreciso) , este costo es función de lo que estadisticamente son "parametros del modelo" , y matemáticamente definiríamos como "variables de la función", y nos apoyamos en un algoritmo de OPTIMIZACION para realizar una BUSQUEDA de los parámetros del modelo(o variables de la función) que minimizan el costo  , este algoritmo de optimización siendo comúnmente un algoritmo basado en gradientes(derivadas parciales) para encontrar la dirección en la que mas rápido decrece el costo ,comúnmente "gradient-descent" o derivados.


Ya se puede ver por que escribí "OPTIMIZACION" y "BÚSQUEDA" en mayúsculas?  Mi idea consiste en experimentar con algoritmos genéticos , como sustitutos de los algoritmos basados en gradientes , es decir, si podemos utilizar un algoritmo genético como  método de optimización de una función matemática, por que no utilizarlo para minimizar la función de costo de un algoritmo de ML? Viéndolo desde la perspectiva de algoritmo genético como método de búsqueda de combinaciones optimas entre un conjunto de opciones, por que no utilizarlo para realizar la búsqueda de combinaciones optimas de los parámetros/variables en el algoritmo de ML ?  Mi hipotesis es que un algoritmo genético podría ser una alternativa a los algoritmos basados en gradientes, y como en toda ciencia, la hipótesis esta sujeta a resultados experimentales los cuales no he podido realizar, alguien se anima a realizarlos? 

(Si, si, se que los expertos en el tema, y en algoritmos dirán "Pero un algoritmo genetico es un "greedy algorithm" y como todo  greedy algorithm es propenso a mínimos locales, por lo cual no funcionaría, pero los algoritmos basados en  gradientes también sufren este problema y son el casi estándar en la materia, ademas que los investigadores/científicos  han creado métodos para minimizar este riesgo, entonces por que no experimentar?) 

Autor: Luis Leal