Система прогнозирования на базе нейронных сетей в промышленности

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

Кратко о нейронных сетях


Нейронная сеть представляют собой систему соединённых и взаимодействующих между собой простых процессоров (нейронов).

Рисунок 1. Структурная схема нейронной сети (зеленый цвет – входной слой нейронов, синий – скрытый(промежуточный) слой нейронов, желтый – выходной слой нейронов).


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

Рисунок 2. Схема нейрона.



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

Брифинг


Цель — прогнозирование содержания серы в продукте с максимально возможной точностью, что в свою очередь позволит держать основные технологические параметры в оптимальных значениях как для качества продукта, так и с точки зрения оптимизации процесса.
Единицы измерения — ppm (одна миллионная доля).
Входные данные — исторические значения технологических параметров объекта.
Данные для проверки прогноза сети — ежесуточные лабораторные анализы содержания серы.

Обучение и проверка сетей


Всего было использовано 531 наблюдение, общая выборка была поделена следующим образом: 70% наблюдений выборки использовалось для обучения сети, 30% использовалось в качестве контрольной выборки для оценки качества обучения сети и дальнейшего сравнения сетей между собой. Среднее содержание серы во всех наблюдениях составило 316,7ppm.
Всего по результатам обучения было отобрано 4 сети, сети имеют следующую конфигурацию:
Сеть №1: 20-22-1
Сеть №2: 20-26-1
Сеть №3: 20-27-1
Сеть №4: 20-16-1

Конфигурация сетей представлена в виде AA-BB-C, где AA – количество нейронов во входном слое, BB – количество нейронов в скрытом слое, C – количество нейронов в выходном слое.

Обучение сетей производилось в специализированных пакетах, на данный момент их великое множество (SPSS, Statistica и пр), ниже приведены гистограммы распределения ошибок обученных сетей на всем множестве наблюдений:

Рисунок 3. Гистограмма распределения ошибки для сети №1.

Рисунок 4. Гистограмма распределения ошибки для сети №2.

Рисунок 5. Гистограмма распределения ошибки для сети №3.

Рисунок 6. Гистограмма распределения ошибки для сети №4.


По полученным гистограммам можно сделать вывод, что ошибка сети подчиняется нормальному закону распределения, т.е. можно разделить размер ошибки на 3 области (для упрощения распределение считается нормализованным):


±σ1 (область 1 сигма — величина ошибки в 68% процентах прогнозов находится в данном диапазоне);
±σ2 (область 2 сигма — величина ошибки в 95% процентах прогнозов находится в данном диапазоне);
±σ3 (область 3 сигма — грубые ошибки, промахи, менее чем в 5% процентах случаев, величина ошибки больше, чем в области ±σ2).

Ошибки по областям распределения:
№ сети и ±σ1 (68% прогнозов)
Сеть №1: ±16,4ppm
Сеть №2: ±18,3ppm
Сеть №3: ±19ppm
Сеть №4: ±18,6ppm

№ сети и ±σ2 (95% прогнозов)
Сеть №1: ±43,9ppm
Сеть №2: ±47,6ppm
Сеть №3: ±42,8ppm
Сеть №4: ±41ppm

Причина грубых ошибок (промахов) в области ±σ3 – это работа сети с данными сильно отличающимися от тех, которые присутствовали в обучающей выборке.
Также важным показателем качества обучения нейронной сети является величина средней абсолютной ошибки.

Размер средней абсолютной ошибки:
Сеть №1 — 14,4ppm
Сеть №2 — 13,4ppm
Сеть №3 — 14,3ppm
Сеть №4 — 13,6ppm

Ниже представлены графики зависимости содержания серы в продукте (лабораторный анализ) и величины абсолютной ошибки:

Рисунок 7. График зависимости содержания серы и абсолютной ошибки для сети №1.

Рисунок 8. График зависимости содержания серы и абсолютной ошибки для сети №2.

Рисунок 9. График зависимости содержания серы и абсолютной ошибки для сети №3.

Рисунок 10. График зависимости содержания серы и абсолютной ошибки для сети №4.


Программная реализация


Для просмотра прогнозов в реальном времени использовалась собственная разработка на C#, данные получались от OPC-сервера, изначально было разработано приложение с минимальным набором возможностей (графики, XML-импорт, экспорт графика, добавление произвольного параметра на график), в дальнейшем планируется добавить сохранение истории в БД, сравнение прогнозов сети с реальными историческими значениями по заданным временным отметкам, обучение сетей уже в своем пакете, сравнение сетей между собой и не только.

Рисунок 11. Скриншот первой версии


Выводы


Благоприятные условия работы для сети:

Наименьшую ошибку сеть выдает при содержании серы в конечном продукте в диапазоне 240-250ppm ÷ 400-410ppm (содержание серы, полученное в результате лабораторного анализа, а не прогноза сети), это связано с тем, что большинство измерений было произведено именно в данном диапазоне, и, собственно, на них и была обучена сеть. Нейронные сети имеют способность к обобщению информации, т.е. способны давать прогноз, в том числе основываясь на данных с которыми сеть не работала до данного момента, используя закономерности обучающей выборки, но в данном случае не смотря на такую особенность сети следует помнить, что конечный результат будет малопредсказуем, но с уверенностью можно утверждать что ошибка возрастет.
В случае серьезных изменений на объекте сеть необходимо переобучить.

