en el último video hablamos brevemente acerca de la historia de la investigación en redes neuronales y vimos como a comienzos de 2010 la arquitectura de las redes neuronales empezó a ganar torneos de aprendizaje de máquina; en particular estuvo la competencia de ImageNet que implicaba la clasificación de imágenes, en la que la actuación de la red neuronal fue mucho mejor que cualquier otra es interesante que ésto se hizo pese a que las actuaciones de los demás usaban características de código hecha a mano y algoritmos corregidos a mano; esto nos recuerda un poco acerca del desarrollo del aprendizaje de máquina para jugar al Go donde AlphaGo tuvo éxito y pudo mejorar gracias a que redujo el impacto de las características codificadas a mano, que fueron reemplazadas por características que se aprendieron en forma automática a partir de grandes cantidades de datos qué fue lo que hizo que el programa de las redes neuronales en ImageNet tan exitoso? hoy vamos a llamarla al tipo de arquitectura que fue puesta en ImageNet y que ganó, como una red neuronal profunda o una arquitectura de aprendizaje profundo y aún cuando esto es un poco una muletilla hay algunas pocas características típicas que definen a estas redes neuronales y las distingue de los usos de las redes neuronales anteriores; entonces qué fue lo que pasó? qué fue lo diferente? en 1er lugar el mismo diseño y la arquitectura de la red neuronal fue mucho más profundo y estructurado y voy a definir que quiero decir con ambos términos en 1 minuto 2do se le pudo dar un enorme conjunto de datos; el conjunto de datos usado en estas competencias creció y se hizo más grande con los años y resultó que las redes neuronales lo hicieron muy bien cuando se las alimenta con muchos datos; por último el que usó esta red neuronal usó tarjetas gráficas, que se desarrollaron para mejorar los juegos sobre todo la parte gráfica, pero que pueden hacer un tipo de operación llamada "multiplicación de matrices" que se usa mucho en las redes neuronales y la usaron para entrenar la red neuronal en forma mucho más veloz que con procesadores normales; esto permitió entrenar a la red durante mucho tiempo con una enorme cantidad de datos y resultó que agregando más información y mayor cantidad de entrenamiento hizo una gran diferencia en las redes neuronales volvamos entonces al 1er punto, que estas redes profundas son realmente profundas y más estructuradas. Recuerden que hablé de las redes neuronales con múltiples niveles donde en vez de simplemente tener una entrada que va directamente a una salida final, hay sumas ponderadas en el medio y que procesan en forma no lineal y cada uno de estos niveles de sumas ponderadas y de procesos no lineales que se encuentran en el medio de las entradas y las salidas, se denominan "niveles escondidos" en las redes neuronales profundas hay típicamente muchos muchos muchos niveles escondidos y muchos más que los que se usaban en los 80 y los 90, donde había 1 o 2 niveles ocultos en una red neuronal típica; hoy en día es posible tener algunas docenas o incluso cientos de niveles ocultos en la arquitectura moderna. Quiero que sepan 2 cosas sobre esto, antes del surgimiento de la arquitectura profunda las redes de entrenamiento con muchos niveles ocultos tenían varios problemas técnicos; sin embargo usando una función no lineal resultó que era posible entrenar redes neuronales con muchos niveles ocultos y resolver algunas de las dificultades computacionales; la otra cosa que quiero comentarles es que no está del todo claro porque tener más niveles ocultos ayuda a mejorar la actuación; tenemos algunas ideas; en general si miramos a las redes neuronales con muchos niveles ocultos, por ejemplo yo diagramé este ejemplo prototípico de una red neuronal que toma imágenes, toma la información en pixeles y la salida, por ejemplo el nombre de la persona; puede que hayan visto que esto se usa en facebook, por ejemplo, cuando reconoce a tus amigos en las fotos en una red como esta, cuando hay muchos, muchos niveles escondidos y buscamos la clase de patrones que parecen activar las neuronas en los diferentes niveles, parece que se transforman, en algún sentido, más y más abstractas y conceptuales; en los niveles más tempranos lo que en verdad activan las neuronas son cosas como los bordes y los espacios con altos contrastes en los niveles intermedios, las neuronas parecen activarse a partir de cosas como narices, orejas, bocas, partes de la cara y en los niveles finales parece que las neuronas responden a lo que podemos llamar caras prototípicas o alguna clase de variación en los tipos de caras y en las expresiones que la gente suele tener, entonces vemos que agregando más niveles puede que estemos habilitados para capturar conceptos de niveles más y más altos y conceptos más abstractos que son entonces recombinados en formas útiles entonces esencialmente podemos pensar en las redes neuronales profundas como la codificación de algunos supuestos acerca de que la clase de datos en los que estamos interesados es frecuentemente jerárquica; tiene muchas escalas y reutiliza algunos de los componentes de los niveles más bajos de la escala de diferentes formas en las escalas más altas la otra cosa que es diferente entre las arquitecturas más recientes de las redes profundas y las más tradicionales de las redes neuronales es que muchas de las arquitecturas del aprendizaje profundo tienen mucha más estructura, acá en la pantalla a la izquierda pueden ver una red neuronal tradicional; si bien tiene muchos niveles ocultos, esencialmente vemos todas las neuronas de nivel conectadas a todas las neuronas del siguiente nivel por ejemplo la red neuronal que ganó en ImagNet, de la que hablamos previamente, vimos que la topología de esa red, en el lado derecho usando un diagrama de bloque cada uno de los cubos representa a todo un grupo de neuronas; acá pueden ver que hay una gran estructura, una suerte de doble flujo; las medidas de los bloques están cambiando, algunos de ellos están muy conectados, algunos no están conectados, hay mucho conocimiento y diseño puesto en la forma en que las neuronas se conectan unas con otras. Quiero agregar que, específicamente para tareas con imágenes como las de ImageNet, lo que se utiliza a veces es lo que se llama niveles convolucionales. Los niveles convolucionales tiene patrones de peso reiterados que son muy estructurados y que imponen una serie de restricciones sobre las neuronas e imponen una suerte de estructura sobre el patrón de conectividad posible para la red neuronal. Entonces vemos que a diferencia de las redes neuronales más tradicionales, las redes profundas son a veces muy estructuradas no es que tienen conectado todo con todo como se suponía antes; como ya les dije el diseño de esta clase de arquitectura requiere de un poco de conocimiento del dominio y en la actualidad es más un arte que una ciencia; la gente no entiende bien como funciona, pero parece que hace una gran diferencia en la actuación de las redes neuronales. Es muy interesante que algunos estudios recientes que muestran que podemos entrenar a los algoritmos de aprendizaje de máquina para que ellos mismos diseñen la topología de la red neuronal, que fueron entrenadas en grandes conjuntos de datos; esto es muy interesante debido a que es una clase de meta aprendizaje o de meta diseño para los algoritmos de aprendizaje de máquina y que estos diseñen para otros algoritmos de aprendizaje de máquina y lo hacen tan bien o mejor aún de lo que podrían hacerlos los seres humanos. Probablemente este es el comienzo de la singularidad Ahora dada esta receta que mencionamos para grandes cantidades de datos, para mucho poder de cálculo y de entrenamiento de los procesadores gráficos y las arquitecturas estructuradas de la conectividad entre las neuronas; las redes profundas se están volviendo dominantes en casi todos los dominios del aprendizaje de máquina o al menos en muchos de ellos; hemos hablado acerca del reconocimiento de imágenes, de la clasificación de imágenes en función de los objetos dentro de ellas ahora el reconocimiento de la voz, mucha gente se da cuenta que por ejemplo en Siri en el iPhone o el reconocimiento de voz que usa Android, de repente fueron mucho mejores; de golpe pudieron reconocer lo que la gente andaba diciendo con mucha precisión. Muchas de estas tareas son debidas a las redes neuronales y a las redes neuronales profundas usadas en esas aplicaciones Otro aspecto está relacionado con la traducción; la traducción de máquina de un lenguaje humano a otro es tradicionalmente una tarea muy difícil para la inteligencia artificial y se cree que los modelos estadísticos como las redes neuronales y muchos otros tipos de algoritmos de aprendizaje de máquina nunca podrán hacerlo bien debido a que son demasiado estructurados; hay demasiada sintaxis y demasiadas reglas que seguir, resulta que dada la suficiente cantidad de datos, las redes neuronales profundas en verdad lo hacen muy bien y si usan el Google Translate podrán ver que ellos pasaron de un sistema con características diseñadas a mano, diseñadas durante muchas décadas por linguistas a entrenar a una red neuronal profunda y muy grande, sobre grandes corpus de textos de Internet y lo hace mejor traduciendo que los algoritmos que fueron diseñados a mano y finalmente mencionamos cosas como los video juegos y las placas de juego que supervisan problemas de apendizaje. Brendan habló acerca del desarrollo de los algoritmos de juego del Go y hoy día mucho del aprendizaje de máquina que fue usado por AlphaGo era una red neuronal profunda entonces en combinación con otras técnicas vimos que con AlphaGo las redes neuronales profundas realmente resuelven problemas de IA, que parecían que no tenían solución durante muchos muchos años hay muchos otros ejemplos del aprendizaje profundo que lo hacen muy bien en tareas que se pensaba, eran muy difíciles