DIGITALIA
Por Sebastián García
Es casi imposible no haber escuchado, alguna vez, el concepto de algoritmo. Su definición en un perfecto criollo no es más que un conjunto de instrucciones ordenadas, las cuales tienen elementos de entrada y elementos de salida. Un perfecto ejemplo es la receta de cocina, tenemos una lista de ingredientes, una serie de instrucciones – los que somos novatos con el arte de la cocina las seguimos al pie de la letra – y una salida, el plato.
Sin saberlo, desde niños nos están enseñando algoritmos. En la escuela hemos aprendido a sumar y dividir, nuestros padres nos enseñaron a lavarnos los dientes y a cruzar la calle.
Todos conjuntos de instrucciones, que repetimos una y otra vez para obtener un mismo resultado. Desde hace décadas, los informáticos se han especializado en convertir todo lo que han podido en algoritmos. Siendo esto posible, se alcanza el deseado objetivo de tener un conjunto de instrucciones para que las tareas puedan ser automatizadas. La diferencia con la receta de cocina es que las instrucciones no se escriben en lenguaje natural, sino es un lenguaje de programación, un lenguaje que una computadora pueda comprender. Los ingredientes y el plato, esto es, la entrada y salida del algoritmo, son simplemente datos.
Gracias a este ejercicio, se han podido automatizar tareas, a partir del conocimiento humano. A modo de ejemplo, a partir de la experiencia de frenado de un automóvil, fue posible programar un algoritmo para que la computadora del vehículo pueda activar el sistema de frenado tal como si quien presiona el freno fuera siempre un experto y experimentado conductor. Los aviones disponen, desde hace décadas, de sistemas de piloto automático. Dicho de otra forma, la experiencia de pilotos convertida en una serie de algoritmos.
Muy buena parte del funcionamiento del mundo hoy depende de los algoritmos. Decenas de millones, desarrollados por miles de personas. Algoritmos que interactúan, como cajas negras que se conectan unas con las otras, desarrolladas por personas que jamás se conocieron, conformando complejísimos sistemas que conectan miles de algoritmos. A modo de ejemplo, un celular Android tiene como mínimo 12 millones de líneas de código y un Boing 787 6.5 millones. Estas líneas de código componen miles de algoritmos que interactúan, colaboran y son constantemente mantenidos por miles de ingenieros.
Como mencionamos líneas más arriba, los algoritmos son la experiencia humana convertida en una serie clara de instrucciones, que se ejecutarán millones de veces, siempre efectuando la misma tarea. Desde hace ya medio siglo, el mundo habla – seriamente – de inteligencia artificial.
Pensemos por un momento, en la inteligencia artificial como la habilidad que tienen las computadoras en imitar la capacidad cognitiva de los seres humanos. Hace décadas que ya existen juegos de computadora, por ejemplo, ajedrez, que intentan desafiar al jugador humano ¿Cómo está hecho esto? Con algoritmos. La experiencia de uno o varios jugadores de ajedrez convertidas en un conjunto de instrucciones. El dato de entrada, la movida del jugador humano y las posiciones de las piezas en el tablero. La salida, cuál es la próxima movida del jugador artificial. Un conjunto de algoritmos está intentando imitar al jugador de ajedrez, pues claro, su comportamiento se basa en el conocimiento de éstos.
Todos los sistemas que estamos describiendo tienen una característica clara, ejecutan acciones tal como un autómata. Sigamos por un momento con el juego de ajedrez.
La computadora podría ganarle decenas o cientos de veces a un jugador humano, pero en algún momento va a perder. Aquí, en este preciso momento, la experiencia del jugador humano prevaleció. En otras palabras, el jugador humano incorporó a su experiencia el conocimiento que fue adquiriendo de las diferentes partidas jugadas contra la computadora.
Es éste un aspecto muy relevante y que juega a favor del humano ¡Él logró aprender! La computadora seguirá ejecutando sus algoritmos, exactamente de la misma monótona manera, gane o pierda, no cambiará su algoritmo. Éste, es como si fuera un conjunto de cables y circuitos soldados, no cambiarán su forma de acuerdo a los cambios en el contexto que lo rodea. La inteligencia artificial emuló la capacidad del ser humano en jugar partidas de ajedrez, pero no logró incorporar un aspecto fundamental: aprender. No fue capaz de incorporar nuevo conocimiento al que le fue transmutado en algoritmos por sus creadores.
Desde fines de los años 50 los científicos han estado trabajando en incorporar a la inteligencia artificial la capacidad de aprender, y aún hoy lo siguen haciendo bajo el auspicio de importantes fondos económicos para investigación y desarrollo. Esta subárea de la inteligencia artificial fue acuñada por Arthur Samuel en 1959 como Aprendizaje Automático.
En los últimos 60 años se han desarrollado diferentes abordajes teóricos y prácticos para que las computadoras tengan la capacidad de incorporar conocimiento y experiencia, y no es en absoluto exagerado afirmar que esta idea cambió para siempre la historia de la humanidad. La capacidad de aprender que hoy tienen las máquinas no deja de sorprender ni a los propios ingenieros que trabajan en el área. Las aplicaciones de nuestros teléfonos, solo a modo de ejemplo, aprenden de nuestro comportamiento y se adaptan a nosotros, detrás de esto se esconde la mayor industria de nuestra era, este tema lo abordaremos en profundidad en otras columnas.
Para diluir – y en lo posible hacer desaparecer – el halo de misticismo que rodea a la
Inteligencia Artificial, parece mandatorio abordar los fundamentos sobre cómo funciona la capacidad de aprendizaje de las computadoras. Como punto de abordaje, es interesante analizarlo desde la perspectiva del aprendizaje humano. John Locke ya en el siglo XVII abordó seriamente el sistema de aprendizaje humano en su Ensayo Sobre el Entendimiento Humano.
En este magnífico trabajo, dividido en cuatro libros, profundiza sobre los mecanismos a través de los cuales los humanos nos hacemos de conocimiento. En el segundo libro aborda cómo nuestra especie adquiere el conocimiento a partir de la experiencia, cosa que demuestra en una serie de enunciados. Se pregunta ¿De dónde se hace la mente con ese prodigioso cúmulo [de conocimiento]?
Respondiendo a esto contesta con una sola palabra: de la experiencia. Cuando somos niños, nuestros maestros no logran transmitirnos todo el conocimiento a partir de algoritmos. Incluso, el conocimiento que adquirimos de esta forma – por ejemplo, aprender a hacer una multiplicación – requiere de experiencia para poder incorporarlo. Buena parte del conocimiento que anexamos a nuestra mente, a decir de Lock, lo hacemos por medio de la observación. Intentemos pensar cómo un adulto podría transmitirle a un niño qué cosa es un perro por medio de instrucciones o descripciones ¿Un animal con pelo en todo el cuerpo, cuatro patas y que se alimenta de carne? En esta descripción se cuelan muchas especies, es demasiado general.
La mejor alternativa, parece ser la observación de “ejemplos”. El niño verá un perro, y luego otro y otro. De esta forma adquirirá con mayor precisión las características del animal, ejercicio que le permitirá identificarlo. Cualquier otro animal que vea, que se parezca a un perro, lo identificará como tal.
No es de extrañar que, en nuestra sociedad, la mayoría de los niños -e incluso adultos- identifiquen a un lobo como a un perro. Pues bien, es razonable, no han visto suficientes “ejemplos” de lobos como para identificarlos con precisión.
El concepto detrás del aprendizaje de las computadoras se basa en este mismo sistema de aprendizaje humano. Si una computadora tuviera la capacidad de escribir sus propios algoritmos a partir de los ejemplos que observa, esto la acercará a la capacidad de aprendizaje natural. Vamos a detenernos en este punto, este detalle ha cambiado el mundo.
Pensemos que un equipo de humanos, que ya han incorporado la capacidad de identificar perros, se toman el trabajo de clasificar miles de fotos de animales. En estas fotos no solo aparecerán perros de diferentes especies, sino también gatos, elefantes, caballos y algún otro animal exótico que no sabrá clasificar. Pero eso sí, sabrá afirmar con toda precisión de que no es un perro. Por lo tanto, la tarea de estos humanos será ver una foto en una computadora e indicar si se trata de un perro o no. Esta misma tarea la llevarán a cabo miles de veces, generando miles de “ejemplos etiquetados”.
Repasemos ahora el concepto de algoritmo. Una serie de instrucciones, ordenadas, que reciben datos de entrada y generan datos de salida. Si prestamos mucha atención, podremos ver que el equipo de humanos que está clasificando las fotos de los animales, está tratando datos de entrada, la foto, y generando el dato de salida, perro o no perro. Aquí no aparecen las instrucciones aún, es la experiencia humana quien efectúa el reconocimiento.
Ahora bien, si a partir de los datos de entrada y los datos de salida, un algoritmo de una computadora lograra escribir otro algoritmo a partir de los datos de entrada y salida, de forma que este fuera capaz de identificar nuevas fotografías de animales que nunca “vio”, estamos ante uno de los fenómenos más espectaculares de las últimas décadas de las Ciencias de la Computación: la máquina está aprendiendo.
En lugar de recibir la experiencia humana convertida en un algoritmo, recibe solo datos clasificados por humanos y a partir de esto escribe su propia secuencia de instrucciones, que le permitirá generalizar los patrones que identifica en las fotos donde aparecen perros.
Quizás, cuando ese algoritmo, escrito por la propia computadora, comience a clasificar por sí mismo fotografías de animales de las que nunca aprendió, puede llegar a equivocarse, clasificando la foto como perro, cuando quizás, sea de la de un gato o la de un muffin. Sí, leyó bien, el pequeño bizcochuelo con trocitos de chocolate.
En esta última frase incorporamos algunos conceptos fundamentales del aprendizaje de las máquinas. Cuando pensamos en un algoritmo de división, no hay más de dos opciones de salida, la computadora hace bien el cálculo o no se equivoca: 3 x 2 es igual a 6, cualquier otro resultado será considerado como erróneo. Incluso más, no solo que ese resultado será considerado erróneo, sino que descartamos todo el algoritmo, sin dudas que el programador que lo escribió cometió algún error. Sin embargo, si la computadora no logra clasificar correctamente la foto de un perro Chihuahua y sí lo hace correctamente con otros casos, podemos afirmar que puede aprender más o dicho en términos más técnicos, que debe de seguir siendo entrenado. Ser entrenado por nosotros, sí, los seres humanos. Se precisa seguir clasificando algunos cientos o miles de fotos adicionales, quizás ahora con muffins, pues el mundo real parece algo más complejo.
Más adelante, en otras columnas, analizaremos cómo esta actividad humana de clasificar imágenes para entrenar computadoras es el nuevo oficio del siglo XXI, y en algunos casos, hasta un nuevo tipo de esclavitud moderna.