Не так давно в блоге Auriga была опубликована моя статья про распознавание ритмов ЭКГ сверточной нейронной сетью, где было показано, что для надежного распознавания некоторых патологий сердечного ритма может быть достаточно записей с данной патологией даже от 2-3 пациентов. Новая статья показывает на том же материале, что улучшить распознавание можно не только изменением структуры нейронной сети, но и работой со входными данными.
В статье описан опыт применения трёх способов улучшения качества распознавания:
- изменение интервала нарезки данных,
- метод «переноса обучения» (“transfer learning”),
- балансировка мощности классов.
Метод «переноса обучения» основан на предположении, что признаки, которые научилась выделять нейронная сеть при обучении на большом количестве данных в рамках одной задачи, подойдут для решения другой задачи, обычно с меньшим количеством данных. После обучения на дополнительных данных сбрасываются веса завершающих слоев нейросети, а также, в случае разного количества классов в задачах, меняются параметры последнего слоя.
Была использована та же 16-слойная свёрточная нейронная сеть и те же свободно доступные данные ЭКГ с одного отведения (mitdb), которые использовались в предыдущей статье. Дополнительно были использованы размеченные данные соревнования 2017 года с сайта physionet.org, где проводилось обучение для 4 классов на реализациях ЭКГ длительностью от 9 до 60 секунд. Для возможности совместного применения первичные данные (360 отсчётов в секунду) были ресэмплированы в частоту поступления дополнительных данных (300 отсчётов в секунду).
Далее описано применение методов в двух вариантах постановки задачи классификации, как это было в предыдущей статье (с разделением и без разделения данных на обучающие и тестовые). Для варианта без разделения использованы методы (1) и (2). Для варианта с разделением использованы методы (1), (2) и (3).
Вариант без разделения обучающих и тестовых данных по персонам (15 классов ритмов)
Нарезка данных на 5-секундные интервалы вместо 10-секундных (метод 1), как и ожидалось, привела к относительному снижению качества распознавания фибрилляции предсердий (AFIB), однако, добавились ранее не распознававшиеся ритмы NOD и IVR. Это можно объяснить уменьшением обрезков данных, что особенно важно для классов с малым количеством данных. Общий показатель «ranking-based average precision» (RBAP) вырос с 0.968 до 0.975.
Уменьшение интервала нарезки и частоты отсчётов укоротили порцию данных на входе нейросети, что привело к её неработоспособности. Это было скомпенсировано изменением параметров первого слоя (1D-свёртка): размер ядра свёртки уменьшен вдвое, шаг — с 3 до 2.
Для улучшения результата был также использован «перенос обучения» (метод 2) c различным количеством стираемых слоёв. Показатель RBAP вырос до 0.984. Оказалось, что в данном случае оптимально стирание весов не одного-двух слоёв, а 10 или 13 слоёв из 16 (Рисунок 1).
Рисунок 1. RBAP
Вариант с разделением обучающих и тестовых данных по персонам (9 классов ритмов)
Для практического использования ценен именно этот “честный” вариант. При нарезке на 5-секундные интервалы (метод 1) добавилось распознавание ритма IVR, а RBAP вырос с 0.804 до 0.826. Метод «переноса обучения» (метод 2) с оптимальным для данного варианта стиранием весов 10-ти слоёв, добавил распознавание ритма AFL, а RBAP вырос до 0.885.
Значимые результаты были получены только для 6 распознаваемых классов ритмов с применением «переноса обучения». Результаты показаны в Таблице 1:
Отчет по классам | Матрица ошибок | |||||||||
Точность | Полнота | f1-score | support | rhythm | N | AFIB | P | B | AFL | IVR |
0.98 | 0.98 | 0.98 | 342 | N | 334 | 8 | 0 | 0 | 0 | 0 |
0.90 | 0.83 | 0.86 | 260 | AFIB | 4 | 215 | 0 | 1 | 40 | 0 |
1.00 | 0.99 | 1.00 | 638 | P | 0 | 1 | 632 | 0 | 0 | 5 |
0.96 | 0.83 | 0.89 | 58 | B | 0 | 0 | 0 | 48 | 0 | 1 |
0.76 | 0.95 | 0.84 | 132 | AFL | 0 | 0 | 0 | 1 | 125 | 0 |
0.87 | 0.95 | 0.91 | 42 | IVR | 2 | 0 | 0 | 0 | 0 | 40 |
0.95 | 1472 | Метрика Accuracy | ||||||||
0.91 | 0.92 | 0.91 | 1472 | Метрика Macro Average | ||||||
0.95 | 0.95 | 0.95 | 1472 | Средневзвешенное значение | ||||||
0.973 | Ranking-based average precision (RBAP) |
Попытка использовать для обучения все реализации (девять классов ритмов), получившиеся в результате нарезки, вместо использовавшегося ранее выравнивания классов по количеству экземпляров путем прореживания, не удалась: вероятно, сказались слишком большие отличия мощностей классов. Было опробовано как прямое использование данных, так и указание весовых коэффициентов классов, обратных к мощности класса (метод 3). Однако, оба варианта дали результат хуже, чем с выравниванием мощностей классов, с единственным не очень интересным исключением, когда ни «перенос обучения», ни веса классов не используются.
Итак, наилучшим стал описанный выше вариант с 5-секундной нарезкой, выравниванием количества экземпляров в классах при обучении, и с использованием «переноса обучения» (Табл.1).