É uma boa ideia usar a CNN para classificar o sinal 1D?

20

Estou trabalhando na classificação do estágio do sono. Li alguns artigos de pesquisa sobre esse tópico, muitos deles usavam SVM ou método de conjunto. É uma boa idéia usar a rede neural convolucional para classificar o sinal de EEG unidimensional?
Eu sou novo nesse tipo de trabalho. Perdoe-me se eu perguntar alguma coisa errada?

Fazla Rabbi Mashrur
fonte
Um sinal 1D pode ser transformado em um sinal 2D, dividindo-o em quadros e obtendo a FFT de cada quadro. Para áudio, isso é bastante incomum.
MSalters 18/04

Respostas:

23

Eu acho que por sinal 1D você quer dizer dados de séries temporais, onde você assume dependência temporal entre os valores. Nesses casos, as redes neurais convolucionais (CNN) são uma das abordagens possíveis. A abordagem de rede neural mais popular para esses dados é usar redes neurais recorrentes (RNN), mas você pode usar CNNs alternativamente ou abordagem híbrida (redes neurais quase recorrentes, QRNN), conforme discutido por Bradbury et al (2016) , e também ilustrado na figura abaixo. Também existem outras abordagens, como usar a atenção apenas, como na rede Transformer, descrita por Vaswani et al (2017) , em que as informações sobre o tempo são passadas através dos recursos da série Fourier .

insira a descrição da imagem aqui

Com o RNN , você usaria uma célula que toma como entrada o estado oculto anterior e o valor de entrada atual, para retornar a saída e outro estado oculto, para que as informações fluam pelos estados ocultos . Com a CNN, você usaria uma janela deslizante de alguma largura, com aparência de certos padrões (aprendidos) nos dados, e empilharia essas janelas umas sobre as outras, para que as janelas de nível superior procurassem padrões dentro do nível inferior padrões. O uso dessas janelas deslizantes pode ser útil para encontrar itens como padrões repetidos nos dados (por exemplo, padrões sazonais). As camadas QRNN combinam as duas abordagens. De fato, uma das vantagens das arquiteturas CNN e QRNN é que elas são mais rápidas que a RNN .

Tim
fonte
11

Você certamente pode usar uma CNN para classificar um sinal 1D. Como você está interessado na classificação do estágio do sono, consulte este documento . É uma rede neural profunda chamada DeepSleepNet, e usa uma combinação de camadas 1D convolucionais e LSTM para classificar os sinais de EEG em estágios de sono.

Aqui está a arquitetura:

DeepSleepNet

Existem duas partes na rede:

  • Fs/2FsFs×4
  • Camadas de aprendizado sequencial: os incorporamentos (ou recursos aprendidos) das camadas convolucionais são concatenados e alimentados nas camadas LSTM para aprender dependências temporais entre os revestimentos.

No final, há uma camada softmax de 5 vias para classificar as séries temporais em uma de cinco classes correspondentes aos estágios do sono.

kedarps
fonte
4

Quero enfatizar o uso de uma abordagem híbrida empilhada (CNN + RNN) para o processamento de longas sequências :

  • Como você deve saber, as CNNs 1D não são sensíveis à ordem dos intervalos de tempo (não além de uma escala local); é claro, empilhando várias camadas de convolução e agrupando umas sobre as outras, as camadas finais são capazes de observar sub sequências mais longas da entrada original. No entanto, essa pode não ser uma abordagem eficaz para modelar dependências de longo prazo. Embora, as CNNs sejam muito rápidas em comparação com as RNNs.

  • Por outro lado, as RNNs são sensíveis à ordem dos intervalos de tempo e, portanto, podem modelar muito bem as dependências temporais. No entanto, sabe-se que eles são fracos na modelagem de dependências de longo prazo, em que um timestep pode ter uma dependência temporal com os timestaps muito atrás na entrada. Além disso, eles são muito lentos quando o número de timesteps é alto.

Portanto, uma abordagem eficaz pode ser combinar CNNs e RNNs desta maneira: primeiro usamos camadas de convolução e pooling para reduzir a dimensionalidade da entrada. Isso nos daria uma representação bastante compactada da entrada original com recursos de nível superior. Em seguida, podemos alimentar essa sequência 1D mais curta para as RNNs para processamento adicional. Portanto, estamos aproveitando a velocidade das CNNs e as capacidades representacionais das RNNs ao mesmo tempo. Embora, como qualquer outro método, você deva experimentar isso em seu caso de uso e conjunto de dados específicos para descobrir se é eficaz ou não.

Aqui está uma ilustração aproximada deste 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. =
=                             =
===============================
hoje
fonte
4

FWIW, eu recomendo verificar a Rede Convolucional Temporal deste artigo (eu não sou o autor). Eles têm uma idéia clara do uso da CNN para dados de séries temporais, são sensíveis à ordem do tempo e podem modelar sequências arbitrariamente longas (mas não têm memória).

insira a descrição da imagem aqui

kampta
fonte