Programando neuronas
2007/12/01 Roa Zubia, Guillermo - Elhuyar Zientzia Iturria: Elhuyar aldizkaria
Hace doce años, en 1995, un coche conducido por ordenador atravesó Estados Unidos. En total 9.600 kilómetros. No hands across America es el nombre de la aventura, ya que el objetivo era conducir sin las manos. El coche no era sin conductor, ya que una persona aceleraba y frenaba. Sin embargo, eliminando ambas cosas, todo lo demás lo hacía la plataforma de navegación llamada PANS ( Portable Avanced Navigation Suport ), un conjunto de ordenadores, GPS y otros sistemas. Desde entonces, el mundo de los coches robóticos sin conductor se ha avanzado mucho, pero no tanto a nivel de software. Los coches robóticos de hoy utilizan un software similar al que tenía integrado el sistema PANS, programas que permiten a los ordenadores simular el funcionamiento de un cerebro.
El cerebro funciona mediante neuronas conectando millones de pequeñas unidades. Por separado, las neuronas no son muy potentes, reciben pequeñas señales eléctricas, las cambian ligeramente y las envían. Pero, por equipos, las neuronas son muy poderosas, porque estas pequeñas y sencillas unidades están organizadas en una gran y sofisticada red.
Cada neurona recibe señales de otras miles de neuronas. Según consta, decide si va a enviar la señal hacia delante, y si la respuesta es afirmativa, la coloca en la señal y la envía a otras miles de neuronas. Este funcionamiento da una enorme capacidad a la red neuronal, que incluye obras abstractas.
Neuronas informáticas
La red neuronal se puede simular por un ordenador. Son muchas las unidades de cálculo pequeñas que se pueden definir y conectar entre ellas. Mediante la aportación de datos a algunos de ellos se puede iniciar la red y obtener el resultado del trabajo a través de las neuronas de salida. De hecho, los informáticos llaman redes neuronales a los programas informáticos que funcionan de esta manera y los clasifican en inteligencia artificial. Las redes neuronales no son la única forma de crear inteligencia artificial, pero sí una de las más importantes.
En la mayoría de las definiciones de inteligencia artificial aparecen verbos como argumentar, razonar, interpretar, aprender. La cuestión es cómo un ordenador puede hacer estas cosas. Por supuesto, fabrica cerebros a través de millones de neuronas y conexiones. Pero diseñar un sistema de este tipo en el ordenador es imposible, aunque el número de neuronas simuladas sea mucho menor. Por ejemplo, ¿qué tiene que hacer cada neurona dentro de la red para saber que un robot campesino es hora de recoger tomates? Nadie sabe la respuesta, pero eso no importa. Y es que una red informática neuronal no sabe cómo se hace el trabajo. Tiene que aprender.
El programador entrega a la red una estructura inicial que la integra en una fase de formación. Para ello le da un problema y, junto con el planteamiento del problema, la solución correcta del mismo. La red analiza el problema y aporta una solución que contrasta con la proporcionada por el informático y adapta la actividad de cada neurona para ajustar correctamente la solución que consigue toda la red. Vuelve a intentarlo, si el programa está bien hecho, en la segunda sesión se acercará la solución de la red y la solución correcta. Volverá a comparar ambas soluciones, reacondicionará el trabajo de las neuronas y volverá a intentarlo. De esta manera, hasta conseguir una solución correcta.
Este sistema de aprendizaje parece una trampa, ya que se le da la solución que debería conseguir. Pero el cerebro hace lo mismo. Los seres humanos, por ejemplo, aprendemos a leer o a conocer una cara de esa manera: una y otra vez después de ver la solución. El conocimiento de las caras es un buen ejemplo; los niños recién nacidos pasan meses aprendiendo a conocer las caras de sus padres, para lo que se requiere un mínimo nivel de abstracción. Y es que si el padre o la madre de un niño de seis meses cambia de aspecto (corte de pelo, por ejemplo), es posible que el niño tenga grandes dificultades para conocer su cara.
Input y output
Para hacer aprender a la red, en definitiva, hay que ponerse en marcha. Hay que darle un input, introducir datos. Estos datos no llegan directamente a todas las neuronas, son tomadas, tratadas y transmitidas por unos pocos a las neuronas a las que están conectados. Los datos se transmiten en neurona como una señal eléctrica hasta llegar a las neuronas de salida. Estas últimas neuronas proporcionan un output.
Input y output; el antiguo dogma de la informática. Ambas son necesarias. Son componentes imprescindibles de la red neuronal. La red posible más sencilla tendría una única neurona que recogiera un input simple y, transformado, daría un output simple. Para tratar una única neurona y un solo dato. Una red así no aprendería mucho. Incluso para aprender a realizar operaciones lógicas sencillas, una red necesita unas pocas neuronas.
En la operación denominada XOR, por ejemplo, se incluyen dos datos, ceros o uno; cuando los dos datos son unitarios, el resultado de la operación es también uno, y si tiene algún cero, el resultado de la operación es cero. Se trata de una operación muy sencilla, pero se necesitan cinco neuronas para que una red aprenda a hacerlo: dos neuronas para recoger los datos del input, otra para el output final y otras dos neuronas intermedias.
Capas
Las neuronas intermedias son necesarias para realizar trabajos intermedios. Y si todos estos trabajos intermedios no son similares, cada trabajo lo hace un grupo de neuronas. Por ello, los informáticos los organizan por capas. En la primera capa se encuentran las neuronas que reciben el input, luego se encuentra la primera capa intermedia cuando es necesario, luego todas las siguientes capas intermedias en orden y, finalmente, la capa neuronal que da el output.
La señal realiza este viaje, desde el input hasta el output, en una vía determinada por conexiones. Puede ser un camino directo o que reenvía la señal desde las últimas capas a las iniciales, la estructura de las conexiones dependerá del trabajo. Y estructuras muy complejas pueden hacer obras muy abstractas.
El cerebro funciona de forma similar: hay neuronas que reciben el input (lo visto, lo escuchado, etc.), se activan determinados grupos neuronales para cada tipo de trabajo y otras que provocan el output (reacción). Pero el cerebro es mucho más complejo que las redes neuronales de informática. Entre otras cosas, aumenta el número de neuronas y conexiones a medida que aprende, al menos al comienzo de la vida.
Ensayo y error
Cuanto más abstracto sea el trabajo, más complejo debe ser la red que aprende a hacerlo. Parece imposible, por ejemplo, diseñar una red neuronal que separe las letras impresas (caracteres). Pero estas redes son habituales: Se llaman OCR sofware. ¿Cómo los informáticos los diseñaron? ¿Cómo conocieron el número de neuronas que debían utilizar, el número de capas que debían organizar y qué conexiones debían establecer?
La respuesta es sencilla: al principio no sabían. Para llevar a cabo este tipo de trabajos, eligen una red neuronal inicial que le hará aprender. Es muy posible que la red no pueda aprender, que no se quede una vez puesta en marcha o que dé resultados sin sentido. En estos casos, ajustan la red, añadiendo o eliminando neuronas, reestructurando la propia red o modificando la transformación que realiza cada neurona. Y vuelven a probar.
Finalmente, cuando es capaz de aprender la red, está dispuesto a trabajar en el 'mundo real'. Y entonces también habrá que ajustar el trabajo de la red, ya que el proceso de aprendizaje se realiza a través de ejemplos concretos. Y el mundo real tiene muchos casos diferentes.
Gai honi buruzko eduki gehiago
Elhuyarrek garatutako teknologia