en las últimas lecturas, les hemos estado hablando sobre redes neuronales y como estos avances importantes aparecieron como resultado de esta nueva tecnología; en esta lección vamos a hablar un poco más de algunas advertencias acerca del aprendizaje de máquina y en cosas para pensar antes de que implementen estos sistemas nuevos uno de los mejores consejos que puedo darles es que los datos y las preguntas vienen siempre antes de los algoritmos, eso es que un montón de problemas de aprendizaje de máquina no necesitan de técnicas avanzadas como las redes neuronales profundas con LSTM y todos estos otros zumbadores; muchas preguntas pueden ser contestadas teniendo una pregunta muy clara que puede ser respondida y con un buen conjunto de datos que se usa para responder a esa pregunta, entonces la 1er cosa a pensar es qué es lo que quiero saber? y si no puedo conocer lo que quiero conocer, hay algo que pueda usar y en 2do lugar tengo los datos para responder a la pregunta y si no tengo esos datos como puedo hacer para obtenerlos las redes neuronales a veces necesitan en verdad una enorme cantidad de datos para poder funcionar correctamente y para conjuntos de datos más pequeños hay otros algoritmos diferentes que funcionan mejor con poca cantidad de datos y esto es una cosa en la que hay que pensar, probemos los otros algoritmos antes de lanzarse en el alto entrenamiento que significan las redes neuronales y otra vez queremos poner el énfasis en que pensemos en los datos y en las preguntas antes de pensar en los algoritmos. Entonces acerca de ese punto sobre datos limpios, otra cuestión que quiero señalarles es que no siempre es obvio como limpiar los datos y en particular algunas cosas son obvias, se puede representar la edad como un número, uno puede representar el código postal como un número pero otras cosas no son tan obvias; imaginemos que queremos construir un sistema de recomendaciones de producto y vimos que alguien en algún momento compró un trípode y un micrófono; cómo podemos tomar esos datos y hacer nuevas recomendaciones; una forma en la que podríamos hacerlo es listando el número del producto que ellos compraron pero eso puede ser un poco confuso; tal vez querramos representar que ellos compraron un trípode, puede que si vemos que ellos compraron un trípode y luego compraron un micrófono, es probable que necesiten una cámara; pero al mismo tiempo si vemos que estuvieron buscando 6 clases diferentes de trípodes, puede que querramos exactamente el trípode que están buscando, así se puede realizar una recomendación diferente para otro trípode por ejemplo; entonces otra cosa es que los datos que vienen del lenguaje natural son muy difíciles de representar y entonces puede que tengamos que tomar cada palabra individual y convertirla en un número, pero muchas veces estas palabras se combinan en formas complejas; en forma hipotética uno puede tomar una oración entera y representarla como un número, pero eso puede que no sea muy útil debido a que la mayoría de las oraciones no son usadas la mayor parte del tiempo; entonces otra vez, es difícil y lleva mucha investigación darse cuenta de como mapear algo como el lenguaje natural y poder decir esta persona gusta de mi o no gusta de mi la otra advertencia que queremos señalar es acerca del concepto de hardware; estas redes neuronales y otros algoritmos de aprendizaje de máquina muchas veces necesitan ser entrenados sobre grandes conjuntos de datos y necesitan correr a través de estos datos muchas veces y luego la cosa es que a veces se necesita mucho hardware para poder entrenar a estos modelos y así AlphaGo, del que ya hablamos hace un par de clases, corre sobre algo que se llama la unidad de procesamiento de tensor, que es una pieza de hardware especialmente diseñada para poder correr rápido; no se necesita ese hardware especializado pero a veces uno necesita muchas tarjetas de video o acceso a la nube de Amazon para poder entrenar estos algoritmos; entonces otra cosa a tener en cuenta, dependiendo de cuanto tiempo se quiera entrenar, pueden haber diferentes algoritmos de aprendizaje de máquina; una 3ra cosa de la que quiero hablar, que creo es importante es esta idea de transparencia y robustez; muchos de ustedes puede que hayan visto el movimiento de un proyectil en una clase de física introductoria y pensemos que tenemos algunos paracaidistas que van a saltar del avión y tomando las leyes del movimiento de Newton que nos va a decir la velocidad a la que llegarán al suelo, que es de la raíz cuadrada del doble de la altura desde la que saltaron multiplicado por la aceleración de la propia gravedad y si corremos estos números vamos a ver que llegarán al suelo a 120 millas por hora, eso es mucha velocidad; entonces ellos probablemente no deberían saltar, no es cierto? no en verdad, sabemos que las leyes de Newton y para los proyectiles podemos ignorar la resistencia del aire y estos paracaidistas tienen paracaidas que operan perfectamente bajo la resistencia del aire entonces sabemos que estos cálculos va a estar mal debido a que la resistencia del aire va a estar alrededor acá hay otro ejemplo, hay una red neuronal que clasificó a este Panda con 57.7% y clasificó esta imagen muy cercana de un panda con un 99.3%; por qué sucede esto? por qué la red neuronal comete este error? bueno, no está muy claro; este es uno de los mejores beneficios de los descubrimientos científicos sobre el aprendizaje de máquina puro; en ciencia tenemos a veces conocemos los supuestos y cuando esos supuestos no funcionan más; bueno con los algoritmos del aprendizaje de máquina y en particular con los algoritmos de aprendizaje de máquina más avanzados, no sabemos en verdad cuales son los supuestos nucleares que están operando y entonces cuando esperar que fallen; esto es algo que hay que tener en cuenta antes de usar un algoritmo de aprendizaje de máquina; hay que entender qué necesitamos saber en términos de las clases de errores que pueden suceder en este ejemplo particular se usó una clase de cosas muy particulares llamadas una entrada de adversario, donde se sabía como se comportaban las redes neuronales y donde tomaron la imagen del panda original y encontraron un muy pequeño cambio en la imagen, algo imperceptible para el humano pero para la red neuronal era de una gran diferencia y entonces tenemos 2 clases de mensajes que vienen aquí, una de las cuales es que mientras parece que los algoritmos del aprendizaje de máquina son inteligentes y a veces reproducen a la inteligencia humana, es seguro que no cometen errores en el mismo sentido en el que lo cometen los seres humanos y lo 2do para lo que hay que estar precavidos es que hay un tema de seguridad en el que todas estas clases de entradas pueden llegar a atontar a todo el sistema de forma que no queda claro y entonces es importante tener estas cosas en la cabeza antes de dejarlas que se explayen y de dejarlas que hagan lo que quieran otra advertencia importante de la que quiero hablar es lo que vamos a llamar efectos de retroalimentación, que es cuando una red neuronal influencia sus propias predicciones y un ejemplo simple de esto es cuando el sistema t que ya fue mencionado anteriormente en la clase 1, tiene una serie de sentencias "if" que le dicen a un piloto como comportarse para poder evitar que 2 pilotos choquen un problema con el sistema T original es que no se sabía mucho acerca de algo denominado el suelo y entonces muchas veces hacía malas predicciones a los pilotos, sobre cuando debían aterrizar y entonces el sistema no era muy sofisticado como para manejar el ambiente completo en el cual era desarrollado y entonces parte del problema que los pilotos ahora aprendían cosas que no eran confiables debido a que no estaban tomando las decisiones que ellos esperaban y entonces debido a esta retroalimentación el sistema no era tan efectivo como se esperaba originalmente y hubo que actualizarlo muchas veces veamos otro ejemplo de la epidemiología donde podemos modelizar la irrupción de una enfermedad y vamos a tratar de ver qué rápido se contagia toda la población, estos modelos asumen que haciendo lo que normalmente hago, voy a ir a trabajar, voy a ir a casa, puede que vaya a la casa de un amigo y eso va a influenciar con quien interactúo y por lo tanto a quien puedo contagiar; sin embargo si voy a usar este modelo epidemiológico y decir "oh mi dios" esto es muy malo y luego decirle a todo el mundo que deberían ser cuidadosos, bueno de repente puede ser que no vaya al trabajo, tal vez haga algo completamente diferente y puede que de hecho tenga la enfermedad pero voy a ir a una ciudad diferente para evitarla y así contagiar de manera mucho más rápida que si no hubiera usado el modelo; entonces es importante asegurarnos de que el modelo no esté influyendo en el sistema que está siendo modelado y le diga como comportarse otra clase de ejemplos viene de algo que se llama reincidencia bajo palabra; decidir si le van a dar la libertad condicional a los individuos y hay algunas cuestiones acerca de lo que es justo que deben ser investigadas ahora en términos de cuan justos o injustos son estos algoritmos de toma de decisiones y esa es una de las cosas más grandes en las que podemos pensar y la 2da cosa en la que tenemos que pensar; supongamos que no le concedemos la libertad condicional a cierta clase de individuos, como si nuestro algoritmo dijera, nunca nunca le den la libertad condicional, también si queremos recoger datos en el futuro, nunca obtendremos datos en la categoría de los individuos y nunca vamos a aprender que el sistema tal vez se equivocó y otra vez si el algoritmo de aprendizaje de máquina está influenciando los datos entonces hay que entrenar la próxima iteración del algoritmo de aprendizaje de máquina, en verdad hay que ser cuidadosos otra cosa en la que podemos pensar es que a veces los problemas temporales no son problemas de la IA, hay muchos problemas que incluyen seres humanos que en forma conjunta toman desiciones colectivas, por ejemplo los problemas políticos o la forma de lidiar con temas emocionales o de vínculos como problemas sociales y en muchos casos las computadoras no pueden resolver estos problemas, son cuestiones humanas que incluyen la resolución de conflictos y muchas otras discusiones importantes para las cuales no podemos programar una computadora para que nos de la solución correcta otro ejemplo es que existen problemas de aprendizaje que no son problemas de aprendizaje de máquina como ya mencionamos los problemas del aprendizaje de máquina implican la creación de nuevas predicciones a partir de los datos, pero hay muchos problemas que no requieren datos, sino que requieren reflexión y vemos aquí en el medio, por ejemplo, que hay un texto que parece jerigonza pero de hecho fue generado por algo que se llama el descifrador de César y un descifrador de César es algo que hace que por cada letra del alfabeto la reemplaza por una letra diferente de ese alfabeto; por ejemplo A se vuelve F y B se vuelve Q, etc. y si uno puede reflexionar lo que podemos darnos cuenta es de que en los textos ingleses la letra E aparece la mayor parte de las veces y entonces podemos contar las letras más frecuentes y convertirlas en una E y al hacer este procedimiento podemos traducirlo de nuevo en el texto original; pero vemos aquí que se requieren 2 niveles de reflexión, se requiere que comprendamos que este texto no es jerigonza, que puede estar representando algo real y la 2da cosa es de que forma podemos hacer esa traducción no se requieren de muchos datos, requiere reflexión para que podamos ver que está ahí. Otro ejemplo de esto es el de los codificadores parlanchines que durante la II guerra mundial, en vez de usar el idioma inglés, codificarlo y enviarlo por radio; en vez de eso, ellos tomaron nativos navajos para que hablen por la radio; si vos eras alemán y nunca habías escuchado antes el idioma navajo, esto sonaba como jerigonza y tal vez pensabas que este texto estaba encriptado; pero en realidad es una lengua completamente diferente y si podías darte cuenta que es navajo, podías hacer algo acerca de ello pero en Alemania no había muchos navajos y la realidad es que nunca se dieron cuenta para resumir, el aprendizaje de máquina es bueno y realizó muchos avances en clases de problemas que habían sido difíciles de resolver; sin embargo estas advertencias son importantes de considerar y nuestro consejo es que tengan datos limpios y preguntas claras antes de comenzar a pensar en algoritmos; hay que asegurarse de que tenemos lo que necesitamos para responder a las preguntas antes de pensar las formas de responder a las preguntas y antes de implementar el sistema, te invitamos a pensar en todas estas advertencias que mencionamos, por ejemplo la transparencia y los diferentes tipos de retroalimentación que el sistema puede tener consigo mismo