Dentro del campo de estudio de la Inteligencia Artificial existe un conjunto de técnicas que se engloban bajo el nombre de Machine Learning, lo que en castellano suele traducirse como Aprendizaje Automático. Las técnicas más populares de Machine Learning hoy en día son las que se basan en el uso de Redes Neuronales Artificiales.
Red Neuronal Artificial
Una red neuronal artificial en la práctica no es más que un programa que admite unas entradas, realiza un cálculo, y genera unas salidas. Es decir, hasta aquí nada nuevo. La diferencia está en que el cálculo que realiza una red neuronal no tiene porque estar codificado de manera explícita. El código fuente de una red neuronal no tiene que escribirse programando las reglas que resuelven el problema. Aplicando técnicas de Machine Learning la propia red neuronal puede llegar a descubrir cómo resolver el problema.
Imaginemos que queremos escribir un programa que admita como entrada una serie de imágenes aleatorias, y genere como salida un valor indicando para cada imagen si contiene una mesa o una silla. Es evidente que intentar resolver este problema utilizando técnicas tradicionales de programación sería muy complicado. Sobre todo, la mayor dificultad estaría en definir el propio concepto de mesa o silla de una forma universal mediante un lenguaje de programación.
Las redes neuronales artificiales representan una forma de escribir programas que facilitan la resolución de problemas como el descrito en el párrafo anterior. Su diseño está inspirado en las redes neuronales biológicas presentes en el sistema nervioso y su capacidad de abstracción, útil para generalizar conceptos. Lo que quiere decir que las redes neuronales tienen la capacidad de representar, tanto características complejas que resultan habitualmente difíciles de expresar de una forma sencilla, como las relaciones no evidentes a primera vista existentes entre las mismas.
Red Neuronal Biológica
Las redes neuronales biológicas son la fuente de inspiración de las redes neuronales artificiales. Estas últimas se diseñaron como una versión simplificada de las primeras a raíz de las estructuras y procesos observados en el cerebro por la biología.
Una red neuronal biológica es un conjunto de células interconectadas entre sí mediante señales eléctricas y químicas llamadas neuronas. Las neuronas responden a estímulos externos y generan una respuesta.
Cada neurona está compuesta por los siguientes elementos:
- Dendritas
Conexiones de entrada a través de las que se reciben señales. Son conjuntos de pequeñas ramificaciones a través de las cuales se pueden llegar a recibir varios miles de señales.
- Soma
Núcleo de la célula. Procesa las señales de entrada. La suma de todas las entradas determina si la neurona se excita o se inhibe. Si se excita se desencadena un proceso que produce una reacción química y eléctrica de mayor o menor intensidad.
- Umbral de activación
Valor que tiene que superar la suma de las señales de entrada para excitar la neurona.
- Axón
Conexión de salida. Es una única ramificación gruesa y alargada a través de la cual se comunica el impulso nervioso. En su extremo tiene múltiples conexiones que se utilizan para conectarse con otras neuronas.
- Sinapsis
Conexión que se establece con otras neuronas. En la práctica esto sucede en el espacio intermedio que existe entre las neuronas. Hoy en día se considera que es en el conjunto de todas estas conexiones donde realmente se almacena el conocimiento.
Es muy interesante notar en este punto como se diferencia una red neuronal de un ordenador convencional. Los ordenadores actuales siguen la arquitectura de Von Neumann, en la que la memoria se encuentra separada de la unidad de proceso que proporciona toda la capacidad de cálculo. En cambio, en las redes neuronales la capacidad de cálculo viene determinada por pequeñas unidades simples sin mucha capacidad y por las conexiones concretas que se establecen entre las mismas.
Debido a la importancia de las conexiones, las estructuras que siguen esta arquitectura se conocen como modelos computacionales conexionistas.
Neurona Artificial
Sin entrar a revisar los distintos modelos propuestos a lo largo de la historia, el diseño básico de una neurona artificial se basa en la morfología de las neuronas biológicas descritas anteriormente.
Una neurona artificial se compone de los siguientes elementos:
- Un vector de valores de entrada:
X = \begin{bmatrix} x_1 \ldots x_n \end{bmatrix}
- Un vector de pesos:
W = \begin{bmatrix} w_1 \ldots w_n \end{bmatrix}
- Un valor neto de entrada, suma de las entradas ponderadas por los pesos:
z = \displaystyle\sum_{i=1}^{n} w_i x_i
- Un umbral de activación:
T
- Una función de activación:
f(x) = \begin{cases} 1 & \quad \text{if } x \geq T \\ 0 & \quad \text{if } x < T \end{cases}
- Un valor de salida, resultado de la función de activación aplicada al valor neto de entrada:
y = f(z)
Vector de Valores de Entrada
El vector de valores de entradas representa los valores a ser introducidos en la neurona, como por ejemplo los pixeles de una imagen concreta dentro de un conjunto de imágenes.
También suele llamarse vector de características, traducción del inglés «features», en referencia a que cada entrada representa una característica del conjunto de datos que se quiere analizar. Por ejemplo, si se estuviera analizando un grupo de personas, algunas características analizadas podrían ser la edad, el estado civil, o la altura.
Vector de Pesos
El vector de pesos sirve para ponderar las entradas, para dar mayor importancia a unas que a otras en función del problema concreto que se esté intentando resolver. Por ejemplo, la edad de una persona es más relevante que su altura en un sistema de detección temprana de cáncer.
Los valores que deben asignarse a cada peso para resolver un problema concreto no se conocen inicialmente. Determinar estos valores es encontrar parte de la solución al problema.
Valor Neto de Entrada
El valor neto de entrada es la suma ponderada de todas las entradas por sus pesos correspondientes.
Este valor es un compendio de todas las entradas recibidas por la neurona teniendo en cuenta la relevancia de cada una de ellas.
Umbral de Activación
El umbral de activación, referido habitualmente en inglés como «threshold», sirve para controlar la excitación o inhibición de las neuronas. Si el valor neto de entrada supera el umbral entonces la neurona se excita, en caso contrario se inhibe.
Al igual que con los pesos, el valor del umbral de activación necesario para resolver un problema concreto tampoco es conocido inicialmente.
Función de Activación
La función de activación determina el valor de salida de la neurona. En su forma más simple retorna 1 si el valor neto de entrada es igual o mayor que el umbral de activación, y 0 en caso contrario. Esta función de activación concreta se conoce como función escalón, del inglés «step». Al retornar sólo dos posibles valores finitos limita los posibles usos de la neurona, pero en este momento resulta conveniente por su simplicidad.
La función de activación a aplicar para resolver un problema concreto se determina durante la fase de construcción de la red neuronal. En la práctica existe un conjunto de funciones con propiedades bien definidas y se trata de escoger una de ellas en función de la naturaleza del problema.
Valor de Salida
El valor de salida de una neurona es el resultado de aplicar la función de activación al valor neto de entrada.
Técnicamente, el tipo de neurona artificial descrito se conoce con el nombre de Perceptron. Y a pesar de la aparente simplicidad de su estructura, es la base de la mayoría de desarrollos actuales de Inteligencia Artificial.