En el mundo de la programación, para resolver un determinado problema se codifica un programa que lo resuelve de la forma más eficiente posible y con el menor número de fallos. Si queremos calcular todas las combinaciones posibles de un juego de azar, un programa podría ser creado para esa tarea, pero ese mismo programa, por muy complejo que sea, será totalmente inútil jugando al ajedrez, por ejemplo. Simplemente porque fue diseñado para una sola tarea y el programador escribió un modelo para ese caso específico. En ese aspecto, las redes neuronales lo cambian todo, ya que un programa de este tipo ya no se basa en la pericia del programador para resolver un problema, sino que utiliza la fuerza bruta de la computación y, por supuesto, un buen modelo para resolverlo.
Con las redes neuronales ya no se programa para resolver un determinado problema, sino que se programa un sistema capaz de aprender a resolverlo a partir de un entrenamiento basado en un modelo, y eso lo cambia todo. Recientemente el tema está muy candente gracias a Google y su proyecto DeepDream, pero no es algo nuevo: este tipo de sistemas fue creado ya en los años 50, sobre el trabajo de Donald Hebb, entre otros.
Estos sistemas funcionan de una forma muy similar a las neuronas del cerebro, y de hecho las diferentes capas son llamadas neuronas o unidades (units). En su forma más básica, existen capas de entrada, capas intermedias ocultas y capas de salida. Todas las posibles combinaciones entre las entradas y las intermedias, y entre las intermedias y las salidas, tienen un valor determinado o peso que al principio no es más que un número aleatorio, y que se irá ajustando en las siguientes iteraciones. Mediante la retropropagación se ajustan esos pesos. Si lo pensamos bien, no es más que un cálculo estadístico que devuelve una tasa de error. Por ejemplo, imaginemos un simple robot que resuelve laberintos: teniendo un gran conjunto de datos de laberintos, podríamos hacer que nuestro robot procese uno basándose en su experiencia para “predecir” si girar a la izquierda o a la derecha en un cruce, según su modelo. No garantiza que el robot resuelva el laberinto a la primera, sino que tendrá una aproximación estadística basada en probabilidades para resolverlo lo mejor posible.