Научная группа из Московского Энергетического Института провела исследование о наиболее распространённых методах и способах построения нейросетевого программного обеспечения. В данной цикле статей мы расскажем какие знания о нейросетях нужно иметь, если вы решили профессионально разрабатывать нейросети.
Часть первая. Немного о работе с данными
Считается, что четвертая промышленная революция или Индустрия 4.0 (англ. The Fourth Industrial Revolution) — приведёт к массовому внедрению кибертехнических систем в производство и обслуживание человеческих потребностей, включая быт, труд и досуг, а это значит, что завтра ты можешь остаться со свои спагетти-кодом никому не нужным. Выход один-быть на шаг впереди и управлять тем, что когда-нибудь сможет управлять тобой.
Один из классов методов искусственного интеллекта известен как машинное обучение. Важной особенностью решения задач при помощи этого класса является процесс обучения на примерах, которые также называют прецедентами, так или иначе схожих с исходной задачей. Этот класс довольно обширен и существует множество способов, которыми можно производить обучение, например:
Обучение с учителем — для каждого прецедента задаётся пара «ситуация, требуемое решение»
Обучение без учителя — для каждого прецедента задаётся только «ситуация», требуется сгруппировать объекты в кластеры, используя данные о попарном сходстве объектов, и/или понизить размерность данных.
Обучение с подкреплением — для каждого прецедента имеется пара «ситуация, принятое решение», однако подход к обучению отличается от обучения с учителем.
Обучение с частичным привлечением учителя (англ. semi-supervised learning) — для части прецедентов задается пара «ситуация, требуемое решение», а для части — только «ситуация»
Трансдуктивное обучение — обучение с частичным привлечением учителя, когда прогноз предполагается делать только для прецедентов из тестовой выборки
Для решения многих задач часто применяется нейросетевой подход, в том числе активно происходит изучение комплексных систем, в которых искусственные нейронные сети работают с применением других технологий, например, элементами нечёткой логики.
Разработка программного обеспечения как отдельный раздел инженерии является слишком крупным для того, чтобы кратко описать все необходимые этапы в проектировании программного обеспечения высокого качества. Анализ требований, проектирование архитектуры программных средств, их тестирование, внедрение и поддержка – без всего этого невозможна разработка качественного продукта. Кроме того, каждый отдельный случай может быть уникален, поэтому для упрощения мы будем рассматривать наиболее абстрактную модель программного обеспечения.
Зачастую программное обеспечение можно описать как объект, состоящий из трёх компонент: компонента получения или ввода информации, компонента выполнения поставленной задачи и компонента вывода результатов и прочей полезной пользователю информации. В случае программного обеспечения, где в компоненте выполнения задачи используется некая модель для прогнозирования, как, например, в случае нейросетевого программного обеспечения, ясно, что сама модель нейронной сети имеет двоякую природу:
С одной стороны, модель является результатом исследовательской работы – ведь её надо создать, ориентируясь на предоставленные данные;
С другой стороны, готовая модель является лишь инструментом, применяемым на некотором наборе данных.
В связи с наличием двух разных этапов взаимодействия с нейронной сетью (её построение и уже отдельно её применение), разработка программного обеспечения разделяется на две разные задачи, которые требуют разных подходов. При построении модели нейронная сеть требует больших объёмов данных, предусматривающих самые разные случаи поставленной задачи и приведённых в заданном формате. Однако эти объёмы данных могут быть заготовлены разово с последующим применением повторно для разных вариантов модели в процессе обучения. Применение модели для получения непосредственно ответа на поставленную задачу требует объёма данных, достаточного для одного конкретного случая. Этот вариант может предусматривать дополнительную обработку заданных условий, т.к. не всегда конечному пользователю удобно вводить данные в нужном модели формате. При этом первая задача не является видимой для конечного пользователя. Тем не менее, именно от первого этапа зависит итоговый продукт. Основное внимание в данной статье будет уделено именно этому этапу.
Необходимо обратить внимание при изучении методов и способов построения нейросетевого программного обеспечения на:
работу с данными для обучения нейронной сети;
построение нейросетевой модели и её обучение;
тестирование и интерпретация данных.
Работа с данными. Этапы работы с данными
Нейронные сети сильно зависят от качества данных, поэтому данный этап является важным для итогового результата. Данные с большей погрешностью приведут к низкой способности нейронной сети дать пользователю хороший результат, что ведёт к рискам и убыткам. Верно и обратное: правильно подобранные и обработанные данные способны повысить точность нейросетевой модели.
Например при применении метода Two-Elements-Multi-Information-Fingerprints (TEMIF) для обработки данных, на которых потом была обучена CNN-модель, полученные результаты сравнили с другими методами машинного обучения: методом опорных векторов (SVM), случайного леса (RF) и PLS-DA (partial least squares discriminant analysis). Оказалось, что указанный метод обработки данных совместно с использованием CNN-модели превзошёл остальные методы: была достигнута точность в 99.80% при точности 62.67% в случае использования SVM при объединении методов k-средних кластеризации и сингулярного спектрального анализа (SSA) для обработки данных. SSA был применён для декомпозиции данных, а метод k-средних для их последующей кластеризации на группы:
Полученные данные были применены при работе с нейронной сетью Элмана совместно с использованием алгоритма оптимизации IMOPATH. Можно сделать вывод, что предложенный ими метод позволяет строить прогнозные интервалы с высокой вероятностью покрытия истинного значения.
Работа с данными
Работу с данными можно разбить на несколько этапов:
сбор данных из реального мира;
аннотирование или разметка данных;
предварительная обработка и аугментация данных;
разбиение данных на обучающее и тестовое множества.
Разберём каждый из этапов.
Сбор данных
Сбор данных обеспечивается путём изучения открытых источников, кооперацией с различными организациями, ручным сбором данных. Благодаря современным технологиями Интернета вещей (IoT) и умных измерительных приборов этот этап позволяет собрать действительно значительные объёмы данных. Однако данный этап не всегда предоставляет данные в удобном виде, ведь информация из открытых источников может быть приведена в неподходящем формате, а использование нескольких источников приводит к тому, что данные используют совершенно разные форматы. Поэтому становится необходимым изучить полученные данные, по возможности дополнить их или наоборот, удалить из них ненужную информацию.
Аннотирование данных
Аннотация данных – это процесс категоризации данных, в процессе которого данные помечаются. Метка (label) или тэг (tag) – это деталь описания, сообщающая модели, чем является отдельный элемент данных, что позволяет модели обучиться на примере. Аннотация подразделяется в зависимости от того, в каком виде представлены данные:
аннотация текста – это процесс присвоения меток некоторому тексту для его классификации по выбранным параметрам. используется для задач обработки естественного языка.
аннотация изображения – процесс присвоения меток изображениям. используется для задач компьютерного зрения.
аннотация аудио – процесс присвоения меток и транскрипций аудиозаписям и преобразование их в формат, который может понимать модель машинного обучения. используется для задач распознавания речи.
аннотация видео – процесс добавления меток в видеокадры. Используется для задач компьютерного зрения.
Проблемы аннотирования данных состоят в возникновении ошибок при аннотации; риска несогласованности, возникающего, когда разные специалисты указывают разные метки для одного и того же объекта; необходимости экспертных знаний в определённых областях (например, медицине); в высоких затратах времени и труда в виду больших объёмов данных.
Проблема аннотирования данных также привлекает исследователей, которые ищут способ автоматизации процесса при достижении высокой точности. Так, для данной задачи применяют методы обучения без учителя, например, метод k-средних.
Предварительная обработка и аугментация данных
Сбора и аннотирования данных всё ещё недостаточно для полноценной работы. Может потребоваться:
снижение размерности данных – в процессе из данных благодаря рекомендациями эксперта извлекаются лишь важные признаки. в отличие от исходных изображений или аудиозаписей, полученные данные являются более абстрактными, однако они не несут лишней информации;
применение методов машинного обучения – методы опорных векторов, деревьев решений и случайного леса, обученные на подходящих данных, способны решать поставленную задачу. Однако зачастую результаты не идеальны;
приведение к численному виду и нормализация;
применение аугментации данных, которая позволяет генерировать новые данные на основе имеющихся. Этот метод частично решает проблему недостатка данных.
Разбиение данных
Так как модель должна быть не только обучена, но и протестирована, накопленный объём данных необходимо разделить на два отдельных множества – обучающее и тестовое. Это разбиение может происходить как автоматически, так и при помощи некоторого эксперта, который может подсказать, на каких данных модель надо обязательно проверить. Требованием для разбиения данных является разнообразие или репрезентативность. Если, например, обучающее множество будет содержать недостаточное количество данных о каком-то случае, нейронная сеть рискует не обучиться работе с ним. Аналогично, излишнее количество данных об отдельном случае может навредить. Подобная несбалансированность в тестовом наборе приводит к риску получения ошибочных выводов об эффективности модели.
Авторы материала: Гужов С.В., Башлыков М.С., Тороп Д.В.
YDR
ИНС - это инерциальные навигационные системы? или идентификационный номер сотрудника? /s