El ser humano ha logrado hacer computadoras cada vez más rápidas y con más almacenamiento, buscando así un poco a la imagen y semejanza del cerebro humano. ¿Suena complejo? Aquí les explicamos cómo funcionan las redes neuronales.
Un cerebro típico contiene, más o menos, 100 mil millones de pequeñas células llamadas neuronas, aunque hay quien habla de 500 mil millones y otros de 50 mil millones nada más.
Cada neurona tiene un cuerpo (la masa central de la célula) con un número de conexiones que se llaman dendritas, que envían información al cuerpo de la célula.
Las neuronas son tan pequeñas que pueden empacarse 100 en un solo milímetro. Cabe decir que las neuronas, sin embargo, solamente son el 10% de las células en el cerebro, el resto son células gliales, que apoyan a las neuronas, las protegen y las alimentan.
¿Cerebro tecnológico?
Lo equivalente a una neurona en una computadora podría ser el transistor. Un procesador moderno contiene 2 mil millones de transistores y ocupa alrededor de 25 mm cuadrados, el tamaño de un timbre postal.
Pero también existen muchas diferencias. Por ejemplo, los transistores pueden ponerse ordenadamente y usarse para almacenar mucha información que al sistema no le hace ningún sentido. Los seres humanos son quienes interpretan estos datos.
El cerebro, en cambio, tiene 10 a 100 veces más células conectadas de formas muy complejas y se pueden guardar muchos datos que, incluso, pueden llevar años hasta que logran generar una idea.
Considerando esto, hubo quien pensó que una buena idea sería simular el comportamiento de una neurona y después de lograr esto hacer redes de neuronas para hacer así más poderosos los procesos.
Así, la red neuronal busca simular una cantidad determinada de neuronas interconectadas en la computadora para que aprenda cosas, reconozcan patrones, tomen decisiones, etcétera, como hacen los humanos.
Lo sorprendente, como veremos, es que las redes neuronales no tienen que programarse para que aprendan explícitamente: aprenden por sí mismas, ¡como el cerebro!
Más bien es una simulación
No olvidemos que una red neuronal no es un cerebro: más bien se trata de una simulación en software. Se hace programando una computadora típica, de forma tradicional, con transistores que buscan un esquema como el de una red de neuronas humanas, o al menos tener ese principio.
Así, una red neuronal difiere de un cerebro como un modelo de computadora del clima difiere de las nubes o el Sol.
Las simulaciones de computadoras son simplemente una colección de variables algebraicas y ecuaciones matemáticas, que se ligan entre ellas, en donde no tienen un significado adentro, sino que logran que quieran decir algo cuando el programador hace bien su tarea.
Una red neuronal artificial, es decir, una red simulada de neuronas en una computadora, puede tener entre un par de neuronas hasta millones de neuronas artificiales, llamadas unidades y acomodadas en capas, donde cada capa está conectada entre la anterior y la siguiente.
Algunas de ellas se llaman unidades de entrada, las cuales están diseñadas para recibir algún tipo de información del mundo exterior, para que la red neuronal aprenda, reconozca o haga algún tipo de proceso.
Otras unidades están en el lado opuesto de la red para ver cómo responde a la información de entrada, y por ello se llaman unidades de salidas. Entre las unidades de entrada y de salida, se encuentran varias capas, llamada, unidades escondidas, las cuales son las que forman en general la mayor parte de la red neuronal.
La mayoría de estas redes están conectadas totalmente, lo que significa que cada unidad escondida y cada unidad de salida, se conectan a cada unidad en ambos lados.
Las conexiones entre una unidad y otra se representa con un número, llamado peso, el cual puede ser positivo, si una unidad excita a la siguiente, o negativo, si una unidad inhibe a otra.
A mayor peso, más influencia tiene una unidad sobre otra. Cabe decir que esto es lo que hacen las neuronas biológicas, que disparan impulsos a través de las conexiones entre las neuronas, lo que se denomina la sinapsis.
¿Cómo aprende cosas una red neuronal artificial?
La información fluye a través de una red neuronal de dos maneras: cuando aprende (cuando es entrenada) o bien, cuando se opera ésta normalmente (después de haber sido entrenada).
Los patrones de información alimentan a la red a través de las entradas, las cuales disparan valores en las capas de las unidades escondidas y estas llegan eventualmente a las unidades de salida. Esto se denomina una red de alimentación hacia adelante.
Hay que indicar que no todas las unidades se disparan todo el tiempo. Las unidades ven los valores de las entradas y notan si llegan a un valor umbral (que es en donde se dispara el estímulo, llamado estímulo nervioso en las neuronas humanas). Este es el modelo reconocido como funcionan las neuronas humanas, a todo esto.
Para que una red neuronal aprenda, debe haber un elemento de retroalimentación, como cuando a un niño se le enseña algo y se le dice si lo ha hecho bien o mal. De hecho, todos usamos retroalimentación todo el tiempo.
Cuando se practica un tema, es decir, cuando se quiere dominar algo, lo que hacemos es tratar de hacer las cosas como se nos han dicho que es la mejor manera de hacerla, y aprendemos entonces a modificar nuestra conducta basada en los conocimientos previos adquiridos. Esta es la retroalimentación de la que hablamos.
La retroalimentación en una red neuronal simulada se denomina propagación hacia atrás, y esto involucra comparar la salida de la red con lo que esperaríamos que nos contestara.
Entrenar una red de esta manera exige un conjunto importante de ejemplos que la red pueda tomar para aprender.
Desde luego que todo este entrenamiento implica comunicar a la red neuronal en binario, para que las unidades escondidas hagan su trabajo y refuercen la salida para llegar al resultado esperado.
Hoy las redes neuronales pueden hacer muchas cosas: reconocen objetos, personas, voz, etcétera, y se están usando cada vez más para atacar problemas que siempre se pensó, eran sólo del dominio humano.
Hoy una red neuronal puede vencer al mejor jugador del Go, y en ajedrez se ha probado que AlphaZero, una red neuronal de DeepMind, la empresa que lo produjo, es un jugador de altísimo nivel, con solamente un par de horas de entrenamiento y millones de partidas jugadas contra sí mismo.
Puedes ver estas soluciones en acción aquí: