Czy warto klasyfikować sygnał 1D za pomocą CNN?

20

Pracuję nad klasyfikacją etapu snu. Czytałem niektóre artykuły badawcze na ten temat, wiele z nich używało SVM lub metody ensemble. Czy dobrym pomysłem jest użycie splotowej sieci neuronowej do klasyfikacji jednowymiarowego sygnału EEG?
Jestem nowy w tego rodzaju pracy. Wybacz mi, jeśli poproszę o coś złego?

Fazla Rabbi Mashrur
źródło
Sygnał 1D można przekształcić w sygnał 2D, dzieląc go na ramki i biorąc FFT każdej ramki. W przypadku audio jest to dość rzadkie.
MSalters

Odpowiedzi:

23

Myślę, że przez sygnał 1D masz na myśli dane szeregów czasowych, w których zakładasz czasową zależność między wartościami. W takich przypadkach splotowe sieci neuronowe (CNN) są jednym z możliwych podejść. Najpopularniejszym podejściem do takich danych w sieci neuronowej jest korzystanie z rekurencyjnych sieci neuronowych (RNN), ale można alternatywnie stosować CNN lub podejście hybrydowe (quasi-rekurencyjne sieci neuronowe, QRNN), jak omówili Bradbury i in. (2016) , a także zilustrowane na ich rysunku poniżej. Istnieją również inne podejścia, takie jak wykorzystanie samej uwagi, jak w sieci Transformator opisanej przez Vaswani i in. (2017) , w której informacje o czasie są przekazywane za pośrednictwem funkcji szeregów Fouriera .

wprowadź opis zdjęcia tutaj

W przypadku RNN użyłbyś komórki, która przyjmuje jako dane wejściowe poprzedni stan ukryty i bieżącą wartość wejściową, aby zwrócić dane wyjściowe i kolejny stan ukryty, aby informacje przepływały przez stany ukryte . W przypadku CNN można użyć przesuwanego okna o pewnej szerokości, które wyglądałoby na pewne (wyuczone) wzorce w danych, i układać takie okna jeden na drugim, aby okna wyższego poziomu szukały wzorców na niższym poziomie wzory. Korzystanie z takich przesuwanych okien może być pomocne w znajdowaniu takich rzeczy jak powtarzające się wzorce w danych (np. Wzorce sezonowe). Warstwy QRNN łączą oba podejścia. W rzeczywistości jedną z zalet architektur CNN i QRNN jest to, że są one szybsze niż RNN .

Tim
źródło
12

Z pewnością możesz użyć CNN do sklasyfikowania sygnału 1D. Ponieważ jesteś zainteresowany klasyfikacją etapów snu, przeczytaj ten artykuł . Jest to głęboka sieć neuronowa o nazwie DeepSleepNet i wykorzystuje kombinację warstw splotowych 1D i LSTM do klasyfikacji sygnałów EEG na etapy uśpienia.

Oto architektura:

DeepSleepNet

Sieć składa się z dwóch części:

  • fas/2)fasfas×4
  • Sekwencyjne warstwy uczenia się: Osadzenia (lub wyuczone cechy) z warstw splotowych są łączone i wprowadzane do warstw LSTM w celu poznania czasowych zależności między osadzeniami.

Na końcu znajduje się 5-kierunkowa warstwa softmax do klasyfikowania szeregów czasowych w jedną z pięciu klas odpowiadających etapom snu.

kedarps
źródło
4

Chcę podkreślić stosowanie hybrydowego podejścia piętrowego (CNN + RNN) do przetwarzania długich sekwencji :

  • Jak być może wiesz, CND 1D nie są wrażliwe na kolejność kroków czasowych (nie dalej niż na skalę lokalną); oczywiście, układając wiele warstw splotu i puli jeden na drugim, końcowe warstwy są w stanie obserwować dłuższe podsekwencje oryginalnego wejścia. Jednak może to nie być skuteczne podejście do modelowania zależności długoterminowych. Chociaż CNN są bardzo szybkie w porównaniu do RNN.

  • Z drugiej strony RNN są wrażliwe na kolejność kroków czasowych i dlatego mogą bardzo dobrze modelować zależności czasowe. Wiadomo jednak, że są słabi w modelowaniu bardzo długoterminowych zależności, w których czasomierz może mieć zależność czasową z krokami czasowymi bardzo daleko wstecz na wejściu. Ponadto są one bardzo wolne, gdy liczba kroków czasowych jest wysoka.

Tak więc skutecznym podejściem może być połączenie CNN i RNN w ten sposób: najpierw używamy warstw splotu i puli, aby zmniejszyć wymiar wejściowy. To dałoby nam raczej skompresowaną reprezentację oryginalnego wejścia z funkcjami wyższego poziomu. Następnie możemy podać krótszą sekwencję 1D do RNN w celu dalszego przetwarzania. Wykorzystujemy więc szybkość sieci CNN, a także możliwości reprezentacyjne sieci RNN w tym samym czasie. Chociaż, jak każda inna metoda, powinieneś eksperymentować z tym na konkretnym przypadku użycia i zestawie danych, aby dowiedzieć się, czy jest skuteczny, czy nie.

Oto przybliżona ilustracja tej metody:

--------------------------
-                        -
-   long 1D sequence     -
-                        -
--------------------------
            |
            |
            v
==========================
=                        =
=  Conv + Pooling layers =
=                        =
==========================
            |
            |
            v
---------------------------
-                         -
- Shorter representations -
-     (higher-level       -
-      CNN features)      -
-                         -
---------------------------
            |
            |
            v
===========================
=                         = 
=  (stack of) RNN layers  =
=                         =
===========================
            |
            |
            v
===============================
=                             =
= classifier, regressor, etc. =
=                             =
===============================
dzisiaj
źródło
4

FWIW, zalecam sprawdzenie Temporal Convolutional Network z tego artykułu (nie jestem autorem). Mają świetny pomysł na użycie CNN do danych szeregów czasowych, jest wrażliwy na porządek czasowy i może modelować dowolnie długie sekwencje (ale nie ma pamięci).

wprowadź opis zdjęcia tutaj

kampta
źródło