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