Обработка сигналов мозга традиционно привлекала исследователей к тщательной очистке данных и извлечению признаков, но последние методы продемонстрировали возможность разработки моделей ИИ, которые берут на себя эту ответственность в своей нейронной архитектуре. В этой серии руководств я демонстрирую эффективность и практическое применение методов компьютерного зрения для извлечения информации из сигналов мозга. В предыдущем уроке я продемонстрировал, как извлекать, распаковывать и визуализировать набор данных ЭЭГ. Здесь мы начнем с изучения шагов простого извлечения признаков и одномерного моделирования, чтобы понять отличие от компьютерного зрения.

Общая картина

Исследования и разработки в области распознавания мозга проходят мимо проверки концепции и приближаются к реализации потребительского уровня. Исследователи из Accenture Labs начали внедрять конкурентоспособные инновации в космос. Такие отраслевые перспективы определяют нейронауку как услугу, которая ссылается на разработки в области цифровых и точных медицинских услуг. Партнеры Accenture, такие как Immersion Neuroscience и BehaVR, инвестируют в будущее психического здоровья и персонализированных услуг обучения, основанных на неинвазивном точном биосенсоре. На местах новая техническая методология обучения систем ИИ была сосредоточена на балансировании естественного сбора данных с эффективностью сквозной обработки. Методы компьютерного зрения могут повысить производительность и эффективность. Мы рассмотрим, как это сделать, в этой серии руководств.

Скачивание данных

Чтобы мы начали, перейдите по ссылке на блокнот выше и следуйте коду вместе с этим блогом. Настройте сеанс Google Colab на работу с графическим процессором для простоты использования. Каждая бесплатная учетная запись должна иметь ограниченный доступ к графическому процессору.

Первым шагом будет запуск первых трех разделов, которые установят зависимости, загрузят и загрузят набор данных ЭЭГ в память. В предыдущем уроке мы видели, как мы можем собрать набор данных, распаковать его и организовать самостоятельно, но здесь мы начинаем с прямого доступа к нему.

Этот набор данных является частью набора данных электроэнцефалограммы Naturalistic Music — Tempo (NMED-T), опубликованного Losorelli et al., (2017). Данные представляют собой сигналы мозга людей, когда они слушают музыку.

Визуальный осмотр

Далее давайте запустим ячейку кода, которая поможет нам визуально проверить наш набор данных. Это нужно делать с каждым набором данных, чтобы не только убедиться, что вы загрузили правильный набор данных, но и получить визуальное представление о том, как он выглядит. Здесь мы видим 1 секунду данных мозга, пока участник слушает «First Fires — Bonobo». В ячейке кода вы можете вручную исследовать это, изменив номер индекса с «10», чтобы проверить другие образцы. Это рекомендуется, чтобы понять, как выглядит разнообразие сигналов мозга.

Создать целевые ярлыки

В следующем разделе ячейки кода используются для создания целевых меток для классов «Песни» и «Участник». Эти метки — это то, что мы используем для отображения наших данных обучения во время обучения с учителем. Благодаря этому мы можем обучить наши модели классифицировать данные на основе песни, которую они слушали, или мозга конкретного участника. Здесь я показываю, какой код используется для создания меток, но в следующем уроке он будет доступен нам посредством простой загрузки.

Извлечение функций

Теперь мы готовы исследовать некоторые особенности извлечения. Это одновременно процесс преобразования и понимания данных путем изучения того, как информация представлена ​​посредством абстракции.

Начнем с огибающей Гильберта выбранного нами канала записи. Это обычный этап обработки сигналов при работе с временными рядами, такими как сейсмические землетрясения, музыка и данные мозга. Проще говоря, огибающая Гильберта дает нам среднее значение амплитуды сигнала во времени. Это часто используется для облегчения обработки сигнала в машинном обучении и для простого шумоподавления.

Здесь вы можете видеть, что сигнал выглядит очень похоже. Основные изменения заключаются в том, что новый сигнал теперь расположен по центру, а значения амплитуды находятся только на положительной оси. Ячейки кода, следующие за этой визуализацией в записной книжке, затем преобразуют все ваши данные ЭЭГ в копию преобразований конверта Гильберта. Это будет использоваться для тестирования моделей машинного обучения.

Более простые модели машинного обучения не могут обрабатывать сложные данные и нуждаются в том, чтобы сигнал сводился к одному, но информативному числу. В следующей ячейке кода мы получаем одно информативное число, взяв среднеквадратичное значение (RMS) канала записи. Эта метрика представляет собой аппроксимированное рассеивание мощности функции, изменяющейся во времени. Другими словами, это показатель средней мощности для представляющего интерес электрического тока, например, сигналов мозга.

Затем мы наносим на график распределение среднеквадратичных значений для 1-секундного интервала времени, чтобы увидеть, как рассеиваемая мощность меняется по каналам записи. Всего на скальпе участника имеется 125 каналов записи, и здесь мы видим, что их значения RMS нормально распределены с сильным перекосом влево, а некоторые каналы дают высокие значения. Если бы распределение было более жестко равномерным, то это могло бы свидетельствовать о том, что размерность каналов не очень информативна и что, возможно, было бы проще усреднять данные в один канал. Поскольку мы видим некоторую интересную изменчивость среднеквадратичной частоты по каналам, мы будем использовать ячейки кода в записной книжке, чтобы затем создать среднеквадратичную версию наших данных.

