 Contamos para este taller con dos crack, como casi todos los ponentes que hemos tenido hoy, y también a mí, Juan Dabí y justo, Juan Dabí trabaja dentro del INTEF, los dos trabajan en el INTEF y trabajan en el proyecto CoDINTEF que seguro que habéis visto, un gran proyecto que se ha lanzado desde el ministerio, que están impulsando y bueno, una de las cosas que ellos están potenciando y donde están trabajando de lleno es en la escuela de pensamiento computacional. En concreto, Juan Dabí se está dedicando a la escuela de pensamiento computacional secundaria y justo se dedica en bachillerato haciendo cosas más con robots, más de robótica. Además, ya están preparando la siguiente línea, muy enlazado con las diapositivas que van a presentar, una línea de inteligencia artificial, que bueno, no sé si luego ellos comentarán algo. Así que nada, justo, Juan Dabí, os dejo ya para que discaña, ¿no? Bueno, pues muchas gracias, nosotros estamos este año, hemos empezado a explorar el mundo de la inteligencia artificial, concretamente del aprendizaje automático. Y el resultado más interesante que hemos llegado es un recurso que publicamos sobre el mes de enero más o menos en el que enseñábamos una herramienta con la que se puede trabajar la inteligencia artificial. La inteligencia artificial que claro, así normalmente siempre se piensa que esto es algo de ciencia ficción, que es algo de un nivel tan friki, tan abstracto, que es de ingeniería total, que es inasequible. Y bueno, creemos que no, creemos que se puede y además se debe introducir este tipo de contenido. Lo que vamos a hacer en estos dos talleres de hoy mañana, pues prácticamente gira alrededor de este recurso. Vamos a mostrar como una manera que hemos visto que es la que se puede introducir estos contenidos en primaria y en secundaria. Hoy va a ser algo más teórico, vamos a hablar de inteligencia artificial, de machine learning. Haremos un ejercicio que es este recurso del mes, lo haremos paso a paso. Vosotros podréis seguir haciéndolo, pero la idea principal es que sigáis la explicación, más que haces lo vosotros hoy que sigáis la explicación. Y mañana, el taller de mañana, pues va a estar dedicado a que seáis vosotros realmente los que juguéis y os divirtáis con esta aplicación y que creéis vuestras propias aplicaciones dotadas de inteligencia artificial. En resumen, lo que vamos a intentar aquí, así en plan práctico, es que las aplicaciones de Scratch, que ya habéis empezado a ver cómo funciona, cómo se hacen, incluso aplicaciones con APEP Inventor, también voy a poder hacerlo, pues que dotéis a esas aplicaciones de inteligencia artificial. Eso por la parte práctica, y después por otra parte, pues que salgáis de aquí con uno fundamento, con unos principios básicos de qué va esto de la inteligencia artificial. Bien, bueno, la primera pregunta que nos hacemos es por qué introducir contenido sobre inteligencia artificial en la escuela. Y aquí yo me voy a remitir a la primera charla que tuviste con la que se abrió este curso de verano, que fue estuvo a cargo de Núria Oliver, una auténtica crata a nivel mundial en el mundo de la inteligencia artificial de Machine Learning. Y ahí seguro que os contaría pues por qué esto debe ser introducido en la escuela, no solamente la inteligencia artificial, sino también el pensamiento computacional. Y es por una cuestión de conocer la realidad, una de las funciones de la escuela es que nuestros alumnos y nosotros mismos, sepamos o tengamos una percepción lo más precisas posible del mundo en el que nos movemos. Y realmente la inteligencia artificial de unos años para acá ha rompido de una manera bestial. No solamente eso, sino la tecnología en general. Pero esta tecnología tiene una serie de consecuencias éticas que van un poquito más allá. Todas las tecnologías nuevas, todas las tecnologías, la comunicación, la información, las consecuencias éticas son bastante importantes. Y esto es como el agenda. Esta tiene una consecuencia ética muy importante porque los algoritmos de inteligencia artificial suelen servir para tomar decisiones. En base a lo que sea, ya iremos viendo eso. Y esas decisiones, bueno, lo mismo ocurre como el algoritmo de Michael Lenin, de aprendizaje automático de Google, que en un momento dado clasificando imágenes, clasificó a estos dos chavalotes como gorilas. Obviamente, eso tuvo su trascendencia. Aquí hay un artículo muy interesante que habla precisamente sobre este tipo de problemas éticos. Entonces, yo creo que con lo que dijo Núria Oliver, y más o menos esta pregunta está casi contestada. O sea, sí, es necesario que esto se introduzca. Lo que pasa que ahora viene la parte operativa, ¿no? Bueno, perdona. Otro algo importante que se me ha pasado es que realmente hay una preocupación por parte de los gobiernos, hay una preocupación institucional por el tema de la inteligencia artificial en todos los ámbitos, o sea, de los económicos hasta la educación. Y hay informes, aquí hay tres informes que presentamos, uno que es de la Comisión Europea, otro que es de la UNESCO y esto que es del propio Estado de España, de la estrategia española, inteligencia, perdón, ningún más de más ahí, e inteligencia artificial. Y estos son reports, son informes concretos sobre la inteligencia artificial en la educación. Realmente, hay una preocupación a nivel institucional. Lo que sí es verdad que aquí hay gente dándole al coco y viendo cómo esto se mete, ¿no? O sea, ¿qué es necesario? Por una cuestión simplemente de engancharse a lo que seguro que Luria dijo de la Cuarta Revolución Industrial. Si hay que estar ahí, hay que saber cómo funciona esto, no para sin ingenieros, sino simplemente para tener una idea de cómo funciona y cómo afecta a nuestra sociedad. Y la cuestión operativa, ¿no? Estamos bien estos, pero podemos enseñar inteligencia artificial en secundaria. Esa es la pregunta que vamos a responder aquí. Y más que responderla, vamos a mostrar. Nosotros estamos convencidos que sí, que sí se puede. Incluso vamos a mostrarla en base a unas experiencias previas que hemos puesto en marcha. Así por situar la inteligencia artificial, que esto tampoco es algo absolutamente novedoso, que, joder, tenemos el pensamiento computacional, y ahora la inteligencia artificial, y después que en realidad la inteligencia artificial se concibe o está, lo que la concebimos como un potente recurso para desarrollar el pensamiento computacional. Ya os habrán hablado, seguro, de que el pensamiento computacional, a pesar de que hay muchas definiciones sobre esto, así más o menos todo el mundo está de acuerdo que una habilidad para resolver problemas haciendo uso de la potencia de cálculo de las computadoras. Y la inteligencia artificial es resolución de problemas con máquinas, con computadoras, que de ser resuerto por un humano necesitarían algún tipo de inteligencia. Aquí hay millones de definiciones y además es un bosque en el que uno se pierde fácilmente, pero más o menos podemos llegar a estar de acuerdo todos en esto. Y si uní los dos cuadros veréis que esto está dentro de aquí. Es algo que podemos utilizar, porque son algoritmos también, para desarrollar estabilidad. Y así es como nosotros, y prácticamente todos los que estamos trabajando en este ámbito, lo concebimos como algo que podemos utilizar para desarrollar. Está dentro del pensamiento computacional. De hecho, muchos de los algoritmos que podéis desarrollar en su momento son concebidos como algoritmos de inteligencia artificial. Incluso se pueden seguir concebiendo así, porque un algoritmo que toma decisiones en base a una serie de reglas, se obtengan esas reglas como se obtengan, y después veremos qué hay que decir con esto, pues puede ser considerado de inteligencia artificial. De ser resuerto por un humano requerirían algún tipo de inteligencia. Con esto quiero ir un poco entrando en el camino de la desmitificación de la inteligencia artificial, porque quizás sea uno de los puntos más importantes a la hora de que realmente esto lo tomemos en cuenta y que no parezca un tramochamiento de unos pocos. Porque ya digo, el término está muy asociado a la ciencia efectiva, y está muy asociado a algo inasequible. Bien, entonces, con ese objetivo de ver cómo nos planteamos esa introducción de este ámbito de inteligencia artificial en el aula, es una posible manera pues atendiendo definiciones. Y si uno se pone a leer definiciones y se pone a leer cosas de inteligencia artificial, termina brumado. Aquí podríamos tener discusiones infinitas, porque hay un montón de definiciones, un montón de perspectivas a la hora de ver qué es esto de la inteligencia artificial, y es prácticamente infinito, ¿vale? De hecho, y lo diré después, yo pienso particularmente y no estoy solo, hay muchas otras gente que piensa que inteligencia artificial es una expresión desafortunada para lo que vamos a hablar realmente. Lo iremos viendo a lo largo del taller. Por eso, algo que hemos encontrado, que nos resulta muy valioso, es un marco conceptual o un marco teórico que presenta cinco grandes ideas sobre lo que es la inteligencia artificial. Y esas cinco grandes ideas pues están representadas en este círculo. Todo ha sido desarrollado en una iniciativa, se llama Artificial Intelligence for K-12, que la ha desarrollado en la asociación americana para la inteligencia artificial y Computer Science Teachers Association, creo que es la asociación de profesores para la ciencia de la computación. Y realmente, bueno, pues su misión en esta iniciativa es recopilar, trabajo, recopilar recursos de calidad que estén bien curados y también pues empezar a tratar pues con las administraciones, con las instituciones educativas sobre qué es lo que habría que introducir en los currículum. En la transparencia que tenéis un enlace, si lo picáis, vais a la página este veréis que hay un montón de recursos. Hay muchos recursos, y yo recomiendo especialmente para todos los que estamos aquí este, que es un cursito, mini-curso, que son aproximadamente dos horas, no más, se hace completo. Y es un curso que va revisando todas estas grandes ideas. Lo va revisando de una manera interactiva, de manera que cuando uno termina pues como que ya tiene una idea más los pies en la tierra, ya ha empezado su viaje hacia la demitificación. Ya salimos de la ciencia ficción. Y esas cinco ideas pues giran en torno a la percepción, se necesitan datos para poder hacer inteligencia artificial, sobre todo la inteligencia artificial moderna, y para obtener esos datos los sistemas tienen que percibir de alguna forma. Se necesitan representar y rastramiento, hay que buscar una representación que la computadora entienda, hay que buscar modelos, hay que buscar algoritmos que utilicen esos modelos para llegar a resultados, y eso se llama representación. Esto, si lo pensáis, no es algo propio de la inteligencia artificial, es algo propio de la ciencia de la computación en general. Se necesitan esas representaciones y esos modelos. El aprendizaje, ese tercer punto sí que, casi que lo podíamos poner más grande, incluso especialmente porque la inteligencia artificial está siendo éxito, que es la que estamos escuchando desde hace unos años para acá que gana el Go, que conduce coche autónomo, que hace unas maravillas tremendas. Esa inteligencia artificial es prácticamente aprendizaje automático, lo que se llama machine learning, y es realmente lo que vamos a trabajar en este taller en el de mañana, y en el de viernes, que también se va a ver una parte en la que se va a recalcar, se va a sentar estos conocimientos. Pues está basado en esto, en el aprendizaje. Es decir, aprendizaje, y ya empiezo a meter el chascarrillo que voy a repetir innumerables veces a lo largo del taller, es, a partir de unos datos, mediante unos algoritmos, sacar patrones que permitan a la computadora extraer reglas. Esto que acabo de decir, lo voy a decir 40 veces más de distintas formas, a lo largo, y esa va a ser realmente la frase. Así como lo había dicho muchas veces, pues ahí la dejo la primera. Por otro lado, otro de las grandes ideas que tenemos es la interacción natural, y por otra parte, una muy importante, probablemente la que sea más difícil de trabajar, y además, la más importante porque nos afecta a todos, es el impacto social. Bien, vamos a ver así un poquito, una reseña, algunos ejemplos, de cada una de estas grandes ideas. Ya digo que estas grandes ideas no, si le damos para atrás, a mí esto me gusta verlo, como que le pongo aquí un eje, le doy así a la rueda, esto empieza a dar vuelta, y todo tiene el mismo color. Porque es así, ¿no? Como el yin y el yang, que se le da la vuelta y se convierte todo en el mismo color. No son compartimentos estancos, ¿vale? No hay inteligencia artificial solo aquí. Lo que pasa que es verdad que se puede, nos podemos centrar más en unos aspectos o en otros, para que este bosque tan frondoso, no me terminemos perdido en este bosque tan frondoso. Esa es la idea de este marco. Bien, percepción. Aquí acabamos de hacer un magnífico taller en el que Pedro y Eva nos han ilustrado magníficamente que es esto de internet de las cosas, de Internet of Things. Pues con eso ya tenemos más que suficiente. Incluso también ha apuntado algunos problemas éticos, justamente en el momento en el que el micrófono se dio de funcionar, posiblemente porque le estaban pillando y no le gustó el micrófono lo que estaba diciendo. Bueno, fuera broma. Gracias a lo que se conoce Internet of Things, pues, tenemos datos. Tenemos datos en el mundo físico. Que esos datos normalmente se procesan, se preprocesan por estos cacharritos, lo conocéis, ¿no? Se mandan, con esta Internet, a grandes servidores y allí pues son procesados por técnica de data science, Big Data. Big Data es mogollón de datos, muchísimos datos. Y esos datos se obtiene conocimiento a partir de esos datos y cuidado porque cuando se habla de toda la inteligencia artificial pasa en toda la ciencia de la computación y pasa en todo el mundo del pensamiento computacional. Acudimos a metáforas continuamente, metáforas que tienen que ver con comportamientos humanos. Y hay que tener cuidado porque por una parte sirve para entender pero por otra parte estamos engañando. Conocimiento, cuidado. Conocimiento es una propiedad humana y no sabemos si literalmente se debe llamar conocimiento a esto. Esto es simplemente técnicas estadísticas para descubrir patrones en los datos y de esa manera generalizar a otros datos. Yo lo veo mejor así. Menos confuso. Lo que pasa es claro, la metáfora normalmente funciona. Pero tenemos que tener cuidado con dejarnos llevar por la metáfora porque después nos va a decepcionar porque esto no es una inteligencia mecánica lo que vamos a obtener con esto. Bien, en el tema de la percepción este es un vídeo muy impresionante que no sé si lo conocéis en el que se muestra pues un... pues eso, ¿no? Un coche que conduce solos, la conducción autónoma. Aquí existen todo tipo de sistemas de inteligencia artificial y uno de ellos es el que se encarga de mirar a través de cámara porque no es una sola cámara, si veis aquí hay como tres, cuatro cámaras de mirar el mundo a través de las cámaras y con algoritmos de reconocimiento de imágenes pues va reconociendo las distintas cosas con las que se van encontrando. La carretera, los árboles, las personas, las señales. Bien, eso puede ser una forma de introducir esta parte que hemos llamado percepción de la inteligencia artificial. Una posible idea. La segunda gran idea que es la representación, el razonamiento pues bueno, ya veréis que a medida que vais programando en Scratch o en cualquier otro lenguaje de programación hay que comerse la cabeza para que el problema que quieres resolver lo plantes en un lenguaje de programación pues eso es lo que se llama la representación. Por ejemplo, el juego piedra, papel y tijera que seguro que conocéis todo pues eso es una representación del conjunto de soluciones que tiene el juego. Si el jugador uno saca piedra, el dos saca piedra pues no ganan ninguno. Si el primero saca piedra, el otro saca piedra perdón, papel que no va a poner aquí pues ganan el segundo y veréis que son todas las posibles jugadas que tiene ese juego. Es un juego muy simple, muy sencillo pero bueno, ilustra suficientemente la necesidad que tenemos de nuestros problemas los problemas que queremos resolver cuando los vamos a resolver con una computadora hay que representarlo. ¿Y eso es inteligencia artificial? Un cachito sí, pero eso es pensamiento computacional es computer science es resolver problemas con computadoras. Es una necesidad. Es verdad que la inteligencia artificial es especialmente visible. Aquí hay por ejemplo una representación de un algoritmo muy utilizado para tomar decisiones que se llama el árbol de decisión que además el último día, el viernes no sé si hace spoiler o no. Vamos a trabajar un poquito este tema vamos a construir árbol de decisión para tomar decisiones por eso se llaman así. Esto es un árbol de decisión muy sencillo estos son los atributos de las cosas que queremos clasificar y aunque esto se parece a lo anterior no es lo mismo. Esto es una representación de un juego completo de las soluciones y esto es una representación de un algoritmo de cómo va tomando decisiones un algoritmo. Pero lo importante aquí es que seamos conscientes de que esto lo necesitamos también para hacer inteligencia artificial o lo que sea. Y aquí vamos a hacer aquí la primera paradita para que vosotros juguéis. Y también vamos a aprovechar para meter otra vez las frases que vamos a estar repitiendo hasta la saciedad. Y es que un tipo de sistemas de inteligencia artificial los más interesantes no sino los más interesantes en el sentido que son donde se están teniendo más éxitos donde hay más logros son los que se llaman estos y ahora voy a soltar voy a soltar una frase con mucha metáfora y poquito a poco voy a ir cambiando la metáfora para ir convirtiéndolas en algo que creo que es más preciso. Estos sistemas son capaces de aprender a partir de los datos. Y vamos a ver por ejemplo cómo pueden aprender. Vamos a hacer aquí una pequeña demo la voy a hacer yo primero y después por 5 o 10 minutitos jugáis vosotros con la aplicación. La aplicación es esta de aquí se llama the teachable machine y consiste en lo siguiente. Aquí por primera vez vais a ver en la práctica cómo funciona esto del aprendizaje automático. Y es vamos a pillar unos cuantos de ejemplos de una determinada imagen. Otros cuantos de ejemplos de otro tipo de imagen eso va a ser lo que se llama el conjunto de datos de entrenamiento. Una vez que tengamos ese conjunto de datos de entrenamiento el algoritmo aprenderá a identificar imágenes que son parecidas a las que hemos metido aquí pero que no son exactamente las mismas. Y entonces dependiendo de lo que estemos introduciendo pues nos dará una salida a otro. Yo voy a colocar aquí esto suena si le pongo aquí speech les dejo aquí los muñequitos. Por ejemplo, me voy a poner aquí enfrente y voy a sonreír y voy a mover la cabeza también. Por aquí la idea es que tengamos muchos ejemplos de cara sonriente con distintas orientaciones con cuantos más mejoros. Big data pero creo que cuanto más mejor porque se necesitan muchos datos cuanto más datos tengamos mejor funcionan estas cosas lo cual es muy lógicamente. Vamos a meter como 30 o 40 imágenes de alguien sonriendo mientras sonrío le voy a dar el botón verde y lo mantengo pulsado. La sonrisa va a estar relacionada con ese muñequito de ahí de una imagen. Ahora me voy a poner en serio no sé si estáis viendo lo que está pasando y ahora me voy a poner sorprendido. Tenemos 20 ejemplos que son poquitos quiero decir que son poquitos para lo que sería un algoritmo en producción real. Los algoritmos que utiliza Google no tienen 34 ejemplos multiplicarlo por un millón y ahí hay una cosa que deberíamos empezar a enlazar datos, datos, datos, porque vamos a estar hablando de datos de datos de datos de datos y los datos son la mina de oro de este negocio los datos son los que realmente van a alimentar al algoritmo de machine learning que existe desde los años 50 ahora es cuando están funcionando realmente porque hay potencias de cálculo y porque hay datos por un tubo pero los algoritmos se conocen desde los años 50 Bueno, a lo que iba tenemos varios ejemplos por aquí otros ejemplos de otro tipo de imagen y otros ejemplos de otro tipo de imagen y esto ya aprendió de forma que ahora ya son imágenes nuevas ya no me he dado todo entrenamiento ahora son nuevas imágenes y vamos a hacer que el algoritmo pues con el hito y el bicho ese yo sería bueno que jugase un poquito y así pues os divertí por un rato y vais empezando a tomar contacto con el machine learning que fijaos estoy hablando de inteligencia artificial y prácticamente vamos a dejar de hablar de ella vamos a empezar a hablar de machine learning porque el 90 y tanto por ciento del trabajo que se está haciendo al menos práctico en inteligencia artificial es pues si queréis jugáis un ratito no se si se ve la si se ve la url con esto un poquito lo que tenemos que empezar a pensar es que estos algoritmos no son mágicos ni muchísimo menos y son sus resultados son tan buenos como los datos que utilicemos para entrenarlo ni más ni menos estos datos estos algoritmos únicamente aprenden del pasado para reproducir el pasado punto, otra cosa también importante es que la clasifica también se está equivocando, esto no es un teorriéndose y me está diciendo que esto es un teorriéndose o sea quiero decir otro elemento importante de este tipo de algoritmo es que fallan, es otra característica de estos algoritmos, no son algoritmos infalibles lo cual da lugar también a una discusión de tipo ético pero la cuestión lo mantiene expulsado pilla ejemplo le quita la ya no tiene expulsado pues clasifica sobre esos ejemplos que son los que ha utilizado para aprender bueno, si quieren dejarlo ya y continuamos con otra de las ideas con la cuarta gran idea que es la interacción humanomáquina la interacción humanomáquina significa eso como podemos hacer una interacción cada vez más natural entre la máquina y el humano un ejemplo que está muy desarrollado y de hecho de las pocas cosas que están muy desarrolladas porque aquí la inteligencia artificial todavía le queda mucho camino y aquí esto enlaza con la robótica y demás son los reconocedores del lenguaje o sea el lenguaje natural del speech reconocedores de voz vale, entonces aquí por ejemplo hay un montón de aplicaciones ya que de hecho en el móvil no sé si vosotros utilizáis de manera frecuente en vez de que le ha decirle directamente lo que queréis y ya él lo interpreta aquí por ejemplo como funciona esto vamos a poner español de España y empezamos a grabar del salón en el ángulo oscuro de su dueño tal vez olvidada silenciosa y cubierta de polvo veías el arpa perfecto hay muchas aplicaciones que ya utilizan esto tenemos un montón de tenemos un montón de adeo de aplicaciones que estén utilizando esto y funcionan muy bien y ya estaban totalmente incluso hasta se puede hablar con un acentito que no es exactamente castellano y a ver cómo responde cuando hablamos así bueno esta es publica se puede utilizar perfectamente y demás, lo que pasa que es verdad que solamente funciona con cron pero pero sí aquí ya ha metido la república de la api pública estos son también algoritmos que están o modelos que están generados con algoritmos de estos tipos de aprendizaje realmente hay un montón de speech, de voces de palabras que se han metido como ejemplo y a partir de ellos pues entienden bueno, vamos a pasar a la otra gran idea esto vamos muy bien, realmente además va corrigiendo, es increíble como que va rectificando dependiendo de lo que yo diga después bueno y luego la quinta gran idea bajo mi punto de vista la más complicada de desarrollar aquí los profesores de filosofía yo creo que podrían hacer una labor magnífica porque es que es un tema complejo de plantear, es un tema complejo de buscar actividades yo particularmente cada vez que intento entrar en la parte ética a pesar de que soy muy consciente del impacto que tiene yo empiezo a liarme de mala manera y el discurso se me va a no ser donde porque creo que es complicado es complicado y el impacto social pues es algo que tenemos que tener y ético es algo que tenemos que tener en cuenta por lo que hablamos antes y demás hay un concepto que se está escuchando últimamente en este mundo se llaman máquinas morales moral machine que se definen como máquinas programadas para tomar deficciones que tienen consecuencias éticas por ejemplo el caso más claro es de la conducción autónoma hay momentos en los que puede fallar el coche por ejemplo se han ido los frenos cualquier cosa que pueda ocurrir que el sistema de inteligencia artificial tenga que decidir si impacto contra los corredores o impacto mejor contra el bloque este en un caso se va a morir el dueño del coche y en otro caso se va a morir los que están por ahí son unos problemas muy difíciles de resolver porque además dependiendo del framework filosofico ético que estemos utilizando habrá unas soluciones u otras y el tema es que la tecnología para hacer esto ya existe lo que no tenemos es el marco jurídico social y demás para poner esto en marcha muchas cosas como responsabilidades de los fabricantes lo seguro, lo yo que sé particularmente es decir que me pierdo y por eso considero que aquí hay mucho trabajo que hacer en este punto y animo completamente no sé exactamente de que soy profe pero sea de lo que sea y por supuesto esto se puede trabajar pero si soy de filosofía o de algún tema fin de idea y sea un campo bastante interesante para desarrollar actividades y sobre todo difundirla para que el resto de profesores las podamos utilizar esta web model machine va de eso ahí, podéis picar en ella y veréis que hay una herramienta para poder establecer situaciones complicadas bueno entonces llega a este punto cuál es el objetivo que nos marcamos en estos talleres, tanto de hoy de mañana como en una parte también del del viernes pues el primero es desmitificar la inteligencia artificial ese es el primero hacer la práctica intangible hacerla realmente asequibles a todos que seas capaz de reconocer cuando una aplicación muy probablemente esté utilizando algún tipo de inteligencia artificial y también construir sencillas aplicaciones en scratch o en app inventor que también se pueden hacer que utilizan inteligencia artificial y ese es el objetivo que nos marcamos vale, y entonces ahora vamos a entrar ya pues con la parte práctica aquí tal como tenemos concebido o planteado el taller voy a desarrollar el ejemplo os animo a que vosotros lo vayáis siguiendo pero si en un momento o perdéis porque en el scratch no encontré tal cosa porque lo dejáis y seguís viendo lo que está pasando aquí porque mañana vaya a tener tiempo de hecho vaya a tener prácticamente todo el taller para que bcheéis, para que juguéis con él y nosotros traemos también dando soporte para explicar hoy a uno por uno como funciona esto bien, entonces vamos a hacer un asistente virtual que es algo que seguro que conocéis todos porque ya se ha hablado en algunas de hecho Pedro anterior habló de los asistentes virtuales tipo Siri, tipo Cortana, el de Amazon que se llama que lo tienes hay un micrófonito en tu habitación y le dice encendeme la luz apaga metáralo por medio de descondicionado y él te va interpretando obedeciendo las órdenes que le vas dando pues eso es lo que vamos a hacer esa es nuestra intención, vamos a simular una habitación donde hay una lámpara donde hay un ventilador y esto es una representación del asistente virtual que podría ser el cilindrito esto, pero es más bonito este muñequito que el cilindro de no me acuerdo como se llama ahora mismo el asistente virtual de Alexa es el bueno y eso vamos a programar esa aplicación una aplicación que entienda órdenes dadas en lenguaje natural y que las ejecute correctamente vale aquí no hay que temblades, si esto va a ser súper complicado esto no es esto es demasiado extraño bueno, no os preocupéis que esto es una sesión práctica de un colegio de aquí de Sevilla, Carlos Quinto donde niños de Quinto y de Sexto han hecho este asistente y el profe se ha basado en los recursos que hicimos del Intest que es lo que vamos a explicar ahora y se ha basado en ellos para hacer su propia clase y bueno, ahí lo tenéis esa satisfacción que se produce cuando te funciona algo cuando programas que es una sensación difícil de describir pero que es muy intensa y precisamente el elemento que es más motivador que tiene esto antes de entrar en el desarrollo me gustaría puntualizar dos o tres cositas la primera la inteligencia artificial que se utiliza actualmente donde se han producido grandes desarrollos y logros entra dentro de lo que se llama inteligencia artificial específica y es que ahí se resuelven problemas muy concretos se resuelven muy bien, incluso en algunos casos los resuelven mejor con un humano que tiene un sistema que diagnostican ciertas enfermedades que incluso llegan a superar a los médicos especialistas bueno a pesar de eso, esos sistemas solamente valen para lo que están programados no son capaces de generalizar más allá de su problema no los puedas sacar de ahí hay algoritmos que ganan algo que es un juego de estos chinos que tienen incluso más combinaciones que el ajedrez hay algoritmos que ganan al ajedrez que es una jugada de jugadores profesionales pero que no saben lo que es el ajedrez ganan, pero no saben lo que es el ajedrez recibimos un problema, ya está no lo saques de ahí eso es inteligencia, bueno, no bien entrar en ese debate, pero lanza ahí la preguntita para que vayamos un poquito lo mismo no es inteligencia, hay que quitarle el nombre a eso es inteligencia, deberíamos llamar de otra manera aprendizaje automático bueno no sé qué nombre, pero que cuida con la metáfora la idea original que se tenían los años 50 la conferencia de darmus donde se reunieron unos máquinas tremendos en el mundo de la computación y que vieron que había la posibilidad de llevar las ideas de Turing y de otros muchos anteriores a la práctica de construir una máquina capaz de razonar, pensar y ser similar en su comportamiento aunque no en su composición como un mecanismo humano eso prácticamente está igual que los años 50 se llegó a un sistema que hacían demostraciones matemáticas fueron como muy alentadores pero no se fue más allá tenía unos aseomas de partir de esos aseomas pues reglas deductivas run demostrabas teoremas matemáticas y era muy impactante y es muy impactante cierto, pero yo creo por lo que he leído y tal a lo más que se ha llegado, no se ha llegado mucho más o es secreto de estado o lo que se nos sabemos por al menos en lo que es la información pública que disponemos, no se ha llegado mucho más ahora bien, aquí sí, aquí se ha avanzado muchísimo entonces dentro de esa inteligencia artificial específica los algoritmos de aprendizaje automático son los que más éxitos han tenido y el tipo de problema que resuelve, que son muchos pero siempre caen los dos grandes tipos clasificación y predicción bien y aquí vamos a empezar entonces con el ejemplito vamos a empezar resolviendo el problema, recordadlo vamos a fijarnos en lo que queremos hacer queremos hacer que nosotros pongamos un texto y que sea interpretado por el ordenador como una orden como ve que la he interpretado esa orden sirva para ejecutarlas realmente, es decir, para encender la lámpara, para apagar la lámpara para encender el ventilador o para pagar el ventilador eso es lo que vamos a intentar hacer y vamos a empezar con un enfoque que se llama top down de arriba a abajo un enfoque basado en reglas en reglas que van a hacer simplemente una serie encadenada de bloques top down, es decir, si ocurre esto, entonces al otro vale, y eso pues casa con una visión de conocimiento deductivo, el basado en reglas el basado precisamente en axiomas que aplica reglas y llegas a demostrar algo o a conseguir lo que sea bien, pues vamos a empezar por ahí entonces me voy a ir a scratch si veis esa url que tengo, no es la url de scratch es scratch pero no es la url oficial de scratch ¿por qué? porque para lo que vamos a hacer después necesito una serie de bloques que no existen en scratch que son los bloques precisamente de inteligencia artificial y esos bloques ahora lo vamos a ver pues de alguna forma se generan y scratch en la versión oficial eso no lo tiene pero como afortunadamente scratch es código libre, es free software tenemos disponibles todo el código con el que se ha programado esta aplicación y podemos modificarlo podemos extenderlo, podemos hacer más cosas con ello y gracias a eso pues hemos metido inteligencia artificial o machine learning concretamente en scratch, por eso voy a utilizar esa url de ahí, vale pero en realidad todavía no le tenemos puesto un dominio bien quizá es juana que enseñarle un machine ahora mismo vamos a simplemente no uséis la versión normal del scratch porque luego la arrancamos desde la otra máquina hay gente que está entrando ya en su versión vale, si va a funcionar porque va a llegar un momento en el que viene a decir grabar lo que tengáis que ahora lo tenemos que cargar en este scratch lo que vamos a hacer ahora es lo que se puede hacer en el scratch normal y corriente vale, lo que vamos a hacer ahora y va a llegar un momento en que lo que hagamos necesitamos esta versión de scratch, yo que voy a hacer porque utilizo esta versión desde principios ya está vale bien, pues vamos al día debéis tener en los materiales de hecho debéis tener un ejercicio posiblemente no lo haya puesto pues mira eso me va a servir para que no lo vayáis haciendo y estéis atento aquí bien para resolver un problema programando mediante una computadora lo primero que hay que tener muy claro es que queremos resolver hasta que no tenemos claro lo que queremos resolver no deberíamos empezar a tirar ni una sola línea de código bien, pues tenemos por un lado ese fondo, que es esto de aquí, no nos vale para nada simplemente para tener la casita tenemos por otro lado un sprite un objeto que le he llamado Giga tenemos una lámpara y tenemos un ventilador fijaos la lámpara tiene ya un código que no vamos a tener que tocar lo he metido ahí para ahí avanzando cómo funciona ese código ese código funciona con lo que se llama mensajes hay un bloque en eventos que se llama al recibir lo que sea un mensaje que nosotros ponemos pues haz lo que venga aquí detrás que simplemente lo que hace es cambiar el disfraz de la lámpara no sé si habéis visto posiblemente sí lo que cada objeto puede tener muchos disfrazes este objeto por ejemplo la lámpara tiene dos disfrazes el disfraz 1 y el disfraz 2 la lámpara no sé qué ha encendido, la lámpara apagada el ventilador también tiene varios disfrazes que esto me va a servir para hacer una animación vale entonces el código de la lámpara simplemente lo que hace es que cuando llega este mensaje pon vale pues se ejecuta eso pon el disfraz lámpara on y cuando recibe este mensaje pues cambia el disfraz de la lámpara off como se mandan mensajes los mensajes los podemos mandar desde cualquier tipo de spray, desde cualquier objeto mediante este bloque hay un bloque aquí yo le doy aquí envió el mensaje a apagar encender luz lo envió lo enviado desde este objeto pero en este objeto tiene puesto que cuando reciba el mensaje este pues que haga algo vale cuando reciba el mensaje encender luz hace esto cambia el disfraz cuando reciba el mensaje apagar luz cambia el disfraz vamos a poner aquí otro mensaje apagar luz le pico estas cosas que estoy haciendo es para no tener que darle a la verde yo puedo darle directamente a los bloques de scratch es más ágil el desarrollo es más rapidito no tengo que estar continuamente con la bandera sino que le voy dando a los botoncitos y yo ya voy viendo cómo funcionan yo qué sé vamos a mandar otro mensaje vamos a mandar por ejemplo el mensaje encender ventilador pues qué es lo que pasa le doy pimba lo que está haciendo es ejecutarse este código que es un bucle infinito que vaya pasando al siguiente disfraz por siempre ve pasando el siguiente disfraz como hay cuatro disfraz da la sensación de que el ventilador se está moviendo esto no tiene nada que ver con el problema que debemos resolver esto es simplemente para poner el contexto de simular una lámpara y de simular un ventilador entonces es importante eso sí que tengamos claro que el envío de mensaje se puede hacer desde cualquier objeto no tiene por qué ser del objeto sobre el que queremos actuar eso es lo que se llama un mensaje de broadcasting se envía el mensaje y ya el objeto que tenga al recibir este mensaje pues ya cada uno actuará en consecuencia vale muy bien pues vamos a apagar la luz que me molesta este apagar el ventilador y este apagar la luz vale, lo quito entonces ahora vamos a empezar a programar el asistente vamos a hacer un bloque muy sencillito empezamos poniéndole el bloque este de la banderita para cuando empiece el programa y como la educación es algo muy importante pues que salude y ahora el bloque que vamos a utilizar para preguntar al usuario va a ser un bloque que se llama pues preguntar al usuario vale un bloque que está en sensores y que hace una pregunta y aquí podemos poner que deseas entonces este bloque lo que hace es que al ejecutarse pues va a preguntarnos algo, nosotros responderemos por el teclado y lo que nosotros respondamos se coloca en una variable que se llama respuesta vale, vamos a ejecutarlo para que lo veáis dice hola le pongo lo que sea que desea nada vale y eso que acabo de teclar está aquí fijaos lo veis esto es una cosa muy útil cuando se programa con scratch que podemos colocar bloques por ahí dispersos y simplemente picando en ellos vemos lo que hace es útil para el desarrollo no para la aplicación final obviamente porque esto es la aplicación final no se ejecuta puesto que no está enganchado con ningún sitio pero para desarrollar viene muy bien para probar cosas vale, pues ahora lo que vamos a hacer simplemente es que diga la respuesta pues que nos diga, esto es lo que se llama un eco entonces ejecutamos esto hola, que desea nada y claro, me gustaría simplemente fijar lo que hace dice lo que nosotros, es un loro dice lo que nosotros digamos ahora mismo en el programa, no hace más y claro se ejecuta el programa y aquí se acaba nos gustaría que pudiésemos hacerle más preguntas entonces lo que voy a hacer es meter en un bucle infinito que seguramente lo habeis visto también pues toda esta parte de aquí de manera que ya ahora pues tenemos hola, que desea nada y se vuelve a repetir que nada vale, eso es lo que hemos conseguido hasta ahora hemos conseguido dotar al asistente virtual de la inteligencia de un loro esto es una inteligencia artificiala de un loro una cosa que tiene la programación es que el mismo problema puede resolver de muchas formas y si cada uno tiramos por nuestra vía después veremos que todos los problemas todas las soluciones son distintas todas las soluciones además que funcionan igual son distintas cuando uno empieza con la programación así en un nivel más naive pues en una misma tirada pone todos los bloques y eso va a funcionar pero tiene un problema y es que cuando queremos hacer modificaciones pues resulta que tenemos que quitar muchos bloques nos confundimos termina siendo todo como muy oscuro termina siendo todo como demasiado denso entonces una buena práctica en programación y la vamos a utilizar en este caso es vamos a pensar cuáles son los problemas que queremos resolver porque tenemos un problema para afinar ese problema se divide en varios lo que se llama el divide vencerá y eso que se utiliza muchísimo el pensamiento computacional de hecho algo que realmente tenemos que trabajar una habilidad fundamental en esto es conseguir analizar el problema de forma que lo separemos en varios sus problemas que dependen uno de los otros o se relacionan de alguna forma pero son distintos entonces aquí yo voy a utilizar esa estrategia esa estrategia es más abstracta que la de seguir palante y ya está pero es más correcta también entonces yo creo que vamos a hacer esfuerzo por tirar por la vía de la atracción ¿Qué queremos haceres? son dos operaciones realmente la que queremos resolver por un lado bueno, son tres, por un lado preguntar que ese ya lo hemos resuelto, ya sabemos preguntar punto, resuelta pero algo que queremos es que si yo te cleo aquí ese texto queremos interpretarlo como una orden como qué orden tenemos cuatro órdenes ¿acordáis? que se corresponden con cuatro mensajes encender luz bueno aquí le tengo lo puesto como lamparaón perdón, perdón, encender luz en efecto, apagar luz ¿vale? encender ventilador, apagar ventilador las cuatro órdenes o mensajes que cuando lo enviemos pues van a hacer que funcione nuestro chipme pues nosotros, primer problema que tenemos es que un texto por ejemplo, enciéndelo chavalote que eso lo transforme en encender luz o que yo lo digo, o fuga acá lo tengo pues que eso lo transforme en encender ventilador me estoy muriendo de frío eso lo transforme en apagar ventilador esto hay mucha luz aquí me estoy egobiando pues eso lo transforme en apagar la luz ¿vale? o sea, nuestro objetivo por un lado es textos pasarlos a órdenes eso es un problema y el segundo problema que tenemos es esa orden que se ejecute realmente sobre cada uno de los dispositivos entonces como son dos sus problemas pues yo los voy a sacar del flujo principal y voy a construir unos bloques dedicado exclusivamente a resolver esos problemas ¿vale? y vamos a crear aquí un bloque primer bloque se va a llamar, interpreta el texto o texto como una orden ¿vale? ese bloque necesita que tener una entrada sobre la que sobre la que actuar ¿quién va a ser la entrada? ¿alguien sabría decirme quién va a ser la entrada? la pregunta, no la respuesta la respuesta que demos nosotros por tanto necesitamos un texto y ahí tenemos el primer bloque lo ponemos por aquí y ahora necesito otro bloque que sirva pero no me metes lo también todo yo aquí podría meter todo el código de las dos cosas pero voy a seguir atrayendo un poquito vamos a hacer que el texto que el bloque o el responsable de incendir y apagar sea otro bloque distinto esto en programación se llama separación de responsabilidades creo otro bloque que se llame ejecutar y eso también necesita una entrada que orden ejecuto y ahí tenemos el segundo bloque ¿vale? y entonces yo ahora voy a utilizar esos bloques pues directamente en el flujo principal primero interpretaré el texto como una orden ¿qué texto tengo que poner aquí? a ver quién me lo dice ¿qué texto tengo que poner aquí? respuesta efectivamente que la respuesta que ya doy la interprete como una orden y una vez que la ejecuta o sea que la interpretado como una orden pues ejecutala y aquí un poquito más complicado ¿qué orden tiene que ejecutar? este bloque de aquí tiene una función muy clara y es que el texto que yo le mete aquí lo tiene que transformar en una de estas cuatro frases apagar luz encender ventilador apagarte el ventilador esa es la responsabilidad de este bloque ¿qué puedo hacer yo para que este bloque convierta esto a una de esas cuatro frases? pues puedo utilizar el concepto de variable me puedo crear una variable que le voy a llamar orden ¿cómo le puedo llamar esa variable? orden por ejemplo porque es la realmente lo que queremos es fijar orden puede ser un buen nombre bien pues creo esa variable que fijaos que me aparece aquí la puedo quitar si quiero picando aquí pero vamos a dejarla de esa manera siempre vamos a tener el valor que toma la variable seguro que cuando había estado programando el videojuego el otro día habría utilizado alguna variable para las vidas lo que sea ¿verdad? y ayer incluso con Apepe Inventor también pues vale este bloque es el encargado de definir cuánto va a valer o sea que valor va a tener esa variable orden pues por ejemplo una primera aproximación que podemos hacer es dar a la variable orden para que siga siendo un loro ¿qué ocurre lo que tendríamos que poner aquí? para que esto sea un loro la respuesta directamente lo que meta por aquí vale no hemos resuelto el problema y luego por otro lado vamos a definir también este bloque este bloque lo único que tiene que hacer es enviar un mensaje y el mensaje va a ser precisamente la orden que yo pongo ahí eso es lo que va a hacer y entonces fijaos solamente con eso vamos a repasar un poquito el programa para que no nos perdamos le damos la banderita, saluda entramos en un bucle infinito el Higa pregunta ¿qué quiere? el usuario responde una vez que responde se ejecuta este código este bloque y lo que hace es que la respuesta que hemos dado qué es lo que hace con ella simplemente la asigna porque aquí vamos a tener respuesta la va a asignar a la variable orden y después vamos a ejecutar la orden ¿qué orden tengo que ejecutar? ¿quién me lo dice? la variable orden efectivamente me voy aquí a variables repasamos aquí pregunta respondemos la respuesta, la damos como entrada de este bloque el bloque va a definir una variable orden va a dar el valor a una variable que se llama orden y esa variable orden la vamos a utilizar como entrada de este bloque que es el encargado de ejecutar esa orden y el bloque lo que hace únicamente es enviar el mensaje correspondiente entonces si ponemos eso en funcionamiento vamos a ver qué pasa ¿qué quiere? nada pues fijaos que orden ha pillado el valor nada ha pasado algo si ha pasado algo que nos hemos visto que se ha mandado un mensaje y el mensaje era nada pero no había ningún receptor de ese mensaje no había ningún al recibir el mensaje nada haz algo con lo cual como nadie ha recibido ese mensaje que se ha enviado pues no pasa nada puedo poner aquí lo que me dé la gana vale ahora bien si yo pongo encender luz vaya se encendió ¿por qué? porque resulta que este bloque lo único que está haciendo es el loro, un necro es decir da la orden el valor que yo pongo aquí pero es que lo que yo he puesto coincide con el mensaje que activa ese objeto coincide con este mensaje encender luz entonces como lo he enviado como si pongo ahora encender encender ventilador ¿está bien escrito? vale pues se pone en marcha el ventilador ¿por qué? porque porque coincide si yo ahora le digo en vez de encender apagar ventilador apaga el ventilador ¿creeis que se va a apagar o no? no se va a apagar porque la orden que se está dando que es la misma que el texto que yo estoy poniendo aquí no coincide con ninguna de los mensajes que tenemos programados entonces dice apagar ventilador porque está aquí pero no se apaga para que se apague realmente que tendría que poner apagar exactamente apagar ventilador y ya voy a apagar porque me molesta apagar luz ya hemos resuelto un poquito lo que pasa que ahora lo suyo sería que en vez de dar instrucciones en plan indio pues que realmente podamos poner encender ventilador apagar ventilador por favor encender ventilador encender ventilador ¿qué calo tengo? vale ahí vamos ahora a resolver eso este bloque de aquí ya no lo vamos a tocar más ese es el programa principal eso es lo que queremos está descrito a muy alto nivel y se acabó lo que si tendremos que hacer es que este bloque tendremos que mejorarlo y este prácticamente no vamos a tener que hacer tampoco nada porque este es muy simple es ejecuta orden envía mensajes pero aquí está la chicha, aquí está la madre el cordero aquí está el trabajo que nos queda por hacer ese bloque tenemos que mejorarlo porque vamos a ponerle un nombrecito nuevo vamos a llamar un modelo ¿vale? ¿por qué un modelo? bueno un modelo en ciencia un modelo en general la idea que tenemos de modelo es algo que sirve para describir la realidad o algo que me permite descubrir la esencia de lo que estoy estudiando un modelo es pues en este caso una función que me va a interpretar textos a eso lo voy a llamar entonces modelo y le vivellama modelo no porque si, sino porque es que es un concepto de machine learning que vamos a ver después entonces a esto, a este bloque podemos llamarle modelo pues vamos a mejorar el modelo vamos a hacer un modelo mas potente que este modelo ahora podemos llamarle para que salen reglas ¿cómo podemos hacer? y además me olvido hasta el programa principal no lo llevo para acá para arriba porque el programa principal ya va a ser siempre el mismo, no lo vamos a cambiar mas ¿qué podemos hacer para que en lugar de avanzar las órdenes tal cual pues interprete aquí lo que podemos hacer por ejemplo es utilizar condiciones de este tipo si pasa una cosa tal cosa si pasa otra cosa no sé qué voy a poner cuatro, ¿alguien se le ocurre por qué voy a poner cuatro condiciones? hay cuatro órdenes vale, entonces voy a empezar poniendo un condicional por cada orden vale bien, en este condicional pues lo que voy a hacer recordar en última instancia hagamos lo que hagamos aquí este bloque su responsabilidad cuál es este bloque puede ser tan sencillo como antes o puede ser un bloque que ocupe 40 páginas me diga pero al final qué es lo que tiene que hacer asignar un valor a la variable orden punto en la medida en que asigne ese valor mejor o peor el modelo será mejor o peor pero esa es la responsabilidad asignar un valor a la variable orden ¿por qué? porque cuando la asigne vamos a hacer nos vamos aquí a variable donde estamos variable en un caso tendrá que darle a la variable orden el valor encender luz que es una de las órdenes válidas en otro caso le tendrá que dar a la variable apagar luz en otro caso encender ventilador es importante que no me equivoque aquí en ninguna letra como me equivoque no funciona esto es importante se consciente de ello apagar ventilador y bueno vamos a dejar la primera es dar a orden el valor texto porque si no entra ninguno de estos sí por lo menos que tenga algo que la orden sea el loro que definamos un valor para esa variable o sea que el bloque su responsabilidad la cumpla mejor o peor pero que la cumpla que la orden no se quede ahí sin definir entonces para eso comenzamos dando aquí el valor que después la tenemos que cambiar o la cambiamos pero que no se los quede sin definir que eso lo que tiene que hacer de forma infalible y ahora lo que nos queda es poner las condiciones por ejemplo ponemos la primera condición que sería si donde están las condiciones aquí no veo bien aquí bueno aquí ponemos una aquí ponemos otra aquí ponemos otra y aquí ponemos otra y entonces aquí tendremos que decir pues si el texto es igual por ejemplo enciende la luz que ya es una orden en lenguaje natural pues entonces enciende la luz si el texto es igual apaga la luz pues apaga la luz si el texto es igual enciende el ventilador importante sí que he puesto enciende y si el texto es igual apaga el ventilador pues lo abagamos y entonces aquí tenemos un primer modelo un modelo basado en reglas que va a permitir interpretar cuatro órdenes cuatro textos en lenguaje natural como órdenes ¿no? le damos aquí a play pues esto no apaga la luz y bueno ya por lo menos no la hablamos como un indio bien pues esto es lo que se llama un modelo top down un modelo basado en reglas qué problema tenemos con esto queremos mejorar esto de aquí pues si queremos mejorar esto de aquí una cosa que podemos hacer es poner más sí así que por ejemplo queremos que entienda la orden enciende la luz por favor o encender la luz o qué calor tengo por ejemplo pancen del ventilador pues pondríamos un nuevo condicional que sea sí enciendo el ventilador perdón si el texto es igual a qué calor tengo entonces enciende el ventilador y así podemos ir añadiendo lo que pasa es claro aquí es un problema que estaréis viendo hay muchísima forma de decir lo mismo esto puede crecer pues muchísimo también podemos hacer otra cosa y en lugar de que crezca hacia abajo también podemos hacer que estas condiciones sean un poco más complejas por ejemplo si el texto es igual a apagar ventilador o el texto es igual a qué calor, a qué frío tengo o el texto es igual apaga el ventilador por favor o el texto es igual o el texto es igual crecemos así hacia acá el programa nos va creciendo a lo ancho o a lo alto pero inevitablemente nos va creciendo además nos va creciendo hasta una cantidad excesiva si conseguísimos mentalmente meter todas las posibles expresiones esto sería una inteligencia perfecta ¿no? si imaginad que aquí podemos poner todas las expresiones que se nos ocurran para estas cosas pues ya habremos resuelto nuestro problema simplemente con reglas puestas desde arriba hasta abajo de una forma deductiva tenemos resuelto el problema es factible pues obviamente no es factible vale entonces tenemos que resolverlo de otra forma bien hay una forma de mejorar esto y que me permitiría que con solo cuatro condiciones pudiese meter también más textos y no tendría por qué crecer esto tanto voy a contar cómo sería pero no lo voy a hacer porque veo que estamos de tiempo regular la forma sería en lugar de utilizar una variable utilizar listas, una lista es un conjunto de elementos entonces haríamos cuatro listas encender luz, apagar luz y en esas listas meteríamos todas las frases que queramos y en los condicionales lo que haríamos es simplemente comprobar si el texto está en la lista y si el texto está en la lista encender luz, entonces encender la luz si está en la lista, apagar luz hemos hecho lo que se llama una refactorización es decir, hemos hecho un código más potente, más organizado que ya no crece no crece el código, los datos sí porque la lista más crece también muchísimo o sea, aquí el crecimiento es impepinable hemos dado con un límite al modelo de reglas desde arriba hasta abajo, hemos dado un límite vale, esa no lo voy a mostrar vale, vamos a la conclusión de la que llegamos ahora mismo es que aquí tenemos un modelo potente pero no realista y ahora cuando entramos entonces en otro enfoque distinto del problema que es el enfoque button up, es decir vamos a descubrir la regla a partir de datos conocidos y en lo que se llama aprendizaje automático y aquí entramos en inteligencia artificial vamos a llamarle moderna en la inteligencia artificial que está funcionando lo que hemos hablado antes y esto, por ejemplo, sí esto sí quedó tenés que tener bien presente esta idea ¿cómo funciona el aprendizaje automático? ¿cuáles son los conceptos básicos? el proceso básico de aprendizaje automático necesitamos muchos datos de entrenamiento datos clasificados, bien clasificados es decir, datos que sepamos a qué corse corresponden si son imágenes pues, esto es una imagen de tal cosa si es un texto, este texto quiere decir enciende la luz a eso se le llaman textos datos etiquetados son datos conocidos a priori son los datos de entrenamiento son los datos que valen dinero esto aquí, las empresas que están haciendo machine learning es donde tienen la mayor inversión y es lo más difícil de obtener esos datos se presentan como entrada o se alimentan a un aprendizaje perdón, a un algoritmo que se llama el algoritmo de aprendizaje automático el machine learning algoritmo de machine learning y ese algoritmo su responsabilidad su función es crear un modelo de clasificación, es decir ese algoritmo lo que nos va a dar es por decirlo con el ejemplo que estamos desarrollando este bloque el algoritmo de machine learning no es lo que vamos a utilizar el algoritmo de machine learning es un proceso que utilizando los datos de entrenamiento va a generar un nuevo algoritmo vamos a llamarle modelo un nuevo modelo y ese modelo es capaz de generalizar a ese modelo le podemos presentar cosas que no se han utilizado como por ejemplo en el ejemplo de la cara y ese modelo es lo que vamos a colocar aquí entonces la cosa es cómo tenemos este modelo cómo ponemos a funcionar un algoritmo de machine learning cómo lo desarrollamos bueno, la respuesta es que normalmente a no sé que estés dedicado realmente integramente a este tipo de historias el desarrollador no implementa el algoritmo hay herramientas que implementan estos algoritmos de machine learning y que nos van a dar modelos eso sí a esas herramientas le tenemos que dar los datos a nosotros le presentamos los datos a las herramientas la herramienta hace sus cositas y te dice mira ahí tiene un modelo utilízalo a ver qué tal entonces claro si queremos hacer esta perspectiva si queremos descubrir la regla a partir de datos conocidos pues tenemos que utilizar alguna herramienta y aquí es donde las herramientas hasta hace poco eran herramientas profesionales que no estaban al alcance por supuesto de un uso didáctico o educativo pero empiezan a aparecer herramientas de este tipo una de las primeras y más interesantes y más muy potentes es Machine Learning for Kids que es sobre lo que está el recurso de lo que trata y está desarrollada por un inglés de IBM un chaval que se llama Daylane y realmente para nosotros ha sido revolucionaria y después una herramienta que hemos empezado a desarrollar nosotros mismos basado en lo que este hombre ha hecho que tiene una diferencia mejora unas cosas pero tiene otros difíciles si queréis mañana hablamos de eso y se llama Learning ML y es la que voy a utilizar para el ejemplo mañana vosotros tendréis dos herramientas para desarrollar vuestros propios ejemplos y podréis desarrollar con cualquiera de ellas vamos adelante que vamos a hacer ahora bueno, lo primero es que una vez que llegue aquí guardar en tu ordenador lo que llevamos porque ahora se me va a perder y tiene que recargarlo de nuevo entonces vamos a la herramienta todas estas herramientas siempre van a funcionar en base de este esquema de aquí siempre primera fase, metemos datos de entrenamiento con lo cual tenemos que recolectar datos de entrenamiento segunda fase esos datos a partir de esos datos el algoritmo de aprendizaje va a obtener un modelo y tercera fase ese modelo lo utilizamos en nuestra aplicación así que cualquier tipo de herramienta de este tipo pues veréis tiene que permitir introducir datos clasificados tiene que permitir entrenar a un modelo, generar un modelo a partir de esos datos y tiene que permitir exportar ese modelo a algún lenguaje de programación en este caso, Scratch vale pues esta herramienta por ejemplo permite que paso con el ratón aquí añadir etiquetas añadir etiquetas sería aquí van a pertenecer los textos encender luz aquí meteríamos las etiquetas esto mejor que no lo hagáis ahora mismo porque queda poco tiempo y creo que lo mejor es aquí meteríamos pues la siguiente, apagar luz y una vez que tenemos las etiquetas aquí vamos a añadir textos textos que tengan que ver con encender luz bien, yo paré un poquito más rápido directamente lo que voy a hacer es cargarlos con esta herramienta, cargar datos que yo ya tengo ahí unos series de ejemplos este se me ha colado perdona, sabes pero esto esto tiene que ver no voy a contar la historia, mañana la cuento de igual tiene que ver con encender la luz claro perdona, lo siento y lo curioso es que está viéndolo durante todos estos días atrás lo tengo que quitar, lo tengo que quitar bueno ahí tenemos entonces cuatro etiquetas, o sea cuatro clases de textos encender la luz que oscuridad, alala la luz, apaga la lámpara no se que desconecta la luz, unos cuantos que se enfocó, enciende el ventilador en realidad cuanto más mejor por lo menos 10, vale entonces cuando ya tenemos esto introducido lo que tenemos que darle a entrenar el ritmo, que ha sido rapidísimo ha cogido todo esto y ha creado un modelo y ahora ese modelo lo voy a abrir en Scratch aquí tengo Scratch que se empieza a abrir y aquí abajo veréis que tengo unos nuevos bloques por eso hemos necesitado otra versión de Scratch que hemos podido tocar nosotros porque necesitábamos meter estos bloques nuevos eso bloque y vamos a clasificar un texto darle una confianza para ver si este texto está bien clasificado lo que él cree que está bien clasificado incluso añadir nuevos textos pero esa no lo vamos a utilizar y entonces con esto abierto con este modelo abierto voy a volver a cargar de mi ordenador lo que antes era asistente dos, este de aquí esto es lo que llevábamos hecho hasta ahora y que lo que voy a hacer bueno, pues esto se trataba de mejorar el modelo incluso no solamente lo vamos a mejorar sino que vamos a cambiar de concepto pues vamos a quitar todas las reglas y en su lugar vamos a colocar esto aquí dar a orden el valor que el modelo de machine learning me clasifique para quien debería poner aquí quien me lo dice que debería poner yo aquí decirlo fuerte el texto que recibe el texto que recibe lo meto en mi modelo lo clasifica y esto me lo clasifica en uno de los cuatro órdenes encender luz, apagar luz apagar ventilador y esas son las órdenes que después se envía y eso es la responsabilidad que teníamos de este blog que recordáis la responsabilidad era darle a la orden algo y si se puede ser algo que entienda el programa mejor mejor que la intención bien pues le damos el texto y además voy a aprovechar también y voy a crear otra variable operadores variable que le voy a llamar confianza y como el modelo también me da una confianza para darle a esa variable confianza el valor que me da el modelo confianza y de nuevo quien tengo que poner aquí texto de nuevo y bueno ya está hecho nosotros lo necesitamos un nuevo modelo el algoritmo de machine learning no lo ha dado nosotros lo colocamos ahí y ya tenemos el programa hecho y ahora lo bueno que tenemos es que el programa pues es capaz de hacer más cositas vamos a ver qué es capaz de hacer hola qué tal Quillo qué acá lo tengo enciende la luz que no veo nada bueno una de las cosas que está haciendo esto es que está mezclando tanto enciende la luz como no veo están en el dato de entrenamiento entonces está reforzando como lo que tiene que realmente decir y obviamente si le digo dale a la lamparita a ver qué es lo que hace bueno podéis encenderlo ventilado porque mirad la confianza vale él clasifica a otras cosas que acierte el resultado del modelo es tan bueno como los datos que le metamos y esa es otra de las grandes ideas que tenemos que tener en cuenta qué podemos hacer ahora si queremos que esto sea un poquito más preciso pero lo que podemos hacer es que como tenemos una confianza pues nos vamos a este bloque y en vez de enviar a orden porque sí pues podemos decirle vamos a ver si la confianza es mayor no? era una variable ¿dónde está la variable? variable confianza si la confianza es mayor a 0,60 vamos a ponerle por ejemplo vale esta es de 0 a 1 la confianza y si no pues que diga exactamente que diga tío que no me damos el ventero a ver que estoy apariencia decir entonces ahora pues va a funcionar exactamente igual que ahora apaga la luz por favor vale y si ahora le decimos enciende la lamparita enciende la lamparita vale pues bueno ya estaría bien que lo entendiese pero por qué no lo entiendes porque no hay nada que se parezca la lamparita en las ordenes ¿que queremos mejorar esto? pues decimos bueno que pasa que no lo de la lamparita no lo entiendes voy a decirle simplemente componer aquí la lamparita lamparita he puesto la lamparita bien lamparí joder perdón la lamparita simplemente compone eso en encender luz que estaría mal porque había que ponerle algo que indique enciende porque si no lamparita pero bueno voy a poner eso simplemente eso sí una vez que tenga datos hay que volver a entrenar el modelo nos venimos aquí y le digo enciende la lamparita y ya entiende de hecho ha mezclado la lamparita con enciende que está muy mal el dato que he puesto ese dato no debe ser así debería haber sido enciende la lamparita algo no lamparita sin más vale ya lo recarga en el modelo en que le das entrenas se recarga automáticamente puede ser vamos a verlo no se asciende efectivamente por eso es un mal dato por eso digo al final que tenemos como conclusión de todo esto que lo importante no va a ver el algoritmo de aprendizaje importante pero es que no puede hacer nada si los datos son malos vale bueno esto mañana lo vais a trabajar vosotros mismos con esta herramienta o con la de Daylane que es muchísimo más potente porque esta herramienta implementa un determinado algoritmo de machine learning de una manera muy naive un algoritmo de machine learning sencillito y el de Daylane, machine learning for kids es una de esas Watson que es uno de los servicios de inteligencia artificial en machine learning más potente que hay ahora mismo en el mundo o sea que es DBM pero de realmente a la hora de mostrar lo que queremos mostrar no necesitamos grandes maquinones para clasificar 20 textos o sea, datos que estén es entre 20, 30 textos por ahí y lo que nosotros queremos es que el estudiante salga con la idea de que va esto de la inteligencia artificial de que va esto en machine learning y aquí se se intuye bueno, llega a este punto que queda poco tiempo vamos a darle una vuelta de tuerca para el que se haya quedado un poco así como diciendo, si esto está muy bien pero tú la daba entrenada y ya está ahí que ha pasado ahí has metido los datos, las da entrenada maravillas de las maravillas, tenemos un modelo y parece magia, no es magia vamos a darle una vuelta de tuerca aquí es donde está realmente una serie de conceptos que son bastante complicados en principio pero vamos a intentar adquirir cierta intuición vamos a hacer una vamos a pensar vamos a hacer una serie de metáforas en la que el modelo, lo que hemos estado llamando va a ser una máquina una máquina que tiene una característica es que ya funciona pero tiene un montón de botones y dependiendo de como esos botones lo estemos ajustando, esos botones se llaman solo parámetros, pues la máquina funciona de una forma u otra la máquina le metes una cosa saca otra, cambia los botones le metes una cosa, puede que saca otra distinta entonces el modelo ya lo tenemos es un modelo no entrenado y de ahí parten todos los algoritmos de machine learning de proponer un modelo no entrenado y a partir de unos datos que tenemos etiquetado un algoritmo de machine learning que no lo vamos a imaginar como alguien cogniciente, alguien que tiene acceso a los datos al modelo edema, pues un algoritmo de machine learning va a proponer para poder clasificar datos pues va a darnos el modelo repasamos, perdona que me leí un poco objetivo, generan un modelo que tenemos datos conocidos y etiquetados usando un algoritmo de aprendizaje automático para que? para poder clasificar datos que no conocemos datos que no se le han presentado en el entrenamiento bien, ¿no? esas son todas las partes del juego los datos de entrenamiento el algoritmo de machine learning las etiquetas que clasifican a nuestras cosas y el modelo que es lo que queremos obtener para meter en nuestros programas entonces cuando le hemos dado el botón a entrenar lo que ha pasado es lo siguiente esto ya lo teníamos vale? bueno, perdona para que nos hagamos un poco la idea la programadora está ahí haciendo sus cositas de lo que la programadora sería yo hace un momento y esto el ordenador que tengo aquí es lo que está pasando por dentro bien primero lo que hace este tipo de programas o este tipo de aplicaciones es una representación de los datos que a veces es el propio programa que lo hace y a veces somos nosotros que tenemos que hacer la representación por ejemplo en el caso de imágenes una forma posible de representar es ver características, atributos y esos atributos nos van a definir a cada uno de los ejemplos y cuando tenemos datos clasificados, datos de entrenamiento sabemos a qué clases pertenecen entonces, primera parte esto lo hace lo que yo he hecho ahora mismo aquí serían los textos que es la representación por dentro coge los textos y lo convierte en un vector no voy a entrar ahí simplemente esto por relacionarlo con el círculo que vimos al principio sobre una de las partes importante de la inteligencia de las grandes ideas que era la representación de datos y aquí viene el importante bien, empieza le da el botón de entrenamiento que es lo que está ocurriendo en ese momento que ha salido Charlie Chaplin por muy poco tiempo ¿qué estaba ocurriendo por ahí? pues se le ha presentado un dato por ejemplo un PES y el modelo ya funciona mal, pero funciona y dice que es una rana el algoritmo dice no, no es una rana es un PES, está etiquetado entonces el algoritmo dice esto hay que cambiarlo empieza a cambiar parámetro en base a una idea dependiendo del algoritmo esos parámetros se fijan pero ahí no voy a entrar entonces hay un nuevo valor para esos botoncitos y bien bueno, ya tengo un modelo mejor ya por lo menos el PES lo clasifica como PES le mete el siguiente ejemplo una rana el otro lo clasifica muy bien pero la rana no la está clasificando bien de nuevo no otra vez a trabajar y otra vez se tiene que poner intentando no cargarse lo que ha hecho y esto lo hace 1, 2, 3, 4, 5, 6, millones de veces muchísimas veces hasta que el error va bajando hasta que ya empieza a clasificar bien todos los datos que tenemos incluso unos cuantos de datos que estamos utilizando como test no voy a entrar demasiado en eso la cuestión es que el modelo va mejorando entonces una vez que el modelo mejora vale, aquí a mejor también pues ya tenemos nuestro algoritmo ya tenemos nuestro modelo esta máquina que representa nuestro modelo ya está bien ajustada ya tiene todos los parámetros bien ajustados le presento un PES que no estaba en los datos originales que eran estos los datos que teníamos ese PES no estaba dentro perdona por no debería estar lo siento eso si un fallo a la hora de poner imaginado que si no estaba este es un PES nuevo y ya lo clasifica bien a pesar de que ya está entrenado y le pones un avión y te la interpreta como un pájaro o le metes una rana con ala que no existe pero se puede dibujar y también te interpreta mal el genio ya no está ahí el modelo funciona solo ya el genio hizo los ajustes sacó el modelo y el modelo ya lo utilizamos nosotros como salió efectivamente esta es ya la parte en la que hemos pasado el modelo a scratch vale ya no hay algoritmo de machine learning ya se acabó el algoritmo de machine learning y ya podemos hacer nuestra aplicación que queremos obtener una máquina mejor pues metemos más datos, volvemos a entrenar el genio otra vez y al final pues tendremos un modelo mejorado y esa es la esencia de todo esto un ejemplo concreto da tiempo vamos a hacerlo rapidito que con esto ya terminamos dentro de los algoritmos de machine learning hay una gran cantidad de algoritmos distintos uno de los que está teniendo más éxito seguro que la habré escuchado son las redes neuronales artificiales esa redes pues consiste en un montón de nodos que se comunican unos con otros y según los pesos se llaman pesos ¿alguien se le ocurre que serían estas cosas? si si pero con respecto al dibujo esos pesos es lo que el algoritmo de machine learning va a ajustar para que esto funcione esos pesos son los botoncitos vale que el algoritmo de machine learning está toqueteando para que funcione bien el modelo porque el modelo ya lo damos esto ya funciona esto ya directamente, lo ponen a funcionar y funciona mal pero funciona lo que hace es ir cambiando estos modelos perdón estos pesos que son mogollón, yo he puesto aquí 5 pero fíjense por cada interconexión que hay hay un peso entonces lo que hace es ir ajustando eso para que al final haga algo así desde una salida que te digas el 85% de la probabilidad que sea un P el 10% de la rana y el 5% de un pájaro y entonces yo digo ah bueno entonces un P vale y eso vamos a ver, hay una aplicación en la que se puede vislumbrar cómo los algoritmos estos van funcionando la aplicación es esta de aquí y bueno, esto representa un arreglo neuronal vale vamos a suponer estos son, estos son la entrada es decir aquí pondríamos un perro por ejemplo y un pez o sea perros perdón y peces que están caracterizados por dos atributos únicamente esto no es así la realidad es que tenemos mucho más atributos pero esto lo bueno que tiene es que como tiene dos atributos nos permite utilizar un plano para hacer la representación entonces, cada dato de entrenamiento tendría dos atributos lo pasamos por una sola neurona para ver cómo funciona, esta neurona es lo que se llama un perceptron y cada una de estas se llama perceptron por cuestiones históricas y cada una de estas conexiones tienen así nada un peso y el algoritmo ahora mismo está funcionando mal vale porque está a ver, vamos a ponerlo esto no me gusta así bueno está metiendo a los azules que podemos pensar que son los perros como si fuese los naranjas que podemos pensar que son los peces y a los peces lo está metiendo en los azules o sea que no está funcionando bien, pero funciona tú me metes aquí tus datos y está funcionando está clasificando de esta manera y ahora con datos conocidos empezaría el programa el algoritmo de machine learning, el genio empezaría a funcionar y rápidamente funciona funciona muy rápidamente además porque son fácilmente clasificables una recta lo clasifica en el plano y eso es lo que hace un perceptron es capaz de separar a dos partes entre sí no es capaz de mucho más por ejemplo si en lugar de perros y peces tuviesimos cosas más parecidas como por ejemplo perros y gatos podemos hacer una idea de que estos son perros y estos son gatos y ya es más difícil de separar vamos a ver si es capaz de eso de separarlo pues veis que por más que tengamos el algoritmo funcionando hay muchos que están mal clasificados estos están mal clasificados y no se van a poder clasificar bien el perceptron, una neurona solo ese modelo no tiene suficiente potencia expresiva para hacer esa separación esa clasificación pero lo interesante de esto es que si metemos más neuronas y metemos más capas ya como que ya es capaz de hacer cosas más complejas incluso si metemos ruido en los datos porque por ejemplo hay a lo que se llaman outliers son datos mal pillados datos extraños mal outliers no se traducen bien, bueno datos que habría que quitarlos de nuestro dataset pero se meten por lo que sea incluso así el algoritmo sigue funcionando son un algoritmo robusto en ese sentido claro son muy robustos te dan una solución lo que pasa es que no te garantizan ahí está, llegó vale, esto es una demostración para que intuyamos lo que antes hemos visto con el genio sobre un tipo de algoritmo de machine learning particular que es la red artificial neuronal hay muchos más, hay algoritmo que se llaman los vecinos más cercanos los árboles de decisión ahora mismo no me acuerdo de nada pero hay muchos más vale, entonces bueno, una cosa que para terminar me gustaría mostrar es un caso real de red neuronal, no sé si conocéis Alfago es una inteligencia artificial desarrollada por una empresa que se llama deep learning creo que se llama y ha ganado al campeón de co, que esto es un juego que por lo visto tiene más combinaciones que las edrez y ha ganado de más aprendiendo de partidas uno de los sistemas de machine learning que quiere decir que el algoritmo no consiste en una red neuronal, hay una red neuronal que se dedica a una determinada historia que ni siquiera se ha caer a los libros, ya se ha olvidado es que tiene como 4 o 5 sus sistemas más bueno, pues uno de esos tiene una red, consiste en una red neuronal con 12 capas, la primera tiene 25.300 neuronas con 634.800 pesos las siguientes tienen todas estas neuronas, 200 y 5.000 con todos estos pesos que haciendo el total, y si no me equivoco con la calculadora son 2.258.000 neuronas y 2 millones, casi 3 millones de pesos y eso para hacerlo no vale el navegado web aquí es donde entra la potencia de máquinas que son muy potentes muy caras y esta es la clave realmente del éxito artificial que es más que eso, deberíamos llevarle a Machine Learning que tienen unas máquinas bestiales que tienen una cantidad de datos bestiales y que consiguen crear modelos que son muy impresionantes pero que no hacen más que estadísticas sobre los datos que tenemos y eso es una a mi me parece ya menos impresionante después de esto, que mola un montón que se puede hacer muchas cosas pero no es una inteligencia realmente terminó, muchas gracias y a ver si mañana pues trabajamos esto de una manera más práctica si tenías alguna pregunta