Son un tipo de algoritmo de machine learning para extraer patrones de los datos. Los redes neuronales son aproximadores de funciones, que mapen inputs y outputs, y están compuestos por muchas unidades computacionales, llamadas neuronas. Cada neurona individual posee una pequeña capacidad de aproximación, sin embargo, cuando las neuronas funcionan juntas, sus efectos combinados muestran un desempeño de apredizaje notable.
La ingenieria de redes neuronales fue inspirada por la estructura de un cerebro. Las redes neuronales son simples representaciones de sus contrapartes biologicas. En la neurona biológica podemos notar dentritas, cuerpo de lacelular, axón y las terminales sinapticas. En sistema biológicos la información (en forma de señales neuroelectricas) fluyen hacia la neurona a través de las dentritas, el cuerpo celular genera una señal respuesta y la transmite por el axón hacia las terminales sinapticas. El número específico de señales de entrada requeridas para una señal de respuesta is dependiente de la neurona individual. Cuando la señal generada alcanza las terminales sinapticas salen e interactuan con neuronas adyacentes. tres grandes conclusiones se puedne obtener de la neurona biológica:
La neurona solo genera una señal si un número suficiente de señales de entrada entran a las dentritas de la neurona.
Las neuronas reciben inputs de muchas neuronas adyacentes, y pueden transmitir señales a muchas otras neuronas adyacentes
Cada neurona tiene su propio umbral para activarse (Peso sinaptico)
En el modelo artificial los inputs (variables de entrada) corresponden a las dentritas, la función de transferencia, el input neto y la función de activación corresponde al cuerpo celular y la activación corresponde al axón y a la terminal sinaptica.
Inputs: Corresponden a los valores de los datos originales, o en arquitectuas más profundas, podrían sel el output de otras neuronas.
Función de transferencia: suma todos los inputs juntos (entradas acumuladas). Si la suma de los inputs alcanza un umbral, la función de activación genera una señal de salida. La señal de salida se mueve como input para otras neuronas o simplemente sería el resultado final del modelo artificional, dependiente de la arquitectura de la red neuronal.
La redes neuronales frecuentemente cuentan con una capa de entrada (input layer), una o muchas capas ocultas (hidden layers) y una capa de salida (output layer)
El conjunto de variables de entrada se denominan \(x_{i}\), cada una acompañada por un peso \(w_{ij}^{(l)}\) y describen como las neuronas artificiales son conexiones a otras dentro de la red neuronal. Los nodos de salida con los vector \(y_{q}\).
A cada neurona se le agrega bias/sesgo denotado por \(b_{q]\). El termino es ina constante fijada en 1 para cada nodo actuando de forma parecida a la constante en una regresión lineal.
La capacidad de las redes neuronales de apernder aproximadamente cualquier función es dependiente de la selección apropiada de una función de activación en la red. Funciones de activación habilitan a la red a aprender propiedades no lineales presentes en los datos. Se denota la función de activación como \(\theta(.)\). El input de la función de activación es la suma ponderada de las variables input de la capa previa. Dejemos que \(o_{j}\) sea el output de la j-esima neurona en la capa data de una neurona para un vector de \(k\) variables:
\[ o_{j} = \theta (b_{j} + \sum_{i=1}^p w_{i}x_{i}) \]
El ouput \(o_{j}\) puede alimentar la capa de resultado de una red neuronal, o en arquitecturas más profundas puede alimentar capas ocultas adicionale. La función de activación determina la si la suma de los inputs ponderados más el término de sesgo es lo suficientemente grande para disparar la “chispa” de la neurona. No hay una elección universal para la función de activación , sin embargo, investigadores han proporcionado amplia información de cuales funciones de acivación funcionan bien para soluciones de redes neuronales artificiales para muchos problemas comunes. La elección de la función de activación gobierna el escalamiento de datos requerido para el análisis.
Asumamos que tenemos un problema de aprendizaje supervisado. Iniciemos con una red de una neurona y una capa donde inicialmente asignamos pesos aleatorios. despúes corremos la red neuronal con esos pesos aleatorios y guardamos los resultado generados. Esto es llamado forward pass . Valores de salida , en nuestro caso \(y\), son una función de los valores input \(X\), los pesos iniciales \(w\) y nuestra elección de función umbral \(T\).
\[ y = f(X, w, T) \] Una vez tenemos nuestros y estimados \(\hat{y}\) podemos compararlos con los valores reales de \(y\). Para hacer esto usamos nuestro función de desempeño/costo/pérdida/objetivo \(P\). La elección de la función objetivo es elección del analista, en este caso elegimos la suma de los errores al cuadrado (SSE)
\[ P = \frac{1}{2}|| y - \hat{y}||^2 \] Ahora que tenemos nuestro desempeño inicial, necesitamos un método que ajuste los pesos para mejorar el desempeño. Para nuestra función \(P\) necesitamos maximizar el desempeño de la red neuronal. Para ello debemos minimizar a diferencia entre \(\hat{y}\) y \(y\). Entonces para minimizar la función objetivo en ese caso particular necesitamos diferenciarla con respecto a los pesos \(w\). recordemoa sin embargo que, los pesos de nuestra red son un vector, entonces necesitamos actualizar cada peso de forma individual, y requerimos el uso de derivadas parciales. Adicionalmente necesitamos determinar cuanto queremos mejorar en cada paso. Agregamos un parametro \(r\), conocido como tasa de aprendizaje, el cual e sun escalar que controla que tan lejos nos movemos más cerca del valor optimo de los pesos. Los pesos actualizados son calculados como:
\[ \triangle\vec{w} = r * \left(\frac{\partial P}{\partial w_{0}}, \frac{\partial P}{\partial w_{1}}, ..., \frac{\partial P}{\partial w_{q}} \right) \] La ecuación anterior describe cómo se ajustan cada uno de los pesos asociados con el \(q\) vector de inputs de \(X\) y el térmiso de sesgo \(b_{0}\). Actualizamos entonces los valores como lo indica la ecuación anterior. Este proceso es llamado back propagation. Una vez los pesos fueron actualizados , podemos volver a correr la red neuronal varias veces hasta que alcancemos la tasa error mínimo o deseado.
El algoritmo de back-propagation es el proceso fundamental por el cual la red neuronal aprende. Este algoritmo es el más costos computacionalmente en muchas redes neuronales. Dada una red neuronal, back-propagation requiere \(O(l)\) operaciones para \(l\) capas ocultas, y \(O(w^2)\) operaciones para el número de pesos del input. Frecuentemente se desriben las redes neuronales en términos de ancho y produnfidad, donde la profundidad se refiere al número de capas ocultas y el ancho al número de neuronas dentro de cada capa.
Los hiperparametros nos sirven para controlar el desempeño de la red neuronal. Por ejemplo la tasa de aprendizaje y la métrica de error son ejemplos de hiperparametros. Hiperparametros indican qué tan bien una red neuronal es capaz de aprender funciones subaycentes que tratan de aproximar. Una selección pobre de hiperparametros puede llevar a que la red falle en converger, tener un comportamiento erratico o converver un rápido a optimos locales y no globales. Los hiperparametros son inicialmente seleccionados por el conocimiento histórico acerca de los datos que esstán siendo analizados o del tipo de análisis conducido.