Наконец, давайте рассмотрим извлечение признаков, которые обычно связаны со сложными звуковыми сигналами, такими как музыка. Здесь у нас есть способ получить коэффициенты кепстра Mel-Frequency (MFCC), который выводит одномерный массив. Это функция, которая приближает краткосрочный спектр мощности звука к шкале мел. Вы можете думать об этом как о измерении частоты второго порядка, подобно переходу от измерения скорости первого порядка к измерению скорости второго порядка. Шкала Mel относится к преобразованию сигнала в то, как звук воспринимается людьми, где определенные частоты имеют более сильное представление, чем другие, имея в виду то, что мы считаем слышимым и воспринимаемым сигналом.

Полученная нами функция MFCC выглядит достаточно сложной, чтобы служить в качестве признака обучающих данных. Этот тип извлечения признаков сталкивается с одним основным ограничением. Доступное разрешение записи зависит от частоты дискретизации сигнала. Здесь частота дискретизации составляет 125 Гц, что находится на нижнем уровне, поэтому мы должны отметить, что отсутствие разрешения записи может ограничить эффективность извлеченных функций.

Эти коэффициенты можно представить в виде штрих-кода, если посмотреть на мощность в децибелах. В конечном итоге это хорошая аналогия того, что происходит с машинным обучением и извлечением признаков. Мы берем то, что имеет более высокую размерность, и сводим его к более простым, но информативным представлениям, которые затем могут интерпретироваться конкретными алгоритмами.

Загрузить данные MFCC

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

Одномерное машинное обучение

Во-первых, давайте попробуем простое моделирование машинного обучения. Цель состоит в том, чтобы получить первоначальное представление о том, что могут сделать для нас более простые и традиционные методы. Традиционное машинное обучение обычно зависит от того, заранее ли исследователи выполняют извлечение признаков. Это упрощает вычисления моделей, поскольку мы уменьшаем размерность данных и определяем существенные функции, которые нам важны. Мы уже рассмотрели несколько анализов, которые делают это путем шумоподавления сигнала, уменьшения размерности и измерения частотных составляющих.

Сначала давайте начнем с изучения обучения одномерной модели. Для этого мы будем использовать значения среднеквадратичного значения в качестве нашего предиктора для целевых классов названия песни с простой моделью логистической регрессии для классификации.

Запуск одномерного предиктора с использованием среднеквадратичного значения для каждого канала записи, чтобы предсказать, какую песню кто-то слушает, с помощью модели логистической регрессии дает нам плохую производительность. Случайный шанс для классификации составляет 20%, а проверка модели показывает 21,34%, что, по крайней мере, лучше, чем случайный шанс, но нежелательный результат.

Далее давайте попробуем выполнить ту же процедуру обучения, но вместо того, чтобы пытаться предсказать названия песен, давайте попробуем предсказать, из мозга какого человека поступают данные.

Снова мы видим низкую производительность, где случайный шанс составляет 5%, а производительность проверки нашей модели составляет 6,4%. Хорошая новость заключается в том, что модель, по крайней мере, пытается учиться, но у нее это просто не получается. Это может быть по нескольким причинам, но наиболее очевидная гипотеза заключается в том, что сведение сложного сигнала, такого как данные мозга, к одному числу стирает слишком много информации.

Далее давайте попробуем классифицировать наши данные с помощью векторных массивов. Здесь мы будем использовать кепстральные коэффициенты Mel-Frequency в качестве предикторов и те же модели логистической регрессии. Давайте посмотрим, может ли иметь более 1 числа, но не моделировать его как двумерное представление, лучшие результаты.

Похоже, даже наши массивы MFCC не дают лучших результатов. Производительность проверки по-прежнему зависит от случайности.

Одномерное глубокое обучение

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

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

Затем мы используем Tensorflow с API Keras для определения нашей нейронной сети. Представленная здесь архитектура представляет собой простую одномерную сверточную нейронную сеть (CNN). Эта модель имеет 3 слоя CNN, которые выполняют работу по извлечению признаков, за которым следует слой Global Average Pooling (GAP), используемый для уплотнения размерности данных. Наконец, это затем отображается на выходной слой, который представляет собой просто размер любого количества классов, которые мы хотим классифицировать. В нашем случае у нас есть всего 5 песен, которым соответствует мозговой сигнал.

В следующей ячейке кода устанавливаются параметры обучения, и запуск кода запускает процесс глубокого обучения. Убедитесь, что сеанс colab настроен на GPU, иначе этот процесс может занять гораздо больше времени.

На приведенном ниже графике показано увеличение точности в разные эпохи обучения модели. Мы только тренировали его в течение 25 эпох в качестве демонстрации. Типичное глубокое обучение требует обучения от сотен до тысяч эпох. Но даже с 25 эпохами мы видим, что обучение начинает выходить на плато. Это означает, что мы можем ожидать увеличения производительности после сотен эпох, но это увеличение не будет намного выше. В нашем случае модель глубокого обучения работала лучше, чем логистическая регрессия, но незначительно.

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

Заключение

В этом руководстве мы узнали, как исследовать извлечение признаков, и сравнили простое машинное обучение с простым глубоким обучением. Представление наших данных в одном измерении в виде одномерной метрики или векторного массива не дало высоких результатов. До сих пор наши усилия были направлены на обучение навыкам Data Science и изучение темы. В следующем уроке мы, наконец, перейдем к более продвинутым методам глубокого обучения и увидим, как представление временных рядов, таких как сигналы мозга, в виде изображения может повысить точность.