Пути улучшения:

  • Учет времени реакции
    В силу того что цикл реакции (от момента замера характеристик сырья и его прохождения по всей установке до дальнейшей точки замера характеристик конечного продукта) имеет определенную длительность, то для более высокой корреляции данных требуется точное сопоставления параметров сырья к параметрам продукта, что позволит увеличить точность прогноза.
  • Фильтрация шума
    Показания, замеряемые датчиками, помимо полезной составляющей сигнала также включают в себя шум. Данный шум незначительно, но искажает процесс обучения сети и, соответственно, ее последующие прогнозы как следствие обучения, для этого требует учет шумовой составляющей с последующим добавлением фильтров перед входами нейросети. Также возможна фильтрация выхода нейросети для более плавного изменения прогноза. Спектр фильтров на сегодняшний день достаточно обширен: от простейших фильтров медианы и экспоненты до вейвлетов.
  • Повышение частоты анализов
    Увеличение количества замеров содержания серы в течение дня, что позволит увеличить количество данных для обучения сети и в свою очередь позволит получить более качественную сеть.
  • Повышение точности лабораторного анализа
    При наличии технической возможности, повышение точности анализа (при увеличении точности на порядок) позволит сделать данные более гибкими для сети, т.к. для одного и того же значения серы существует большой разброс независимых параметров, что в свою очередь влечет увеличение ошибки нейросети.
  • Увеличение количества входных переменных
    Хочется отметить, что на самом деле даже незначительная корреляция данных с целевым параметром имеет достаточно большое значение, поэтому следует использовать максимально возможное количество параметров на объекте, а также, возможно, использовать данные с объекта, предшествующего текущему по технологической цепочке.

Резюме


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

Комментарии 8

    +1
    Сеть №1: 20-22-1
    Сеть №2: 20-26-1
    Сеть №3: 20-27-1
    Сеть №4: 20-16-1
    А почему были выбраны именно такие параметры сети? Например разница между 20-26-1 и 20-27-1 практически отсутствует (по идее). Почему не 20-120-1, почему бы не увеличить число hidden layers?

    Также было бы интересно посмотреть на learning curve для вашей системы.

    Заранее извиняюсь за возможные ошибки, я не особенно в теме.
      0
      Поддерживаю. Очень странно увидеть только двуслойные сети, есть ли этому какое-нибудь обоснование?
        0
        Скорее всего, это обычная однослойная нейросеть: варьируется число нейронов скрытого слоя, входных элементов как было 20 — так 20 и осталось. Вроде ничего странного — универсальный аппроксиматор просто делает свое дело.

        Вот чтото глубокое, для такой низкоразмерной задачи — действительно было бы очень странно увидеть :)
      +1
      531 наблюдение * 70% обучающей выборки * 21 поле данных = 7806 датапоинтов. 20 * 27 + 27 = 567 синаптических связей максимум, 20 * 16 + 16 = 336 минимум. В принципе нормально. Но я бы выбрал архитектуру примерно 20-8-3-1.
        0
        В случае серьезных изменений на объекте сеть необходимо переобучить.

        Вообще, как мне кажется, для постоянного использования сети, ее нужно постоянно обучать. Во-первых, это со временем добавит точности предсказаний, а во-вторых, сгладит ошибки на новых данных.
        Еще, как выше писали, поиграйтесь с количеством слоев и с количеством нейронов в скрытых слоях. Возможно, для вашего случая другие сети покажут меньшие ошибки.
          0
          Промазал комментарием. Активное обучение — выход, но надо данные собирать чаще (не всегда возможно на производстве).

          Сложности возникнут только, если появятся новые переменные, которых не было во всех предыдущих данных.
            0
            Да, согласен. Бывает, что методы попроще дают хорошую оценку.
            Я просто в комментарии исходил из того, что автор уже выбрал нейросеть как инструмент для предсказаний.
          +1
          Пока одни предлагают копать глубже (на 20 переменных), я бы предложил обратный ход:
          А вы сравнивали точность работы нейросети с обычной линейной регрессией? На производственных данных она обычно работает очень хорошо. Достаточно хорошо, чтобы демотивировать специалистов по машинному обучению пытаться побить ее результат.

          Еще один момент — сравнив результаты с линейной регрессией, может так получиться, что нейросеть хорошо работает в более густых областях данных, с значительными ошибками на границах их диапазонов. В то же время, линейная регрессия нормально работает «везде», но не так точно в центральной области, где и находятся нелинейности. Можно попробовать сшить две модели: одна работет внутри (нейросеть), другая снаружи.

          И да, у вас не так много данных (common story) и не высокая размерность — использовать глубокие архитектуры здесь не имеет смысла, только оверфитить будете жестче. В то же время, можно попробовать другие методы: SVM, Random Forest, Gradient Boosting. Возможно они, будучи хорошо настроенными, улучшат реультаты нейросетей на 5-10% (но не стоит ждать чуда).

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

          Самое читаемое