La inteligencia artificial IA, es una rama de la computación que trata de inventar algoritmos capaces de emular el funcionamiento de un cerebro biológico (humano o animal) en el reconocimiento de patrones y relaciones. Con esta capacidad, un algoritmo de IA puede tomar una decisión muy rápida respecto a unos datos de entrada que se le presentan por primera vez.
Los datos de entrada pueden estar muchos soportes distintos: Imágenes, Vídeo, Audio, texto escrito, numérico, etc.
Un algoritmo de IA tiene dos capacidades básicas que se realimentan entre si.
- El aprendizaje. Para poder llevar a cabo esta toma de decisiones con una fiabilidad razonable un algoritmo de IA ha de ser previamente "enseñado", para ello, se le expone a un conjunto suficientemente amplio y variado de datos de entrada que verifiquen todas las posible decisiones a tomar con una fiabilidad del 100%. Los datos de entrada con los que se enseña al algoritmo han de ser elegidos con mucho cuidado, ya que si los datos con los que enseñamos a nuestro algoritmo no son representativos o están sesgados, sus decisiones también lo estarán.
- La generalización. Un algoritmo de IA es capaz de tomar decisiones muy rápidas y razonablemente fiables al ser expuesto a datos nuevos, que nunca se le han enseñado. Cuando la decisión no es muy fiable, un agente entrenador externo (por ejemplo, una persona que está interaccionando con el algoritmo) corrige al algoritmo y lo reentrena con el nuevo conjunto de datos. En otras palabras, un algoritmo de IA se vuelve más fiable (mas inteligente) a medida que aprende de sus errores.
En algunos casos, el propio algoritmo puede enseñarse y entrenarse a sí mismo, como en el ejemplo del AlphaGo del vídeo de abajo. En estos casos el algoritmo aprende a un ritmo exponencial.
Al igual que las personas que quieren ampliar sus destrezas, un algoritmo de IA necesita un buen maestro que diseñe un buen conjunto de datos de partida, y un buen entrenador que supervise sus decisiones y corrija sus errores para convertirlos en enseñanzas.
En Internet hay bastantes páginas web en las que podemos probar la inteligencia artificial, algunas de ellas son juegos realmente, divertidos:
Quick Draw (enlace). Adivina lo que estás dibujando, pero además si no lo adivina esta vez puedes estar seguro de que se reentrenará a si mismo para adivinarlo la próxima vez, y de paso todos los dibujos parecidos al tuyo.
Web speech (sólo funciona con Google chrome) enlace : Habla a tu ordenador y él se transcribirá lo que le digas. También disponible en Google Docs, para escribir rápidamente documentos al dictado.
Akinator (enlace): Piensa en un personaje ficticio o real y Akinator lo adivinará a base de preguntas tipo "Quién es quién". Internamente el algoritmo tiene en árbol de decisión en el que están catalogados todos los retos a los que se ha enfrentado. Cuanto mas juegas con el, mas personajes puede clasificar y más inteligente se vuelve
The teachable machine (enlace): Nos permite crear nuestros propios modelos de reconocimiento de patrones en imágenes usando la webcam de nuestro portátil. Sin necesidad de programar.
Llegados a este punto, es momento de ponernos manos a la obra para programar nuestras propias aplicaciones de IA en Scratch, Python o AppInventor. Para ello vamos a necesitar los siguientes recursos.
- Servidor IBM Cloud (enlace)
Este servidor pone los servicios del Cloud de IBM a disposición de los usuarios registrados en el mismo. En particular el servicio de IA "Watson assistant" que es el que nosotros vamos a usar como backend a través de la interfaz de MLK. Por ello, lo primero que necesitamos para poder crear modelos de IA en MLK es crear una cuenta gratuita en IBM Cloud.
- Página web de machine learning for kids (enlace).
Aquí gestionamos nuestros proyectos (modelos). Aunque en teoría se pueden crear un máximo de 30 cuentas de alumnos, y cada alumno puede tener un máximo de 3 proyectos, en la práctica, debido a las restricciones de la cuenta gratuita de IBM Watson que estamos usando, sólo se pueden usar en total:
* 5 modelos de aprendizaje MLK de texto
* número ilimitado de modelos de aprendizaje de MLK de números, imágenes y sonido.
Por todo ello, si queremos usar modelos de texto, el profesor creará los 5 modelos y los alumnos simplemente los usarán y los entrenarán, pero no pueden crear otros nuevos.
- Pagina de scratch 3 de MLK (enlace).
Permite programar aplicaciones de IA en Scratch 3.0
Los proyectos de MLK en scratch que se hayan exportado y almacenado en un ordenador, no funcionan sobre scratch 3 normal, sólo funcionan sobre el scratch de MLK. La buena noticia es que para usar el scratch 3 de MLK no hace falta cuenta de MLK.
Lo que si que creo que se puede hacer es usar un proyecto de MLK hecho y exportado con scratch2 en la version de escitorio de scratch2 ¿¿¿???. Aunque no consigo crear ni exportar nada en scratch2.0.
La ventaja de utilizar Scratch 2.0 es que podemos instalar s4a_fm (scratch for Arduino firmata) y así controlar una placa Arduino con nuestro modelo MLK. Un post en el foro de Max explica como instalar s4a_fm en scratch 2.0 enlace
- IA con python
Podemos programar aplicaciones de IA residentes en nuestro ordenador usando Python, el programa residente se conecta a través de un objeto request con el servidor de MLK, por lo que es necesario que el ordenador anfitrión esté conectado a Internet para que las aplicaciones funcionen. Dado que también podemos controlar nuestro arduino desde el ordenador usando python y el protocolo firmata, podemos hacer un programa en python que use IA para controlar nuestro Arduino.
El tren de la IA ha comenzado su marcha imparable, tarde o temprano pasará por nuestra estación a toda velocidad y sin detenerse. Por ello es conveniente reflexionar sobre el tipo de IA que queremos construir, si es que tal cosa es posible.
Parece claro que muchos empleos del futuro estarán relacionados con ella, y quizá algunas decisiones importantes que afecten a las personas las tomarán los algoritmos de IA.
Esta conferencia TED de Nick Bostrom es bastante inquietante, el conferenciante, todo un experto en IA, está super-nervioso. Siceramente espero que sea porque se pasa el día entre ordenadores y le impresiona hablar en público.
Como dice NIck Bostrom los algoritmos de IA tienen como valor intrínseco su capacidad de encontrar soluciones que optimicen una serie de variables para problemas de una complejidad enorme. Ejemplos de variables que un algoritmo podría optimizar son: La rentabilidad de una inversión en bolsa, La salud, el consumo de energía, Los gastos de una organización, la esperanza de vida, el número de delitos en una ciudad, las coberturas de un seguro médico, los años de condena por un delito, la edad de jubilación, las emisiones de C02 ... etc.
- ¿Qué pasará cuando las decisiones de un algoritmo de IA entren en conflicto con los intereses de una persona o grupo de personas, de dos ciudades o de dos paises?
- ¿Qué pasará cuando las decisiones de dos algoritmos de IA entren en conflicto entre sí?
- ¿Habrá guerras entre algoritmos?
- ¿Habrá algoritmos de IA que intermedien en los conflictos entre algoritmos?
- ¿Habrá algoritmos abogados y jueces?
- ¿Se podrá votar por un algoritmo como presidente?
El tiempo dirá