 Vamos a seguir con esa dinámica de intercambiar ejemplos con algunas otras cosas. Ayer me excedí un poquitito del tiempo, así que voy a tratar de hacerlo un poco más corto. Entonces, vamos a empezar con uno de los ejemplos. Capaz que primero voy a recordar un poco qué fue lo que estuvimos haciendo hasta ahora, como para entrar un poco en calor, si no es demasiado necesario entrar en calor. Bueno, entonces el primer día básicamente intercambiando el ejemplo del problema de valores propios y cuál otro hicimos el primer día, el de completar una matriz, de minimizar el rango de una matriz sujeto a algunas entradas, y en el medio vimos algunas condiciones de optimalidad. Básicamente generalizamos la condición de que el gradiente se anule para cuando tenemos una optimización en un conjunto. O sea, estamos estudiando cosas de este estilo. Entonces, cuando el conjunto no es todo ren, sino que es un subconjunto convexo y tenemos unas nuevas condiciones de optimalidad. Y después generalizamos también para cuando la función era no diferenciable, pero convexa o localmente convexa. Y podemos definir un subgradiente. Y entonces teníamos condiciones de optimalidad que generalizaban la de que el gradiente se anule o que el producto interno de gradiente con las direcciones factibles fuera mayor o igual que cero para funciones no diferenciables con el subgradiente. Básicamente hicimos eso el primer día. Después allá vimos algunos métodos de optimización. En particular, vimos el descenso por gradiente que itera es hacer esta iteración. Construimos una sucesión y bajo ciertas hipótesis esto converge a un punto que, bueno, depende de cuántas hipótesis pongamos es cuánto podemos decir de el límite de esta sucesión. Por ejemplo, si el gradiente es Lipschitz y el paso este es menor que uno sobre la constante de Lipschitz entonces esto converge a un punto estacionario, un punto donde se anule a gradiente. Si la función de más es convexa podemos asegurar que el punto de que converge es el mínimo global. Esto era para cuando teníamos una lo que se llama optimización sin restricciones donde el conjunto de estera todo de Rn. Después vimos un caso entre una familia grande de métodos que es básicamente agarrar el método de descenso por gradiente y cuando estás trabajando en un conjunto que no es todo el espacio entonces te mueves un poco en la dirección del gradiente y si te salís afuera del conjunto proyectas de vuelta al conjunto. Esta era una de las opciones. Había como una familia grande de la cual parametrizamos más o menos con los puntos del conjunto cómo elegir la dirección y elegimos esta como para estudiar un poquito por lo menos. Y también el resultado de convergencia a esto en el sentido de que bajo ciertas hipótesis acá el conjunto tengo que pedir que sea convexo. Si el conjunto es convexo y bajo algunas hipótesis de la función esto converge a un punto que verifica la condición de optimalidad que vimos el primer día. Después vimos un poco también casi que como anécdota que estas se podían ver como discretizaciones del flujo gradiente y básicamente si agarramos el flujo gradiente en el ren pensemos primero las soluciones estas son decrecientes la función es decreciente en las órbitas de estas soluciones y de vuelta bajo ciertas hipótesis de la función esto converge a un punto donde se anula el gradiente. Vimos también, bueno, vimos dos maneras distintas de discretizar esto con los métodos de Eugler hacia adelante y desde atrás o explícito e implícito, uno da valor a esto exactamente y el otro da valor a otro algoritmo de optimización del cual no hablamos salvo su nombre. Y creo que terminamos con una inclusión diferencial que es cuando la tensa una función que es convexa pero no diferenciable pues tenés definido el subgradiente o el subdiferencial. Lo que pedís es que x punto sea un subgradiente de la función en todo momento y esta inclusión diferencial teníamos algunos resultados no los escribimos pero los comenté por arriba que si la función es convexa hay resultados medio sorprendentes de unicidad de soluciones acá básicamente en cada punto como que te des un abanico de lugares para donde puedes ir no, no, no es que te des que seguir una tangente sino que tenes todo un conjunto de tangentes a los que puedes seguir con convexa hay unicidad de soluciones ahí y una cosa que si no dije pero que voy a decir ahora es la siguiente dije de acá se pueden discretizar esta ecuación diferencial de dos maneras bueno, de varias maneras las dos que vimos son el método de hoy le de hacia adelante y hasta atrás el explícito y el explícito uno da lugar exactamente a esto y el otro da lugar a lo que llamamos el método proximal hay un operador proximal que definimos el otro día y entonces la otra discretización de esta ecuación diferencial da lugar a este otro método del cual dije algunas ventajas en general la discretización de una ecuación diferencial por un método tiene más condiciones de estabilidad que el de hoy la tradicional digamos y en particular este método de optimización tiene algunas ventajas también y pasa lo mismo cuando discretizamos esta inclusión diferencial si discretizamos esto de vuelta hacia adelante y hacia atrás explícito o implícito en un caso tenemos lo que sería algo equivalente como el descenso por gradiente pero es un descenso por subgradiente eso también se puede hacer tiene condiciones de convergencia distintas que el descenso por gradiente pero se puede usar y si discretizamos esta con la otra discretización entonces eso da lugar al método proximal para funciones no diferenciables y eso es algo que es súper usado y voy a comentar algunas aplicaciones en un momento estaba pensando en algo más que quería decir y ahora me olvidé bueno, si me acuerdo lo comento en algún momento y qué aplicaciones vimos ayer vimos como que en general cuando hacíamos estimación por máxima verosimilitud eso daba lugar siempre a un problema de optimización y vimos algunos ejemplos particulares cuando teníamos modelos lineales con ruidos gausianos o laplacianos y recuperamos mínimos cuadrados y bueno, con el ruido de laplaciano que era algo distinto y después vimos problemas de isomorfismo de grafos capaz que en algún momento retomamos algunos de esos problemas sobre todo de valores propicios y isomorfismo de grafos pero vamos a empezar con otro ejemplo entonces ahora ejemplo 5 supongo que lo se llama el problema de Thompson nunca sé cómo se escribe Thompson porque Thompson o el séptimo problema de Smith entonces este problema es así vamos a considerar en electrones este viene de la física el otro viene de las cosas que estudia Diego, que ahora les cuento consideramos en electrones en la esfera entonces la energía que tiene la interacción entre dos electrones es, creo que es algo así la constante de Coulomb las cargas de los electrones y lo que aparece es la distancia entre los unos horas de distancia entre los electrones entonces en las posiciones cuando tenemos un sistema de anélectrones entonces la energía potencial total es la suma de todos estos elementos y vamos a olvidarnos de las constantes obviamente así que tenemos básicamente sumamos entre todos los pares de electrones la energía de la interacción, nos olvidamos de las constantes bueno, este problema surge en física, está claro en electrones en esfera esto es una generización del por donde es un caso particular del séptimo problema de e-mail que es lo mismo, pero con un S acá, digamos, lo que digo yo ahora lo borro con un S entre 0 y 2 o con un logaritmo ahí, pero no importa básicamente son cosas muy similares y el problema S básicamente surge de, claro uno piensa que los electrones tienen que estar si son dos es fácil la solución con dos electrones, lo más lejos posible tienen que estar diamitralmente opuestos con tres también se conoce la solución, con cuatro se conoce la solución ahora capaz que proyecto si lo encuentro que está por ahí se conocen soluciones y las primeras tienen son las que uno espera pero no se conoce la solución general, no se conoce para cualquier cantidad de electrones o de puntos en la esfera y vamos no se conoce cuál es la solución y es importante por ejemplo para el séptimo problema de e-mail nace de lo siguiente se quieren tener una buena inicialización o sea, puntos bien distribuidos en la esfera para inicializar métodos de hemotopía para hallar raíces de polinomios complejos si fueron en la charla de Diego no sé de qué habla Diego pero son ese tipo de cosas que sale de un polinomio donde conoce las raíces que tienen que estar bien distribuidas y quiere transformarlo en el polinomio al que le quiera hallar las raíces por un método de hemotopía entonces ese problema está bien relacionado con esto bueno entonces cómo se plantea la solución de este problema en términos de un problema de utilización es inmediato, lo que queremos hallar es cuál es el mínimo cuál es el lugar donde sea el mínimo de esta U vamos a poner U de llamar X como general de todas las posiciones de todos los puntos de la esfera y tenemos una restricción que todos los todos los puntos tienen que estar en la esfera está bien entonces esta función es que estén en el mismo punto después vamos a hacer lo que hicimos hallar vamos a hacer esto por lo menos numéricamente qué es lo que da lo hice literalmente en 5 minutos antes de venir para acá y vamos a ver qué es lo que da eso no es claramente la mejor manera de resolver ese problema pero bueno por lo menos da idea de cómo funciona ese sistema bueno entonces lo voy a mostrar porque es exactamente lo que lo que hicimos acá está el cálculo del gradiente que es simplemente la suma de todos los gradientes este es el paso a lo que estoy me muevo un poquito en la dirección del gradiente y proyecto y después lo dibujo nada más el resto es dibujo dibujo la esfera ahí para ver qué es lo que va pasando se mueve lentamente pero ahí hay creo que tres puntos que se van moviendo lo voy a sacar la esfera si se empieza a mover más rápido es exactamente lo que lo que vimos allá se están moviendo los puntos en la esfera saqué la esfera pero y ahí están los valores de energía se conoce bien cuál es el mínimo de la energía esta y bueno podemos poner más puntos esto es con tres puntos vamos a poner yo que sé diez y lo voy a sacar que dibuje así lo corro primero capaz que sobre el final de la sesión de hoy comento algunas maneras distintas que se puede llevar a optimizar para ir más rápido esto es como le digo es lo primero que uno haría después de ver esto en literalmente cinco minutos pues eso tarda un poquito además le puse con le estoy pidiendo que el error sea realmente muy chico este vamos a pararlo por acá y graficar ahí están los los puntos tiene cierta simetría ya esos son los diez puntos separados en la esfera de acuerdo a esa energía potencial está bien? bueno bien un ratito y lo que vamos a hacer ahora es este ah bueno cosas sobre esto si entran en wikipedia y buscan Thompson Problem van a ver que hay una lista de mínimos logrados de niveles de energía para un montón de de cantidad de electrones 1, 2, 3 hay como hasta no sé cientos y creo que la derecha está también cuál es la configuración por ejemplo cuando son dos que son diametralmente opuestos cuando son tres cuáles son las figuras que forman y bueno y hay más información sobre qué es lo que se sabe y qué es lo que no se sabe pero es un problema abierto todavía no se sabe bueno es uno de los problemas de mail bueno volviendo un poco entonces ahora a la ruta que teníamos vamos a hablar un poco un poquitito no más de optimización en variedades voy a dar titulares nada más de esto entonces en varios momentos surgió el problema de resolver lo siguiente no queremos resolver problemas como el mínimo de cierta función en un conjunto de x ejemplo como planteamos el problema de valores propios como un problema de minimización queríamos minimizar dada esto es lo que hicimos el primer día dada a una matriz n por n simétrica minimizar creo que lo escribimos así a ver encontrar una esto lo leíamos así encontrar una una matriz ortogonal que que diagonalice a ver teníamos que de ultrascuesta por a por u estoy asumiendo que si a simétrica entonces hay una matriz ortogonal que la diagonaliza si miro la norma de los elementos fuera de la diagonal esto se tiene que hacer cero y en el lugar donde se hace cero esa es la matriz que diagonaliza bien entonces esto déjenme escribir lo distinto voy a escribirlo así como minimizar esa función en este espacio voy a escribir exactamente lo mismo pero es como esto es pensado todavía con la perspectiva con la que veníamos es decir mirar un problema en rn en este caso es rn por n puedo mirar las matrices ahí adentro con algunas restricciones en este caso son igualdades y minimizar una función en un conjunto de ciertas restricciones y ahí puedo hacer por ejemplo lo que hicimos recién con el problema de Thompson haciendo el censo por gradiente y proyectando yo que sé ese tipo de cosas ahora las matrices ortogonales tienen una cierta estructura que uno se está olvidando cuando lo hace así mirarlos de esa perspectiva permita hacer algunos análisis y algunos algoritmos que tienen ciertas ventajas que voy a intentar comentar ahora que tipo de cosas se pueden hacer entonces en lugar de mirar el problema así lo voy a escribir casi lo mismo pero lo que voy a mirar es la función ahora lo voy a mirar esta función la estaba mirando como función de rn por n en r esta función vamos a ponerle f de u la estaba mirando como f de rn por n en r y en este contexto calculo el gradiente el gradiente como función de rn por n en r calculo el gradiente me mueve en esa dirección y después proyecto acá eso es lo que haría con lo que tengo hasta ahora ahora voy a hacer algo distinto voy a mirar la función como una función de la variedad del grupo ortonormal en r porque el grupo ortonormal tiene una estructura de variedad diferenciable que capaz que pueda aprovechar de alguna manera entonces qué es lo que necesito para poder estudiar para poder hacer cosas del estilo de las que veníamos haciendo acá básicamente todo lo que hicimos fue hacer descenso por gradiente dimos condiciones de optimalidad, dimos distintas variantes de eso pero siempre estaba involucrado algún tipo de descenso por gradiente entonces lo que necesitamos es un gradiente lo que vamos a hacer es considerar esta función en algún momento supongamos que estamos en bueno nada todavía estamos en la variedad y tenemos un punto por acá tenemos el espacio tangente y tenemos un gradiente gradiente como el único elemento del espacio tangente que cuando hace este producto interno con la dirección te da el diferencial ¿está bien? entonces un gradiente que lo voy a escribir así para diferenciarlo del gradiente normal tenemos un gradiente df que está en el tangente en u entonces lo que puedo considerar es el flujo gradiente pero se entiende ¿no? acá tengo el tangente y tengo el gradiente ahí ¿qué distinto que el gradiente calculado acá? ¿está bien? es el gradiente en el tangente a la variedad ese entonces esta ecuación diferencial me asegura que la solución siempre está dentro de la variedad no tengo que estar proyectando acá tengo una ecuación diferencial para la cual el gradiente está siempre en el tangente y la solución entonces siempre está dentro de la variedad no estoy mirando todo en un espacio ambiente la solución está dentro de la variedad ¿está bien? bueno eso tiene un montón de ventajas como por ejemplo que puedes estudiar cómo es esta función en esta variedad y usar resultados de convergencia de las soluciones de esa ecuación a puntos estacionarios hay que mirar cómo es la estructura de los puntos estacionarios y se pueden dar resultados de convergencia general para esa ecuación diferencial y eso es lo que se hace por ejemplo con el problema bien está ahora todo esto es cuando lo miramos en continuo cuando lo miramos en continuo lo borré pero también habíamos mirado en continuo en Rn y después tenemos que discretizar cuando discretizamos esto igual aparece un problema cuando uno discretiza esto cuando quiere implementar en la computadora lo que pasa es que en determinado momento está parado acá calcula el gradiente pero cuando te mueves puedes salirte y de hecho en general te salís de la variedad ¿entiendes lo que digo? el gradiente este está en el tangente y por lo tanto la solución se queda siempre en la variedad pero cuando lo discretizas no vos te mueves un tanto un tanto alfa en esta dirección y ahí te estás saliendo de la variedad entonces ahí tenés que proyectar y hay algunas se llaman retracciones una manera inteligente y vamos a proyectar u, su, k menos alfa por el gradiente este ahora tomás esto y en lugar de proyectarlo se hace la retracción a la variedad no quiero hablar mucho de eso pero quiero que tengan en cuenta que aparecen ciertas complicaciones que hay que tener en cuenta bien una pregunta de esto en un comentario para obtenerlo o sea lo puedes calcular directamente y de hecho lo podemos calcular este para calcularlo tenés que tener en cuenta cómo es el espacio tangente o sea tenés que tener parametrizado esto digamos de alguna manera y hay que hacer una cuenta ahí se puede hacer la cuenta si quieren en realidad para este caso no para el otro que se ha puesto acá con la n eso se puede hacer sobre el final lo podemos hacer pero es una cuenta y en general este tipo de cosas da lugar con la n que había puesto yo acá da lugar a ecuaciones del siguiente estilo si me acuerdo u un el corchete es u por n menos n por 1 creo que el gradiente da lugar a esa información pero bueno en cualquier caso no importa yo después lo agrego con todo detalle en las notas si quieren no me quería meter en las cuentas en la implementación en si sino que tuviera una idea de pero lo que sí es importante y voy a aprovechar la pregunta para eso es que en general en este tipo de métodos uno piensa, estoy implementando las cosas en la computadora, tengo que aproximar la derivada como el consciente incremental bueno no, si vos conoces tu función en la hoja derivada en la hoja y enchufa eso en el programa o sea desenso por gradiente para mínimos cuadrados y bueno, derivada, la norma lo que ahora transpuesta por no sé qué y eso es el gradiente que vas a enchufar con esto es lo mismo si vos conoces como es la F conoces como es la estructura de la variedad y puedes derivarlo, bueno allá de este gradiente en la hoja y después enchufas eso no sé en muchos casos el gradiente termina haciendo ese este pero una cosa es sí además y además una proyección las es en la hoja y la otra las es acá las es en la computadora todo lo que puedes hacer en la hoja es en la hoja bien, una cosa que creo que llegue a comentar ayer que ayer vimos el problema isomorfismo de grafos como caso particular y tenía una una pinta muy parecida a esta de hecho lo voy a escribir acá apareció también hoy en la charla de soledad que lo que queremos hacer es minimizar en el espacio en la matriz de permutación y eso tiene este tiene como una cara parecida a esta la matriz de permutación es la que tiene un 1 por filo y por columna y en particular están metidas dentro de las matrices ordinales o sea la matriz de permutación son ordinales entonces podría ser interesante estudiar eso en algún caso de vuelta ayer hicimos un cambio parecido las permutaciones acá molestan porque son un conjunto discreto que crece como n factorial si nos podemos hacer de la única manera de hacer algo con esto es deshacerse de n factorial o algún otro camino del punto de vista del grupo de esas cosas que es el resultado más importante del año pasado o de hace dos años que es que se puede resolver el problema isomorfismo de grafos en tiempo, no sé cómo se llama subesponencial o super polinomial no sé es como todavía no es un algoritmo polinomial pero es un avance tremendo y según lo que entendí ese trabajo no hace ninguna relajaciones pero la relajación que hicimos de este problema ayer consistía en agarrar la matriz de permutación y considerar el envolvente convexa de ese conjunto que terminan siendo las matrices que llaman doblemente estocasios que suman uno por fila y por columna y tienen elementos positivos entre 0 y 1 en definitiva eso es un espacio en un conjunto convexo habíamos escrito distinto esta función para que quedara convexa para ver la solución que quedaba en las matrices doblemente estocásticas y yo había dicho que había algunos resultados que decían en qué condiciones del grafo la solución de ese problema convexo es la solución del problema que quería resolver bueno, acá hacemos un cambio del conjunto de matrices de permutación como por afuera en lugar de por adentro o sea, las matrices de permutación ayer las dibujamos así y dibujamos el envolvente convexa es exactamente esto y entonces acá adentro hacíamos la optimización lo que hice ahora es cambiar el conjunto de matrices de permutación por el grupo ortogonal que en definitiva sería como algo así no se intersecta con el otro pero no tiene la convexidad pero tiene la estructura de variedad diferencial entonces uno puede estudiar el flujo de adiente en esta función, en esta variedad y ver qué es lo que da de vuelta, eso lo va a converger a los puntos críticos de esta función dentro de esta variedad dentro de los cuales está la solución que uno quiere y después hay que hacer algo inteligente para una vez que uno está dentro de ese conjunto de puntos críticos moverse hacia el punto crítico que a uno le interese ¿entendió algo lo que dije? lo que hicimos ayer y lo consideramos en la movimenta convexa la solución del problema a optimización este donde nos movíamos dentro del espacio que le llamamos D de doblemente estocásticas podía dar una solución por acá y después lo que tenemos que hacer era bueno, o buscar la materia de permutación más cercana o ver alguna manera inteligente hacer eso ahora estamos en una situación parecida ahora estamos convergiendo bueno, hay que mirarlo hay que ver qué propiedad tiene la función que me hace el flujo gradiente de esta función en esa variedad eso converge a los puntos críticos de esa función uno de esos puntos críticos es el que nos interesa que es la matriz de permutación que conjuga a convé está dentro de ese conjunto de puntos críticos hay que buscar una manera inteligente entonces y eso no está hecho es parte de las cosas que tenemos en la lista de cosas para hacer con dievo movernos dentro de esa variedad para la variedad de puntos críticos para converger al punto crítico que nos interesa es una de las de de las maneras de atar digamos lo que dije ayer con esto que dije hoy ¿bien? bueno que más podemos decir bueno no quiero decir mucho más sobre esto porque no quiero entrar en tecnicismos y esas cosas pero hay pila de problemas bien interesantes ahí bueno voy a volver a los ejemplos entonces y los ejemplos que vamos a hacer ahora van a ser todos cuando empezó dije que iba a querer hacer ejemplos de un montón de áreas de física, de geometría, de álgebra y nos quedó hicimos algo pero nos quedó bastante para hablar de las cosas modernas de machine learning ese tipo de cosas así que vamos a hablar de todo eso ahora entonces de lo primero que voy a hablar es de un problema de clasificación y voy a dar una formulación muy sencilla y muy clásica de un problema de clasificación de dos clases un problema de clasificación voy a poner ejemplo 6 clasificación en un problema de clasificación voy a hacer un dibujo básicamente uno tiene dos clases tiene un conjunto de datos tenemos un conjunto de datos para entrenar lo que se llama un algoritmo y después cuando viene un dato nuevo queremos clasificar entonces tenemos un montón de datos de esta clase supongo que son peras y manzanas entonces tenemos un montón de peras que vimos y miramos el color o bueno algo que puedan medir el diámetro y yo que sé, miran dos dimensiones ahí de las peras y dos dimensiones de las manzanas y todos esos lo grafican entonces después viene una fruta nueva que no saben que es miden esas dimensiones y en función de dónde cae respecto a los datos que ya conocían es como la van a clasificar eso es un problema de clasificación típico acá una manera de hacerlo es por ejemplo decir bueno, miro el hiperplano que mejor separe esas dos cosas miro bien un dato nuevo si cae de este lado es una pera si cae de este lado es una manzana es un problema de clasificación de dos clases bien simples un algoritmo muy usado de clasificación en ese sentido es el que se llama SVM de support vector machines que básicamente lo que hace es mirar cuál es el hiperplano que mejor separa en el siguiente sentido que deja el mayor margen acá posible porque acá hay otro hiperplano que separa que es este por ejemplo ese hiperplano también separa yo prefiero el azul que el verde como que tiene más margen si? si viene uno nuevo por ejemplo si yo hubiera elegido el hiperplano verde y viene un un dato nuevo por acá probablemente lo hubiera clasificado como que es parte de los rojos y sin embargo está bastante más cerca de los otros hay que buscar cuál es el mejor hiperplano que separe esas dos clases en ese sentido lo que hace voy a plantear directamente cuál es el el el problema de optimización que es el siguiente, es maximizar te va a hacer esto, ya va a ser la mitad de eso tenemos un conjunto perdón, tenemos un conjunto de puntos X de una clase y un conjunto de puntos Y subí de otra clase y lo que vamos a tratar de hacer es encontrar el hiperplano que deja a todos los X de un lado y a todos los Y del otro y hay que imponer acá una restricción sobre el sobre la norma para que si no esto después puedes escalar todo y no tiene sentido esto es un technicínico nada más entonces fíjense que lo que dice acá es ese hiperplano deja a todos los X de un lado y a todos los Y del otro lado y el margen de esto es exactamente de usted es hacer es maximizar el margen ese de separación es una formulación directa del problema que se llama support vector machines cuando los datos son linealmente separables si no se pueden hacer otras transformaciones en el medio que no tiene ningún sentido hablar de ellas ahora pero quería mostrarles como en un problema clásico de clasificación aparece directamente uno de los primeros problemas que mencionamos como ejemplos de optimización que es una función lineal para maximizar con restricciones lineales salvo bien, esto como introducción nada más vamos a hablar un poco más ahora hasta qué hora era esto hasta y 45 bien, voy a hablar un poco más de aprendizaje automático esto es como clasificación es como una subaria de aprendizaje automático el aprendizaje automático básicamente lo podemos definir como hacer algoritmos que a partir de datos como eso aprendan algo por ejemplo un imperplano o una función o algo que tome decisiones basados en esos datos esas decisiones pueden ser de muy distinta naturaleza supongo que todos vieron la noticia del go bueno, eso es un algoritmo de basado en particular en redes neuronales que aprendió de alguna manera a ganarle a todos los jugadores de go algo que se pensaba hace 20 años que era imposible bueno, voy a mostrarles algunas aplicaciones y voy a hablar un poquito de eso de redes neuronales por más que yo no sé nada de eso pero leí un poquito como para contarles un poco de eso lo voy a contar dos cosas voy a hacer 13 ejemplos y con eso termino un ejemplo va a ser simplemente comentar que es todo lo que puedo hacer porque no sé nada de redes neuronales y de como de cuáles fueron las cosas que hicieron explotar las redes neuronales porque las redes neuronales son de los 80 en realidad son muy anteriores van muy anteriores son de los 60, 50 las primeras cosas que se hicieron en los 80 hubo un gran auge de redes neuronales que se murió muy rápidamente porque otras áreas fueron ganando terreno y las redes neuronales no se podían poner a tiro de esas cosas hasta hace 7 años una cosa así que explotaron por dos motivos primero por la cantidad inmensa de datos que hay las redes neuronales son básicamente es como una secuencia de transformaciones lineales y no lineales una tras de la otra o sea, agarrar una transformación lineal T, hacer T de un vector, agarrar un vector T del vector y después una nueva linealidad y después eso repetido muchas veces y a eso se le llama la profundidad de las redes neuronales y por eso le llama deep learning porque se pueden hacer ahora cosas de redes más profundas con más capas porque se pueden hacer cosas con más capas porque hay una gran cantidad de datos y voy a usar algo que le rodeo a un amigo estos es la cuando eligieron al Papa Benedicto en 2005 y cuando eligieron al Papa Francisco en 2003 no solamente en 8 años cambió totalmente y si uno va a cualquier recital a cualquier lado va a ver a alguien un toque y están todos con el celular y están todos sacando fotos en todo momento la cantidad de datos que se generan es realmente impresionante esa agrumadora y todos esos datos son todas las cosas que se están usando para aprender hacer todo ese tipo de cosas de aprendizaje automático voy a mostrar algunos ejemplos nada más de qué se usa reconocimiento de caras estos lo que usan los los autos que se manejan solos tienen cámaras y tienen que saber qué es camino qué es auto, qué es peatón, qué es edificio y todas esas cosas se hacen con ahora los mejores resultados son con redes neuronales estas cosas son impresionantes es descripción automática de una imagen o sea, pones una imagen y te dice qué es lo que hay la computadora, este texto es generado automáticamente por la computadora a partir de la imagen y acá dice un tipo en una remera negra tocando una guitarra que es como lo describiría a cualquiera de nosotros me parece o bueno, finando acá un trabajador de la construcción de seguridad naranja trabajando en un camino en la misma red sí, sí, sí es una red que esas cosas se entrenan o sea, si tienen un montón de imágenes donde se sabe cuál es el etiquetado lo que les comentaba hoy con las peres y las manzanas vos tenés un conjunto de entrenamiento vos sabes que todas estas que llegaron acá son peres y estas que están acá son manzanas y con eso aprendés el hiperplano bueno, esto es parecido vos tenés un montón de imágenes para la etiqueta, digamos, que le puso a algún humano y con eso aprendés la transformación T de las que les hablaba la transformación lineal básicamente una red neuronal es una transformación lineal seguido, perdón, una transformación lineal seguido de una no-linealidad y esto, n veces y los dibujos que aparecen son como neuronas capas de neuronas interconectadas así y donde básicamente se va pasando un sector de un lugar hacia adelante y en el medio se aplica la no-linealidad entonces claro, con todos esos datos que se generan uno puede entrenar redes neuronales de manera más o menos estable yo les decía en el primer día que hoy la barrera de las cosas que se pueden hacer de optimización y las que no las que se pueden hacer en el sentido de que vos me das un problema yo digo, todavía ya el mínimo global de esto y lo que no, era la convexidad si me das un problema convexo, sé que lo puedo resolver si me das un problema convexo, voy a hacer lo mejor que pueda las redes neuronales son altamente no convexas las funciones del objetivo, o sea, uno quiere minimizar la diferencia entre lo que la salida que quiere y la salida que da la red no, eso es el entrenamiento uno tiene datos, como por ejemplo peras y manzanas para minimizar el error que comete la red esa minimización se hace por descenso progradiente lo que pasa es que son algunas cosas sobre la optimización de eso esa minimización está muy malcondicionada en el sentido que es la función objetivo que hay que minimizar es muy no convexa así que lo mejor que podemos hacer es llegar a un mínimo local lo que pasa es que claro con tantos datos los mínimos locales igual son buenos igual hacen cosas como éste la otra imagen que no leí son dos chicas jóvenes jugando con lego hay una que no es joven bastante bien igual bien entonces lo que les quería decir sobre la optimización de eso son dos cosas primero, esto está parcialmente relacionado con algunas de las cosas que comentamos ayer de estimadores de máxima velocidad no voy a escribir mucho más así que lo dejo prendido va iba a caer en algún momento básicamente uno quiere minimizar cierta función de costo sumo que W son los parámetros de la transformación lineal uno quiere minimizar cierta función de costo que básicamente uno de lo que hace mirar la salida de la red mirar qué es lo que tenía que dar y eso lo mide de alguna manera lo pone alguna norma ahí pero claro uno de lo que tiene es son un montón de datos entonces lo que quiere minimizar es la suma de las las pérdidas se llaman sobre todo el conjunto de datos y esta suma va desde 1 hasta M donde M es la cantidad de datos que tiene son millones miles de millones entonces uno, quiero hacer descenso por gradiente, quiero calcular el W que me minimiza esto, quiero hacer descenso por gradiente entonces puedo calcular el gradiente de esto el gradiente de esto es la suma de los gradientes ¿si? donde esta suma de vuelta es de 1 a millones el I codifica cada una de las muestras yo tengo una pérdida por cada muestra una distancia por cada por cada muestra esto es impracticable, yo no puedo hacer mil millones de gradientes y después sumarlos es impracticable entonces lo que se hace es una cosa que se llama stochastic gradient descent descenso por gradiente stochastico que lo que se hace es agarrar algunos de estos y calcular el gradiente como si eso fueran los elementos ese gradiente y bajar por esa dirección y después agarrar otros de ahí viene el nombre stochastico ¿si? exacto hay distintas maneras de hacerlo de repente en algún momento volver a agarrar algunos de los que ya habías agarrado eso depende como simplemente pero si, la idea es que agarras aleatoriamente un conjunto chico de ese conjunto inmenso que tenes y bajas un poquito, bajas otro poquito, bajas otro poquito y bajo ciertas condiciones eso converja un mínimo local o sea ya es complicado garantizar la convergencia a un mínimo local ni hablar de un mínimo global eso no hay chance bueno, entonces decía, las dos cosas que hicieron explotar las redes neuronales fueron la cantidad de datos y por lo tanto podemos conseguir buenos mínimos locales y después la segunda es cómo hacer un algoritmo para hacer el descenso por gradiente básicamente que se llama sale back propagation básicamente la regla de la cadena uno hace la regla de la cadena acá y ahí puede calcular los gradientes en cada una de las transiciones lineales y eso fue, es algo de los 80 que explotó con todo esto y se encontraba una manera de hacerlo estable esas son las para mí el par de cosas que hizo explotar las redes neuronales hay cualquier cosa que diga de más de eso, va a ser mentira porque eso es todo lo que sé debo haber dicho algún disparate pero bueno la otra cosa que quiero comentar es muy rápidamente cinco minutos es algo que tiene un poco más de tiempo que se llaman los modelos esparzos básicamente uno tiene una de vuelta tiene un conjunto de datos y vamos a asumir que podemos escribir los datos que tenemos como combinación lineal de unos pocos elementos de una matriz entonces a las columnas de esta matriz se llaman átomos en general entonces lo que queremos hacer es suponemos que podemos escribir cualquier elemento pensamos en imágenes imágenes sin ruido todas las imágenes sin ruido se pueden escribir como combinaciones de algunos pocos elementos de acá en realidad se trabajan con paches chiquitos de ocho por ocho píxeles por ejemplo cada uno de esos paches de ocho por ocho se pueden escribir como combinación de diez elementos de esta matriz esta matriz en general tiene es gorda tiene muchísimas columnas y esto tiene tamaño de qué es el tamaño del pache cada uno de los paches lo puede escribir como suma de diez paches de imágenes sin ruido que tengo por ahí a esto se puede aprender también o sea la matriz esta se puede obtener como un mínimo también cuál es la mejor matriz para determinada base de datos entonces lo que uno tiene ese modelo en el cual por ahora asumimos y no voy a por ahora y asumimos en general pues no voy a poder decir más de eso asumimos que todas las imágenes limpias se pueden escribir como combinación de pocos elementos de esa matriz o de pocas columnas de la matriz bien ese es el modelo eso lo vamos a usar para hacer lo que se llama dinoicin que es agarrar una foto ruidosa y tratar de sacarlo al ruido entonces lo que se hace es tenemos esta matriz que sabemos que es buena para representar fotos sin ruido y lo que hacemos es viene una foto I que tiene ruido y queremos encontrar cuál es la foto sin ruido más cercana a la foto con ruido que nos llevó entonces lo que hacemos es tratar de escribirla tratar de escribirla como combinación de elementos de la matriz en general como esta matriz es gorda este problema está muy sobre determinado y en general esto va a dar un vector denso pero nosotros lo que dijimos es lo que queremos es que las matrices sin ruido se pueden escribir como combinación de pocos elementos de ahí bueno quiero una solución X de ese sistema pero que use la menor cantidad de elementos no nulos posibles entonces eso se puede hacer agregando acá un término que se llama la pseudo norma cero que cuenta la cantidad de elementos no nulos no es una norma porque no cumple alguna de las propiedades pero es una pseudo norma este problema no se puede resolver decirme cuál es la solución de lambda es un parámetro que uno regula por ejemplo lambda igual uno lo que quieran cuál es la solución de este problema la combinación de la menor cantidad posible de elementos en algún sentido de la matriz de columna es la matriz que te aproxima mejor y bueno eso no se puede resolver porque este problema es no convexo porque esto es la norma de conteo vale uno y cero entonces lo que se hace es algo parecido lo que hicimos los dos primeros días reemplazar eso por una función convexa que es la norma uno que es la que mejora aproxima la norma de conteo dentro de las normas convexas uno puede mirar la norma p p de uno para arriba eso da lugar a las normas convexas de esa la que mejora aproxima la norma cero es esa y este problema es convexo ahora y esto se puede resolver entonces y bajo ciertas condiciones de la matriz muy genéricas la resolución de este problema da lugar exactamente a la solución del problema anterior ahora eso es una teoría que nació en el 2005 por ahí hay unos artículos muy buenos de Manuel Candés y Terence Tao sobre cómo resolver y cuándo esas soluciones son equivalentes y luego vinieron más resultados más genéricos son del estilo de lo que les compré que les comenté el primer día que queríamos minimizar el rango de una matriz sujeto a que conocíamos algunas de las entradas y que ese problema no se puede hacer y lo que hicimos fue sustituir el rango por la norma nuclear que era la suma de los valores simulares y de vuelta, bajo ciertas condiciones la solución de los dos problemas era la misma es básicamente lo mismo con algunas alvedades básicamente si piensan en la descomposición espectral, en los valores propios si quieren los valores simulares la cantidad de valores simulares no nulos es el rango de una matriz y esto en definitiva si pongo el cero cuenta elementos o sea cuenta, si lo ponemos acá el vector de valores simulares cuenta cuántos valores simulares no nulos hay y si lo ponemos el uno es la suma de los valores simulares que es lo que hicimos, que es la norma nuclear entonces la norma cero a la norma uno es como el rango a la norma nuclear en las matrices y por eso los resultados de existencia de solución y de cuando la solución de este sistema es la misma que la solución del otro sistema son del estilo digamos son siempre asintóticos igual bueno y les voy a mostrar algunas cosas que se pueden hacer con eso entonces esto es dinoisine es exactamente lo que les comenté al principio se entrena, se aprende una matriz esta matriz también se les decía, se obtiene como un problema de minimización o sea se minimiza una cosa que obtiene la mejor matriz para representar una base de datos de imágenes claras que uno tiene entonces esta es la imagen con ruido y esta es la solución del problema S esto se llama impending es agarrar una imagen para intentar sacarle cosas que están obstruyendo en este caso el texto y de vuelta se logran resultados que son impresionantes creo que hay un zoom, ahí está el de la derecha es el resultado de la minimización acá hay otro de impending no parece, si uno mira esta foto no le parece que haya sido limpiada alguna manera esto es otro impending hay un poco de trampa acá porque esto es un vídeo en realidad es un frame del vídeo pero de este frame recupera eso claro ahí tiene información también de otros frames que vinieron después y antes por eso digo que es un poco tramposo pero de todas maneras es sorprendente cuando uno mira este vídeo no ve nada cuando uno mira este vídeo no ve nada después hay otra cosa que se llama super resolución estas cosas igual ahora con redes neuronales hay cosas que funcionan mucho mejor pero es como bueno es eso mejor el CSI digamos pero real y de blurring que es como cuando uno saca una foto movida digamos o cuando hay algo que está cuando se mueve el objeto cuando se mueve la cámara se puede hacer la corrección esa también bueno creo que eso es todo lo que quería contarles hoy así que gracias si quieren hacer alguna pregunta hay un comentario general o algo o lo que sea para para los que son más tirados a ingeniería digamos hay un montón de aplicaciones de esto bueno como las que les mostraba recién hay hay lugares acá en faultad ingeniería donde se pueden hacer eso en el instituto de matemática hay algunos que trabajamos con este tipo de cosas yo estoy un poco alejado ya de eso pero tal conozco medio de rebote ahí hay mucha gente trabajando en el instituto de computación hay alguna gente que está haciendo cosas de aprendizaje automático como estas últimas que les comentaba y después hay todo un lado muy interesante desde el lado de la matemática también bueno la parte que les comentaba hacer optimizaciones de variedad es estudiar la dinámica dentro de la variedad de esos flujos gradientes la discretización ese tipo de cosas son muy interesantes también así que bueno nada espero que algunos se haya interesado por lo menos parcialmente en eso dale sí en general estas cosas funcionan mucho mejor que esas técnicas de CBD son más rápidas y son mejores visualmente hay dos cosas hay dos maneras de medir cuán bien funciona algo me gusta más ésta que ésta y hay otra que es numérica bueno la manera de hacer estas cosas en general es tener una foto que está bien digamos que es nítida le agregar ruido artificialmente después se lo tratas de sacar y lo comparas con la versión original que tenías entonces hay una medida de cuán cerca estás de la imagen original esas medidas son malas desde el punto de vista perceptivo hay maneras de hacer imágenes que sean muy parecidas y que a la vista de cualquiera de nosotros no tiene ninguna diferencia pero cuando miras la distancia a esa es enorme cosas que no tienen sentido entonces desde el punto de vista numérico igual de cualquiera de los dos puntos de vista estas cosas funcionan mejor que hacer cosas simples con la CBD pero ahora las redes neuronales le ganan a cualquier cosa la introducción de qué es lo que está pasando porque básicamente uno tiene un millón de parámetros ahí que tiene que optimizar y hay cosas que ahora hay algunos trabajos que están intentando interpretar qué es lo que hace cada transformación en el medio pero es realmente muy difícil de interpretar esas cosas y falta mucha teoría hay un trabajo medio reciente tiene como 4 o 5 años ya de Estefan Malat y Joan Bruna que va a tratar de traer el año que viene que es un trabajo muy interesante sobre interpretar esto de estas redes neuronales en algún sentido que da luz a alguna parte de eso pero en general uno tiene una red neuronal y no sabe qué es lo que pasa dentro mejor dicho sabe qué es lo que pasa sabe exactamente qué es lo que pasa es una transición lineal y después una no linealidad pierde interpretatividad bueno les decía que iba a escribir notas están casi prontas cuando las termines se dan subidas a la página y vamos un poco al aire fresco entonces gracias