El bloque elemental de una red neuronal es la neurona artificial: toma un vector de entradas \(x=(x_1,\dots,x_p)\) —en el contexto de una serie temporal, típicamente los retardos y variables de calendario de la sección de ingeniería de características—, las combina linealmente con unos pesos \(w=(w_1,\dots,w_p)\) y un sesgo \(b\), y pasa el resultado por una función de activación \(\phi\) que introduce no linealidad:
Sin la función de activación, apilar varias neuronas en capas sucesivas seguiría siendo, matemáticamente, una combinación lineal de las entradas —una regresión lineal disfrazada—; es \(\phi\) quien permite que la red aproxime relaciones no lineales.
Aplicada a una serie temporal, una neurona (o una red densa de varias) no deja de ser, conceptualmente, un AR no lineal: en lugar de \(y_t=\phi_1 y_{t-1}+\dots+\phi_p y_{t-p}+\varepsilon_t\), se tiene \(y_t = \text{Red}(y_{t-1},\dots,y_{t-p}) + \varepsilon_t\), con 'Red' una función no lineal flexible en lugar de una combinación lineal fija. Los pesos \(w\) y el sesgo \(b\) se ajustan, en el entrenamiento real, mediante retropropagación del error para minimizar una función de pérdida, el mismo principio de ajuste por mínimos cuadrados o máxima verosimilitud que se usa para un ARMA, solo que con un algoritmo numérico distinto por la complejidad del modelo.
Una red densa con retardos como entrada tiene la 'memoria' fijada de antemano por cuántos retardos se incluyan como variables. Las redes neuronales recurrentes (RNN) y, en particular, las LSTM ( Long Short-Term Memory ) resuelven esto manteniendo un estado oculto que se actualiza en cada paso temporal, acumulando en principio información de toda la historia de la serie. Esta app se limita a la neurona individual —el bloque elemental de toda esa familia de modelos—, sin entrenar una red completa.