Una "raza" de máquinas más inteligentes
La programación genética crea autodidactas
Los intentos de crear programas capaces de mejorarse a sí mismos datan de los años 60. Pero las técnicas de aprendizaje para máquinas, como se les llama habitualmente, han quedado en manos de los investigadores, con sólo unas cuantas aplicaciones representativas en el mundo de los negocios, como pueden ser el reconocimiento de voz y la detección del fraude en la utilización de tarjetas de crédito. Ahora, según afirman los investigadores, los algoritmos mejorados, los ordenadores más potentes y algunos trucos muy inteligentes acercarán un poco más esta técnica al público en general.
Y es que esto, conforme crece la tecnología, se hace también más necesario.
El aprendizaje para máquinas es útil para la clase de tareas que los humanos hacen fácilmente –reconocimiento de voz o imagen, por ejemplo– pero los problemas llegan cuando hay que desarrollar cuestiones explícitas en las reglas del software. En las aplicaciones de aprendizaje para máquinas, el software se ‘entrena’ en pruebas de análisis diseñadas y configuradas por humanos, se le puntúa para que sepa lo que ha hecho bien y mal, y luego se le deja suelto para resolver casos del mundo real.
En Berkeley, la Universidad de California, se experimenta con lenguajes en los que los programadores escriben código para las funciones que entienden bien, pero dejan huecos en las zonas oscuras. De esos huecos se ocupan herramientas de aprendizaje para máquinas, como las redes nerviosas artificiales.
La naturaleza intensivamente computacional del aprendizaje para máquinas ha animado a otros a inventar “redes convolucionales”, un tipo de red nerviosa artificial que permite utilizar menos recursos y, a la vez, funcionar mejor que las redes nerviosas para aplicaciones tradicionales, como en el reconocimiento de imágenes. En la mayoría de redes nerviosas, el software debe entrenarse mediante un enorme número de casos para que aprenda las múltiples variaciones –tamaño y posición de un objeto, ángulo de visión, fondo, etc.– que probablemente se vaya a encontrar.
Esta técnica, que se utiliza hoy en lectores de cheques bancarios y sistemas de vigilancia en aeropuertos, divide cada imagen de interés en pequeñas regiones –una nariz, por ejemplo- y luego las combina para crear componentes de mayor nivel. El resultado es un sistema más flexible y que requiere menos entrenamiento.
Diseño Inteligente
Mientras, la investigación también avanza en una rama del aprendizaje para máquinas denominada programación genética (GP, en sus siglas en inglés), en la que el software evoluciona en un estilo darwinista. Múltiples versiones de un programa, muchas de las cuales a menudo se generan por azar, se ponen a trabajar en un problema. La mayoría de ellas lo hacen mal, pero el proceso de evolución elige dos de las mejores y las combina para crear una generación mejor de programas. El proceso se prolonga durante centenares de generaciones sin intervención humana, y los resultados mejoran cada vez.
John Koza, pionero en GP y profesor asociado en ingeniería eléctrica en Stanford, ha utilizado el método para diseñar circuitos, controladores, sistemas ópticos y antenas que funcionan tan bien o mejor que aquellos con diseños patentados. Recientemente, se le reconoció una patente por un diseño de controlador creado enteramente mediante GP.
Es, como la evolución biológica, un proceso lento. Hasta hace poco, la potencia de un ordenador era demasiado cara para que la GP resultara práctica en problemas complejos. Koza puede desarrollar problemas simples en ordenadores portátiles en tan sólo unas horas, pero el diseño del controlador le llevó un mes en un equipo de 1.000 procesadores Pentium.