8.1 Single-hidden-layer feedforward network

La red neuronal más simple es la single-hidden-layer feedforward network, también conocida como single layer perceptron. Se trata de una red feedforward con una única capa oculta que consta de \(M\) variables ocultas \(h_m\) (los nodos que conforman la capa, también llamados unidades ocultas). Cada variable \(h_m\) es una combinación lineal de las variables predictoras, con parámetros \(\omega_{jm}\) (los parámetros \(\omega_{0m}\) reciben el nombre de parámetros sesgo) \[\omega_{0m} + \omega_{1m} x_1 + \omega_{2m} x_2 + \ldots + \omega_{pm} x_p\] transformada por una función no lineal \(\phi\), denominada función de activación, típicamente la función logística (ver Sección 1.2.1); la idea sería que cada neurona “aprende” un resultado binario. De este modo tenemos que \[h_{m}(\mathbf{x}) = \phi\left( \omega_{0m} + \omega_{1m} x_1 + \omega_{2m} x_2 + \ldots + \omega_{pm} x_p \right)\]

En regresión, el modelo final es una combinación lineal de las variables ocultas \[m(\mathbf{x}) = \gamma_0 + \gamma_1 h_1 + \gamma_2 h_2 + \ldots + \gamma_M h_M\] aunque también se puede considerar una función de activación en el nodo final, para adaptar la predicción a distintos tipos de respuestas, y distintas funciones de activación en los nodos intermedios69. Una bastante utilizada es la función bisagra definida en la Sección 7.4, denominada ReLU (Rectified linear unit) en este contexto. En la siguiente sección se describirá el caso de clasificación.

Por tanto, el modelo \(m\) es un modelo de regresión no lineal en dos etapas con \(M(p + 1) + M + 1\) parámetros (también llamados pesos). Por ejemplo, con 200 variables predictoras y 10 variables ocultas, hay nada menos que 2021 parámetros. Como podemos comprobar, incluso con el modelo más sencillo y una cantidad moderada de variables predictoras y ocultas, el número de parámetros a estimar es muy grande. Por eso decimos que estos modelos están hiperparametrizados.

La estimación de los parámetros (el aprendizaje) se realiza minimizando una función de pérdidas, típicamente la suma de los residuos al cuadrado (\(\mbox{RSS}\)). La solución exacta de este problema de optimización suele ser imposible en la práctica, al tratarse de un problema no convexo, por lo que se resuelve mediante un algoritmo heurístico de descenso de gradientes (que utiliza las derivadas de las funciones de activación), llamado en este contexto backpropagation (Werbos, 1974), que va a converger a un óptimo local, pero difícilmente al óptimo global. Por este motivo, el modelo resultante va a ser muy sensible a la solución inicial, que generalmente se selecciona de forma aleatoria con valores próximos a cero (si se empezase dando a los parámetros valores nulos, el algoritmo no se movería). El algoritmo va tratando los datos de entrenamiento por lotes (de 32, 64…) llamados batch, y recibe el nombre de epoch cada vez que el algoritmo completa el procesado de todos los datos; por tanto, el número de epochs es el número de veces que el algoritmo procesa la totalidad de los datos.

Una forma de mitigar la inestabilidad de la estimación del modelo es generando muchos modelos (que se consiguen con soluciones iniciales diferentes) y promediando las predicciones; otra alternativa es utilizar bagging. El algoritmo depende de un parámetro en cada iteración, que representa el ratio de aprendizaje (learning rate). Por razones matemáticas, se selecciona una sucesión que converja a cero.

Otro problema inherente a la heurística de tipo gradiente es que se ve afectada negativamente por la correlación entre las variables predictoras. Cuando hay correlaciones muy altas, es usual preprocesar los datos, o bien eliminando variables predictoras o bien utilizando PCA.

Naturalmente, al ser las redes neuronales unos modelos con tantos parámetros tienen una gran tendencia al sobreajuste. Una forma de mitigar este problema es implementar la misma idea que se utiliza en la regresión ridge de penalizar los parámetros y que en este contexto recibe el nombre de reducción de los pesos (weight decay) \[\mbox{min}_{\boldsymbol{\omega}, \boldsymbol{\gamma}}\ \mbox{RSS} + \lambda \left(\sum_{m=1}^M \sum_{j=0}^p \omega_{jm}^2 + \sum_{m=0}^M \gamma_m^2 \right)\]

En esta modelización del problema, hay dos hiperparámetros cuyos valores deben ser seleccionados: el parámetro regularizador \(\lambda\) (con frecuencia un número entre 0 y 0.1) y el número de nodos \(M\). Es frecuente seleccionar \(M\) a mano (un valor alto, entre 5 y 100) y \(\lambda\) por validación cruzada, confiando en que el proceso de regularización forzará a que muchos pesos (parámetros) sean próximos a cero. Además, al depender la penalización de una suma de pesos, es imprescindible que sean comparables, es decir, hay que reescalar las variables predictoras antes de empezar a construir el modelo.

La extensión natural de este modelo es utilizar más de una capa de nodos (variables ocultas). En cada capa, los nodos están conectados con los nodos de la capa precedente.

Observemos que el modelo single-hidden-layer feedforward network tiene la misma forma que el modelo projection pursuit regression (Sección 7.5.1), sin más que considerar \(\alpha_m = \omega_m/\| \omega_m \|\), con \(\omega_m = (\omega_{1m}, \omega_{2m}, \ldots, \omega_{pm})\), y \[g_m (\alpha_{1m}x_1 + \alpha_{2m}x_2 + \ldots + \alpha_{pm}x_p) = \gamma_m \phi(\omega_{0m} + \omega_{1m} x_1 + \omega_{2m} x_2 + \ldots + \omega_{pm} x_p)\] Sin embargo, hay que destacar una diferencia muy importante: en una red neuronal, el analista fija la función \(\phi\) (lo más habitual es utilizar la función logística), mientras que las funciones ridge \(g_m\) se consideran como funciones no paramétricas desconocidas que hay que estimar.

Bibliografía

Werbos, P. (1974). New tools for prediction and analysis in the behavioral sciences. Tesis doctoral, Harvard University.

  1. Para un listado de distintas funciones de activación, ver por ejemplo https://en.wikipedia.org/wiki/Activation_function.↩︎