Est-ce une bonne idée d'utiliser CNN pour classer le signal 1D?


20

Je travaille sur la classification des stades de sommeil. J'ai lu quelques articles de recherche sur ce sujet, beaucoup d'entre eux ont utilisé la méthode SVM ou d'ensemble. Est-ce une bonne idée d'utiliser un réseau neuronal convolutif pour classer le signal EEG unidimensionnel?
Je suis nouveau dans ce genre de travail. Pardonnez-moi si je demande quelque chose de mal?


Un signal 1D peut être transformé en signal 2D en décomposant le signal en trames et en prenant la FFT de chaque trame. Pour l'audio, c'est assez rare.
MSalters

Réponses:


23

Je suppose que par signal 1D, vous voulez dire des données de séries chronologiques, où vous supposez une dépendance temporelle entre les valeurs. Dans de tels cas, les réseaux de neurones convolutifs (CNN) sont l'une des approches possibles. L'approche de réseau de neurones la plus populaire pour ces données consiste à utiliser des réseaux de neurones récurrents (RNN), mais vous pouvez également utiliser des CNN, ou une approche hybride (réseaux de neurones quasi-récurrents, QRNN) comme discuté par Bradbury et al (2016) , et aussi illustré sur leur figure ci-dessous. Il existe également d'autres approches, comme l'utilisation de l'attention seule, comme dans le réseau Transformer décrit par Vaswani et al (2017) , où les informations sur le temps sont transmises via les fonctionnalités de la série de Fourier .

entrez la description de l'image ici

Avec RNN , vous utiliseriez une cellule qui prend en entrée l'état caché précédent et la valeur d'entrée actuelle, pour renvoyer la sortie et un autre état caché, de sorte que les informations circulent via les états cachés . Avec CNN, vous utiliseriez une fenêtre coulissante d'une certaine largeur, qui ressemblerait à certains modèles (appris) dans les données, et empileriez ces fenêtres les unes sur les autres, de sorte que les fenêtres de niveau supérieur rechercheraient des modèles dans le niveau inférieur motifs. L'utilisation de telles fenêtres coulissantes peut être utile pour trouver des éléments tels que des motifs répétitifs dans les données (par exemple, des modèles saisonniers). Les couches QRNN mélangent les deux approches. En fait, l'un des avantages des architectures CNN et QRNN est qu'elles sont plus rapides que RNN .


12

Vous pouvez certainement utiliser un CNN pour classer un signal 1D. Puisque vous êtes intéressé par la classification des stades de sommeil, consultez cet article . C'est un réseau neuronal profond appelé DeepSleepNet, et utilise une combinaison de couches convolutives 1D et LSTM pour classer les signaux EEG en phases de sommeil.

Voici l'architecture:

DeepSleepNet

Le réseau se compose de deux parties:

  • Fs/2 (où Fs est le taux d'échantillonnage du signal) alors que celui de droite utilise la taille du noyau = Fs×4. L'intuition derrière cela est qu'un réseau essaie d'apprendre des caractéristiques "fines" (ou haute fréquence), et l'autre essaie d'apprendre des caractéristiques "grossières" (ou basse fréquence).
  • Couches d'apprentissage séquentielles: les incorporations (ou fonctions apprises) des couches convolutionnelles sont concaténées et introduites dans les couches LSTM pour apprendre les dépendances temporelles entre les plongées.

À la fin, il y a une couche softmax à 5 voies pour classer les séries temporelles en une des cinq classes correspondant aux étapes du sommeil.


4

Je veux mettre l'accent sur l'utilisation d'une approche hybride empilée (CNN + RNN) pour le traitement de longues séquences :

  • Comme vous le savez peut-être, les CNN 1D ne sont pas sensibles à l'ordre des pas de temps (pas plus loin qu'une échelle locale); bien sûr, en empilant beaucoup de couches de convolution et de mise en commun les unes sur les autres, les couches finales peuvent observer des sous-séquences plus longues de l'entrée d'origine. Cependant, cela pourrait ne pas être une approche efficace pour modéliser les dépendances à long terme. Cependant, les CNN sont très rapides par rapport aux RNN.

  • En revanche, les RNN sont sensibles à l'ordre des pas de temps et peuvent donc très bien modéliser les dépendances temporelles. Cependant, ils sont connus pour être faibles dans la modélisation des dépendances à très long terme, où un pas de temps peut avoir une dépendance temporelle avec les pas de temps très en arrière dans l'entrée. De plus, ils sont très lents lorsque le nombre de pas de temps est élevé.

Ainsi, une approche efficace pourrait être de combiner les CNN et les RNN de cette manière: nous utilisons d'abord des couches de convolution et de mise en commun pour réduire la dimensionnalité de l'entrée. Cela nous donnerait une représentation plutôt compressée de l'entrée d'origine avec des fonctionnalités de niveau supérieur. Ensuite, nous pouvons transmettre cette séquence 1D plus courte aux RNN pour un traitement ultérieur. Nous profitons donc à la fois de la vitesse des CNN et des capacités de représentation des RNN. Bien que, comme toute autre méthode, vous devez l'expérimenter sur votre cas d'utilisation spécifique et votre ensemble de données pour savoir s'il est efficace ou non.

Voici une illustration approximative de cette méthode:

--------------------------
-                        -
-   long 1D sequence     -
-                        -
--------------------------
            |
            |
            v
==========================
=                        =
=  Conv + Pooling layers =
=                        =
==========================
            |
            |
            v
---------------------------
-                         -
- Shorter representations -
-     (higher-level       -
-      CNN features)      -
-                         -
---------------------------
            |
            |
            v
===========================
=                         = 
=  (stack of) RNN layers  =
=                         =
===========================
            |
            |
            v
===============================
=                             =
= classifier, regressor, etc. =
=                             =
===============================

4

FWIW, je recommanderai de consulter le Temporal Convolutional Network de cet article (je ne suis pas l'auteur). Ils ont une bonne idée d'utiliser CNN pour les données de séries chronologiques, sont sensibles à l'ordre du temps et peuvent modéliser des séquences arbitrairement longues (mais n'ont pas de mémoire).

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.