Обработка сигналов с помощью нейронных сетей: валидация в проектировании нейросетей

Добавлено 6 февраля 2020 в 18:52
Нейронные сети перцептрон для начинающих  (содержание)

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

Мы продолжаем серию статей о проектированию нейронных сетей и рассмотрим валидацию в нейросетях, и как работают нейросети при обработке сигналов.

Суть нейросетевой обработки сигналов

Нейронная сеть принципиально отличается от других систем обработки сигналов. «Обычный» способ достижения какой-либо цели обработки сигнала – это использование какого-либо алгоритма.

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

Рисунок 1 КИХ-фильтр является примером системы обработки сигналов, которую мы можем точно оценить и понять математически
Рисунок 1 – КИХ-фильтр является примером системы обработки сигналов, которую мы можем точно оценить и понять математически

Обученная нейронная сеть, напротив, является эмпирической системой.

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

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

Рисунок 2 Нейронная сеть, в отличие от КИХ-фильтра, зависит от множества различных факторов
Рисунок 2 – Нейронная сеть, в отличие от КИХ-фильтра, зависит от множества различных факторов

Это как разница между изучением языка в детстве и изучением языка во взрослом возрасте.

Ребенок, который никогда даже не слышал слова «грамматика», может постоянно создавать правильные формы глаголов, потому что его или ее мозг естественным образом распознал и сохранил закономерности, содержащиеся в огромном количестве исходных лингвистических данных, которые дети получают от взрослых людей, с которыми они взаимодействуют.

Взрослые же обычно не имеют доступа ко всем этим данным и могут не впитывать шаблоны таким же образом, и, следовательно, мы запоминаем и реализуем лингвистические «алгоритмы», которые позволяют нам правильно спрягать глаголы и выбирать времена.

Важность валидации

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

Представьте себе англоязычных детей, которые говорят «goed» вместо «went» или «holded» вместо «held». Это называется ошибками переобучения. Они выбрали шаблон -ed для прошедшего времени, но по какой-то причине (может быть, недостаточности данных или когнитивных особенностей) они еще не усовершенствовали свою лингвистическую модель для учета глаголов, которые являются неправильными в прошедшем времени.

Никто, конечно, не собирается осуждать четырехлетнего ребенка за то, что он сказал: «I goed to the park». Но если бы видный политик выступал с важной речью и неоднократно повторял «goed», «holded», «finded, «knowed» и т. д., аудитория была бы серьезно недовольна (или крайне озадачена), и политическая карьера спикера могла бы внезапно закончиться.

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

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

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

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

Пройдемся по терминологии

Процедура, которую я называю «валидация», также может называться «верификация» или просто «проверка».

В контексте разработки программного обеспечения первые два термина имеют разные значения. Википедия, ссылаясь на Барри Бома, говорит, что верификация направлена на то, чтобы определить, правильно ли производится сборка продукта, а валидация направлена на определение, правильно ли продукт был собран. Поскольку обе эти проблемы важны, вы можете встретить аббревиатуру «V&V» («verification and validation»).

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

Заключительные мысли: что точно значит «валидация»?

Ну, это зависит от обстоятельств.

Например, НАСА опубликовало довольно длинный документ, озаглавленный «Verification & Validation of Neural Networks for Aerospace Systems». Если вы интересуетесь нейронными сетями больше, чем я, вы можете начать с этого документа. Если вы настоящий фанат V&V, вам следует посмотреть книгу «Methods and Procedures for the Verification and Validation of Artificial Neural Networks»; ее объем составляет 293 страницы и, безусловно, превышает мои знания по этой теме как минимум на три порядка.

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

Мы рассмотрим конкретные методы валидации в следующих статьях.

Теги

ВалидацияМашинное обучение / Machine LearningНейросеть / Нейронная сетьПереобучение / Перетренировка

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.