ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Е.О. ИВАНОВ Томский государственный университет систем управления и радиоэлектроники [email protected] ПРОЕКТИРОВАНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ МОДЕЛИ ЦЕНТРОБЕЖНОГО НАСОСА Рассматривается моделирование многослойной нейронной сети, обучающейся по методу обратного распространения ошибки, с помощью унифицированного языка моделирования UML. Задача заключается в получении гибкой структуры, сохраняющей оптимальное быстродействие. Спроектированная модель была реализована и апробирована для идентификации напорной характеристики центробежного насоса. Ключевые слова: многослойная сеть, UML, центробежный насос Введение Рассмотрим вопрос моделирования работы водяного насоса для дальнейшего использования модели при построении регулятора. Зачастую, некоторые параметры насоса определяются по экспериментальным или каталожным характеристикам [1], то есть имеют изначально приближенный характер. Также может потребоваться периодическое корректирование параметров модели в результате изменения состояния среды, в которой она работает. Как видно, все это является вероятными предпосылками к увеличению трудоемкости построения таких моделей, а также снижению их качества. Возможным выходом из сложившейся ситуации может стать использование нейронной сети для идентификации конкретного насоса «на месте», то есть на основе данных, получаемых непосредственно с его измерительных приборов. Для построения такой адаптивной модели решено использовать многослойную нейронную сеть, обучающуюся по алгоритму обратного распространения ошибки. Известно, что не существует точных указаний по выбору оптимальной модели нейронной сети (количество нейронов, слоев, вид функции активации и т.д.), способной решать конкретную задачу. Поэтому, исследователю зачастую приходится подбирать оптимальную модель методом проб и ошибок. Ввиду этого, очень важно, чтобы используе112 УДК 004.032.26(08) Нейронные сети ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 мый исследователем инструментарий давал большую свободу в построении нейронной сети. В данной работе автор подходит к проектированию модели многослойной нейронной сети с инженерной точки зрения, с позиций максимизации ее гибкости, не забывая про вычислительную эффективность. Спроектированный инструментарий был реализован и апробирован при моделировании одной из характеристик поведения насоса. Постановка задачи Рассмотрим одну из характеристик центробежного насоса, работающего с переменной частотой вращения, которая называется напором (давлением) и описывается следующим уравнением [1]: H H ô n / ní î ì 2 Sô Q 2 , (1) где Hф и Sф – фиктивный напор при нулевой подаче и гидравлическое фиктивное сопротивление насоса соответственно (постоянные величины для конкретного насоса), n, nном – переменное и номинальное значения частоты вращения насоса, Q – подача насоса (объем жидкости, перекачиваемой за единицу времени). Следовательно, напорная характеристика центробежного насоса есть функция от двух аргументов n и Q. Для построения адаптивной модели насоса на основе данных требуется быстро и качественно обучить многослойную искусственную нейронную сеть с двумя входами (подача Q и частота вращения насоса n), и одним выходом (напор H). В качестве парадигмы обучения был выбран метод обратного распространения ошибки, как наиболее простой, универсальный и распространенный. В настоящее время при создании сложных программных систем широко используется принцип объектно-ориентированного программирования, в котором поведение системы определяется взаимодействием объектов. При этом гибкость этого поведения зависит от того, насколько качественно спроектированы объекты (классы) и связи между ними, а также от правильности распределения ответственности (поведения) между объектами. Для повышения качества проектирования автор будет использовать общецелевой стандартизированный графический язык моделирования UML (Unified Modeling Language), как наиболее распространенный язык моделирования, применяемый для объектно-ориентированных систем. Таким образом, целью данной работы является построение гибкой, УДК 004.032.26(08) Нейронные сети 113 ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 оптимальной (в вычислительном смысле) и достаточной (в смысле инструментария для практического использования) UML-модели нейронной сети в виде набора диаграмм классов для ее применения при идентификации напорной характеристики центробежного насоса. Проектирование нейронной сети с использованием языка UML Базовым классом нейронной сети будет класс (рис. 1), описывающий линейный нейрон и состоящий из обычных для линейного нейрона атрибутов, таких как: вектор весов, количество входов, указание использовать ли пороговый вход и его вес, вспомогательные поля, предназначенные для хранения текущего состояния входов и выходов нейрона (для увеличения производительности). В класс линейного нейрона добавлены методы, инициализирующие его переменные и задающие начальные значения весов случайным образом в определенном диапазоне. Здесь также можно обнаружить метод, вычисляющий линейную комбинацию входных воздействий и методы, изменяющие значения его весов на заданную величину. Отметим, что такая организация элементарной ячейки сети не привязана ни к одной парадигме обучения. Зависимости, описывающие работу насоса, являются нелинейными, поэтому следующим естественным шагом будет расширение линейного нейрона до нелинейного: выход линейного нейрона является входом нелинейной функции активации. Следует отметить следующий важный момент: вид функции активации не задается в самом нелинейном нейроне, вместо этого операции вычисления выхода функции активации (и, как следствие, её производной в точке) делегируются на абстрактный класс функции активации. Зачастую вычислить значение производной в некоторой точке проще на основании выходного значения нейрона (например, к такой методике прибегают при использовании ставшей классической сигмоидальной функции). 114 УДК 004.032.26(08) Нейронные сети ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Рис. 1. UML диаграмма классов для различных моделей нейронов Этот подход реализует абстрактный класс «Функция активации по выходу». Автором также были реализованы часто используемые на практике функции активации, такие как биполярная сигмоидальная функция и функция гиперболического тангенса. Такая схема организации позволяет использовать любую функцию активации, не оказывая влияния на остальную структуру объектов модели сети, и применять оптимальный вариант вычисления значения ее производной на основе выхода нейрона или кэшированного значения индуцированного локального поля. В данной статье автор выбрал в качестве нелинейной функции активации нейрона масштабированную на величину ( 2 ) функцию арк тангенса (с применением ограничений, делающих её однозначной): (2) ( x) ( 2 ) arctg( x t ) Отметим некоторые свойства указанной функции: является монотонной (возрастающей) нелинейной функцией (рис. 2); область значений лежит в интервале (-1; 1); является элементарной, легко дифференцируемой функцией; можно достаточно просто менять крутизну функции, умножая её аргумент на некоторую положительную константу t; УДК 004.032.26(08) Нейронные сети 115 ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 является нечетной функцией. Рис. 2. Масштабированная функция арктангенса Наличие вышеперечисленных свойств позволяет использовать эту функцию как активационную, некоторые из указанных свойств также могут ускорить сходимость алгоритма обратного распространения ошибки. В частности, область значения функции затрагивает отрицательные значения, что (при соответствующем масштабировании ожидаемых выходных значений) может ускорить обучение (на практике было отмечено ускорение обучению немонотонных зависимостей, например, колебательных). Положительное влияние на скорость обучения (согласно [2]) может оказать тот факт, что функция является нечетной. Объединим нейроны в слои, а слои в многослойную нейронную сеть (рис. 3). Такая организация позволит составлять сеть из произвольного набора слоев с линейными и нелинейными нейронами и различными функциями активации. Составив нейронную сеть, введем абстрактный класс учителя, который будет являться реализацией идеи обучения с учителем: предъявление примеров сети и вычисление сигнала ошибки. Как правило, обучение нейронной сети это длительный процесс, поэтому добавим возможность взаимодействия учителя с внешним миром. Общение будем осуществлять с помощью сигналов, позволяющих прервать процесс обучения или узнать причину его останова. 116 УДК 004.032.26(08) Нейронные сети ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Рис. 3. UML диаграмма классов многослойной сети Определим нового учителя, адаптирующего свободные параметры нейронной сети в соответствии с алгоритмом обратного распространения ошибки (рис. 4). УДК 004.032.26(08) Нейронные сети 117 ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Рис. 4. UML диаграмма учителя Отметим, что алгоритм предъявления сети обучающих примеров может варьироваться при сохранении общей парадигмы обучения. Например, для алгоритма обратного распространения ошибки можно использовать последовательный и пакетный режимы обучения, также возможны различные вариации и улучшения, например, изменение порядка представления примеров, использование схемы акцентирования. Поэтому представляется целесообразным делегирование потенциально изменяемой части общего алгоритма в отдельный класс (Учитель эпохи). Наиболее простым (в терминах реализации) и довольно распространенным является режим предъявления обучающих данных случайным образом (Случайный учитель эпохи) на каждой эпохе обучения. Для предотвращения возникновения явления переобучения сети введен класс, реализующий многократную перекрестную проверку (Кроссвалидация) путем разбиения обучающего множества на K подмножеств, каждое из которых поочередно используется для тестирования сети [3]. Ускорить процесс обучения можно, чаще предъявляя сети примеры, с которыми она меньше всего знакома [2]. При этом мерой «знакомства» будет величина ошибки примера на предыдущей итерации обучения. Данный подход получил название схемы акцентирования. При одном проходе эпохи обучения с использованием любого алгоритма предъявления обучающих пар наиболее ошибочные примеры будут организованы в динамический односвязный список ограниченной длины, отсортированный по убыванию ошибки. Это позволит легко определять, должен ли данный пример считаться «плохо» знакомым сети, а также эффективно управлять этим списком. На следующей итерации обучения примеры из списка будут добавлены к основному обучающему множеству, сам список будет очищен, алгоритм повторится. При этом примеры с наибольшей ошибкой будут продемонстрированы дважды (в список будут добавляться только уникальные элементы). Для ускорения сходимости обучения примеры должны быть соответствующим образом подготовлены. Автором были спроектированы и реализованы классы, выполняющие смещение входов так, чтобы среднее значение обучающей выборки было близко к нулю. Также необходимо, чтобы входы были масштабированы на одинаковый интервал для оказания влияния на выход пропорционально силе сигнала. Было реализовано масштабирование выходов обучающего множества 118 УДК 004.032.26(08) Нейронные сети ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 на область значения функции активации, использующейся в нейронах выходного слоя. Для того чтобы сеть могла обучаться примерам, продуцирующим минимальные или максимальные выходные значения (или близкие к ним), а также для ускорения сходимости и преодоления явления насыщения весовых коэффициентов, будем смещать ожидаемый выход от асимптот, ограничивающих область значения функции активации, внутрь этой области на некоторую небольшую положительную величину [2]. Апробация модели Для проверки качества обучения было использовано обучающее множество размерностью 10000 (по 100 значений на каждый входной параметр), полученное по формуле (2). Нейронная сеть включала два скрытых слоя по 12 нейронов каждая. В качестве функции активации использовалась функция арктангенса. К обучающей выборке были применены операции смещения среднего, масштабирования входных значений на интервал [-1; 1]. Ожидаемые выходы были масштабированы на область значений функции активации со смещением от крайних значений на величину 0,1, то есть на область [-0,9; 0,9]. Для предотвращения переобучения использовалась многократная перекрестная проверка с разбиением на 10 подмножеств. Для ускорения сходимости использовалась схема акцентирования с размером списка «плохих» примеров равным 1000 (10% размера всего обучающего множества). Нейронная сеть достигла приемлемой точности (рис. 5) уже через 10 эпох обучения. УДК 004.032.26(08) Нейронные сети 119 ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Рис. 5. График ошибки сети в разрезе эпох На рис. 6 представлен результат сравнения сети (по прошествии 150 эпох обучения) с аналитическим выражением насоса при фиксированном значении частоты n. Как видно, графики практически совпадают. Рис. 6. Сравнение результатов работы нейронной сети и аналитического выражения Заключение 120 УДК 004.032.26(08) Нейронные сети ISBN 978-5-7262-1782-6 НЕЙРОИНФОРМАТИКА-2013. Часть 3 Спроектированная в виде набора диаграмм классов языка UML модель многослойной нейронной сети, обучающейся по алгоритму обратного распространения ошибки, позволяет достичь высокой гибкости в построении необходимой нейронной сети. При решении данной задачи в качестве активационной функции нелинейного нейрона была использована функция арктангенса. Произведена апробация модели на примере идентификации напорной характеристики насоса. Дальнейшие исследования предполагается направить на построение полной модели артезианской скважины (с центробежными насосами) с целью энергоэффективного управления водозабором первого подъема. Список литературы 1. Лезнов Б.С. Энергосбережение и регулируемый привод в насосных и воздуходувных установках. М.: Энергоатомиздат, 2006. 2. LeCun Y., Bottou L., Orr G.B., Müller K.-R. Efficient BackProp // Neural Networks: tricks of the trade. Springer, 1998. C. 9-50. 3. Zhang P. Model selection via multifold cross validation // The Annals of Statistics. 1993, V. 21, No. 1, C. 299-313. УДК 004.032.26(08) Нейронные сети 121