Estoy trabajando en la clasificación de las etapas del sueño. He leído algunos artículos de investigación sobre este tema, muchos de ellos utilizan el método SVM o el método de conjunto. ¿Es una buena idea utilizar una red neuronal convolucional para clasificar una señal EEG unidimensional?
Soy nuevo en este tipo de trabajo. ¿Perdón si pregunto algo mal?
Respuestas
¿Demasiados anuncios?Supongo que por señal 1D te refieres a datos de series temporales, en los que supones una dependencia temporal entre los valores. En estos casos, las redes neuronales convolucionales (CNN) son uno de los enfoques posibles. El enfoque más popular de las redes neuronales para este tipo de datos es el uso de redes neuronales recurrentes (RNN), pero también se pueden utilizar CNNs, o un enfoque híbrido (redes neuronales cuasi-recurrentes, QRNN) como se discute en Bradbury et al (2016) y también se ilustra en su figura a continuación. También hay otros enfoques, como el uso de la atención sola, como en la red Transformer descrita por Vaswani et al (2017) donde la información sobre el tiempo se transmite a través de Características de la serie de Fourier .
Con RNN se utilizaría una celda que toma como entrada el estado oculto anterior y el valor de entrada actual, para devolver la salida y otro estado oculto, por lo que el la información fluye a través de los estados ocultos . Con la CNN, usted utilizar la ventana deslizante de cierta anchura, que buscaría ciertos patrones (aprendidos) en los datos, y apilaría dichas ventanas unas sobre otras, de modo que las ventanas de nivel superior buscarían patrones dentro de los patrones de nivel inferior. El uso de estas ventanas deslizantes puede ser útil para encontrar cosas como patrones repetitivos dentro de los datos (por ejemplo, patrones estacionales). Las capas QRNN mezclan ambos enfoques. De hecho, una de las ventajas de las arquitecturas CNN y QRNN es que son más rápidos que los RNN .
Ciertamente, se puede utilizar una CNN para clasificar una señal 1D. Ya que está interesado en la clasificación de las etapas del sueño, vea este documento . Es una red neuronal profunda llamada DeepSleepNet, y utiliza una combinación de capas convolucionales 1D y LSTM para clasificar las señales de EEG en etapas de sueño.
Esta es la arquitectura:
La red tiene dos partes:
- Capas de aprendizaje de representación: Consiste en dos redes convolucionales en paralelo. La principal diferencia entre las dos redes es el tamaño del núcleo y el tamaño de la ventana de agrupación máxima. La de la izquierda utiliza un tamaño de núcleo = $F_s/2$ (donde $F_s$ es la frecuencia de muestreo de la señal) mientras que el de la derecha utiliza el tamaño del núcleo = $F_s \times 4$ . La intuición detrás de esto es que una red intenta aprender características "finas" (o de alta frecuencia), y la otra intenta aprender características "gruesas" (o de baja frecuencia).
- Capas de aprendizaje secuencial: Las incrustaciones (o características aprendidas) de las capas convolucionales se concatenan y se introducen en las capas LSTM para aprender las dependencias temporales entre las incrustaciones.
Al final hay una capa softmax de 5 vías para clasificar las series temporales en una de las cinco clases correspondientes a las etapas del sueño.
Por cierto, te recomiendo que veas la Red Convolucional Temporal de este documento (No soy el autor). Tienen una idea genial para utilizar la CNN para datos de series temporales, es sensible al orden temporal y puede modelar secuencias arbitrariamente largas (pero no tiene memoria).
Quiero destacar el uso de un enfoque híbrido apilado (CNN + RNN) para procesamiento de secuencias largas :
-
Como se sabe, las CNN 1D no son sensibles al orden de los pasos de tiempo (no más allá de una escala local); por supuesto, apilando muchas capas de convolución y agrupación unas sobre otras, las capas finales son capaces de observar subsecuencias más largas de la entrada original. Sin embargo, ese puede no ser un enfoque eficaz para modelar las dependencias a largo plazo. Sin embargo, las CNN son muy rápidas en comparación con las RNN.
-
Por otro lado, las RNN son sensibles al orden de los pasos temporales y, por tanto, pueden modelar muy bien las dependencias temporales. Sin embargo, se sabe que son débiles a la hora de modelar dependencias a muy largo plazo, donde un paso de tiempo puede tener una dependencia temporal con los pasos de tiempo muy atrás en la entrada. Además, son muy lentos cuando el número de pasos temporales es elevado.
Así pues, un enfoque eficaz podría ser combinar las CNN y las RNN de la siguiente manera: primero utilizamos capas de convolución y agrupación para reducir la dimensionalidad de la entrada. Esto nos daría una representación bastante comprimida de la entrada original con características de nivel superior. A continuación, podemos alimentar esta secuencia 1D más corta a las RNN para su posterior procesamiento. De este modo, aprovechamos la velocidad de las CNN y la capacidad de representación de las RNN al mismo tiempo. Aunque, como cualquier otro método, deberías experimentar con esto en tu caso de uso y conjunto de datos específicos para averiguar si es efectivo o no.
He aquí una ilustración aproximada de este método:
--------------------------
- -
- long 1D sequence -
- -
--------------------------
|
|
v
==========================
= =
= Conv + Pooling layers =
= =
==========================
|
|
v
---------------------------
- -
- Shorter representations -
- (higher-level -
- CNN features) -
- -
---------------------------
|
|
v
===========================
= =
= (stack of) RNN layers =
= =
===========================
|
|
v
===============================
= =
= classifier, regressor, etc. =
= =
===============================
0 votos
Una señal 1D puede transformarse en una señal 2D dividiendo la señal en tramas y tomando la FFT de cada una de ellas. En el caso del audio, esto es muy poco habitual.