Это хорошая идея использовать CNN для классификации 1D сигнала?


20

Я работаю над классификацией стадии сна. Я читал некоторые исследовательские статьи на эту тему, многие из них использовали SVM или метод ансамбля. Является ли хорошей идеей использовать сверточную нейронную сеть для классификации одномерного сигнала ЭЭГ?
Я новичок в такой работе. Простите, если я спрошу что-то не так?


1D-сигнал может быть преобразован в 2D-сигнал путем разбиения сигнала на кадры и получения FFT каждого кадра. Для аудио это довольно редко.
MSalters

Ответы:


23

Я предполагаю, что под 1D-сигналом вы подразумеваете данные временных рядов, где вы предполагаете временную зависимость между значениями. В таких случаях сверточные нейронные сети (CNN) являются одним из возможных подходов. Наиболее популярный подход нейронной сети к таким данным - использование рекуррентных нейронных сетей (RNN), но вы можете альтернативно использовать CNN или гибридный подход (квазикуррентные нейронные сети, QRNN), как обсуждалось в Bradbury et al (2016) , а также показано на их рисунке ниже. Существуют и другие подходы, например использование только внимания, например, в сети Transformer, описанной Vaswani et al. (2017) , где информация о времени передается с помощью функций ряда Фурье .

введите описание изображения здесь

При использовании RNN вы должны использовать ячейку, которая принимает в качестве входных данных предыдущее скрытое состояние и текущее входное значение, чтобы возвращать выходные данные и другое скрытое состояние, чтобы информация проходила через скрытые состояния . В CNN вы будете использовать скользящее окно некоторой ширины, которое будет выглядеть в определенных (изученных) шаблонах в данных, и размещать такие окна друг над другом, чтобы окна более высокого уровня искали шаблоны внутри более низкого уровня. узоры. Использование таких скользящих окон может быть полезно для поиска таких вещей, как повторяющиеся шаблоны в данных (например, сезонные модели). Слои QRNN смешивают оба подхода. Фактически, одно из преимуществ архитектур CNN и QRNN заключается в том, что они работают быстрее, чем RNN .


12

Конечно, вы можете использовать CNN для классификации 1D сигнала. Так как вы заинтересованы в классификации стадии сна, смотрите эту статью . Это глубокая нейронная сеть, называемая DeepSleepNet, и использует комбинацию 1D сверточного и LSTM слоев для классификации сигналов ЭЭГ по стадиям сна.

Вот архитектура:

DeepSleepNet

Сеть состоит из двух частей:

  • Представительные уровни обучения: состоят из двух сверточных сетей параллельно. Основное различие между двумя сетями - это размер ядра и максимальный размер окна пула. Левый использует размер ядра =Fs/2 (где Fs частота дискретизации сигнала), тогда как справа используется размер ядра = Fs×4, Интуиция в этом заключается в том, что одна сеть пытается изучить «точные» (или высокочастотные) функции, а другая - «грубые» (или низкочастотные) функции.
  • Последовательные уровни обучения . Вложения (или изученные признаки) из сверточных слоев объединяются и подаются в слои LSTM для изучения временных зависимостей между вложениями.

В конце есть 5-полосный слой softmax, чтобы классифицировать временные ряды в один из пяти классов, соответствующих стадиям сна.


4

Я хочу подчеркнуть использование комбинированного подхода (CNN + RNN) для обработки длинных последовательностей :

  • Как вы, возможно, знаете, одномерные CNN не чувствительны к порядку временных шагов (не дальше локального масштаба); конечно, путем укладки большого количества слоев свертки и объединения слоев друг на друга, конечные слои могут наблюдать более длинные подпоследовательности исходного ввода. Однако это не может быть эффективным подходом к моделированию долгосрочных зависимостей. Хотя CNN очень быстр по сравнению с RNN.

  • С другой стороны, RNN чувствительны к порядку временных шагов и поэтому могут очень хорошо моделировать временные зависимости. Однако известно, что они слабы при моделировании очень долгосрочных зависимостей, где временной шаг может иметь временную зависимость с временными шагами очень далеко назад во входных данных. Кроме того, они очень медленные, когда количество временных шагов велико.

Таким образом, эффективный подход может состоять в том, чтобы объединить CNN и RNN таким образом: сначала мы используем слои свертки и объединения, чтобы уменьшить размерность входных данных. Это дало бы нам довольно сжатое представление исходного ввода с функциями более высокого уровня. Затем мы можем передать эту более короткую одномерную последовательность в RNN для дальнейшей обработки. Таким образом, мы одновременно используем скорость CNN, а также возможности представления RNN. Хотя, как и любой другой метод, вы должны поэкспериментировать с этим в вашем конкретном случае использования и наборе данных, чтобы выяснить, эффективен он или нет.

Вот примерная иллюстрация этого метода:

--------------------------
-                        -
-   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, я рекомендую проверить Временную сверточную сеть из этой статьи (я не автор). У них есть хорошая идея использования CNN для данных временных рядов, они чувствительны к временному порядку и могут моделировать произвольно длинные последовательности (но не имеют памяти).

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.