Автоматизированная система проектирования искусственной нейронной сети

Авторы статьи: Белявский Г.И., Пучков Е.В., Чернов А.В.

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

perseptron
Рисунок 1. Полносвязный многослойный персептрон

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

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

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

Анализ этапов проектирования искусственной нейронной сети

Определим основные этапы проектирования искусственной нейронной сети, предназначенной для решения прикладной задачи [1].

Предварительная обработка данных

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

Сбор данных

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

Среди методов, позволяющих осуществить хороший отбор признаков можно выделить следующие:

  • кросс-корреляционного анализ;
  • факторный анализ;
  • понижение размерности с использованием самой сети;
  • генетические алгоритмы;
  • box-counting алгоритмы;
  • вейвлет-разложение (wavelet decomposition).

 

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

Очистка и преобразование данных

Основная цель преобразования данных заключается в том, чтобы эти данные измерялись в одних единицах и варьировались в разумных пределах, например, в интервале [0,1] (или [-1,1]). Если данные не обладают этими свойством, то лучше использовать безразмерные данные, выполнив определенные преобразования, например, линейные; с помощью статистических характеристик; с помощью логистической функции; с помощью функции активации нейронов и т.д. Также полезными будут определенные комбинации признаков, такие как произведения, частные и т.д. С помощью них часто можно получить более простую модель.

Построение модели

При построении модели решаются следующие задачи:

  1. Выбор топологии сети (число нейронов, число скрытых слоев, струк­туру связей).
  2. Выбор функции активации нейронов.
  3. Определение весов нейронов.

 

Отметим, что главной проблемой в решении задач с помощью искусственной нейронной сети остается определение ее топологии. Топология сети может быть определена аналитиком или выбрана на основе имеющихся данных, с применением конструктивного либо деструктивного подхода [1,3].

Немаловажную роль в успешном обучении сети играет активационная функция нейронов. Анализ литературы [3,4] позволяет определить перечень наиболее часто используемых функций активации: сигмовидная с выходными значениями в промежутке [0,1], сигмовидная с выходными значениями в промежутке [-1,1], рациональная сигмовидная, гиперболический тангенс, логарифмическая, гауссовская, радиально-симметричная, пороговая, многопороговая, тождественная (линейная), линейная с насыщением, биполярная.

Выделим среди перечисленных функций сигмовидную функцию, которая часто применяется благодаря ее преимуществ: эффективно вычислять производную и ограничивать выходное значение. Использование нечетких функций увеличивает скорость сходимости. Примером может послужить гиперболический тангенс, а добавление к нему небольшого линейного слагаемого позволяет предотвратить эффект паралича сети. Также применяются и другие медленно растущие функции, например  \ln (z+\sqrt{z^2+1}) \ln (z+\sqrt{z^2+1})

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

 \omega_{k+1} = \omega_k+\eta_k\rho_k \omega_{k+1} = \omega_k+\eta_k\rho_k

где вектор задает направление движения, а - размер шага, k– номер итерации.

В основе практически всех алгоритмов обучения лежит оптимизационная задача, а алгоритм обучения – это алгоритм ее решения. В связи с этим необходимо выбрать направление движения и шаг. При этом обычно используются градиентные методы и методы случайного поиска. Для декомпозиции сложной задачи обучения применяется хорошо известный алгоритм обратного распространения ошибки (back propagation error).

В целом методы обучения можно классифицировать следующим образом [3]:

  • Методы нулевого порядка (алгоритм случайного поиска, метод покоординатного спуска, метод многогранника и т.д.).
  • Методы первого порядка (простой градиентный спуск, методы сопряженных градиентов, метод ПАРТАН, BFGS с конечной памятью, комбинированный алгоритм случайного поиска и статистического градиента, RProp, QuiqProp, Delta-delta, Delta-bar-delta и т.д.).
  • Методы второго порядка (метод Ньютона, метод Ньютона-Гаусса, метод Левенберга-Марквардта, алгоритмы квазиньютоновского типа, алгоритм Relax, алгоритм Relch).
  • Нелокальные модификации одноточечных методов (имитация отжига, метод прыгучего шарика, метод СПП (спуск-подъем-перевал), туннельный алгоритм).

 

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

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

Перед тем, как приступить к обучению искусственной нейронной сети, необходимо задать ее начальное состояние. От того, насколько удачно будут выбраны начальные значения весовых коэффициентов, зависит время обучения. Как правило, всем весам на этом этапе присваиваются случайные величины, равномерно распределенные в диапазоне [-A,A]. Однако, как показали эксперименты, данное решение не является наилучшим и в качестве альтернативы предлагается использовать другие виды начальной инициализации, а именно: нормальное распределение и методику Nguyen и Widrow [4]. Предложенные методики позволят на практике добиться лучших результатов, в сравнении с равномерной инициализацией весов.

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

В связи с этим желательно получить несме­щенную оценку способности к обобщению. Это можно сделать с помощью процедуры последовательного спуска (с подтверждающим множеством), N-кратного перекрестного подтверждения или обобщенного перекрестного подтверждение (GCV). Могут быть применены и более мощные информационные критерии (IС), включающие в себя ком­поненту, соответствующую критерию согласия, и компоненту штра­фа, которая учитывает объем обучающего множества и число свободных параметров. В связи с этим, Барроном были пред­ложены следующие информационные критерии: нормализованный IС Акаике (NAIC), нормализованный байесовский IС (NBIC) и ито­говая ошибка прогноза (FPE).

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

Автоматизированная система проектирования искусственной нейронной сети

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

struct_system_proektРисунок 2. Структурная схема автоматизированной системы проектирования искусственной нейронной сети

Предложенная схема реализована на языке высокого уровня C# с применением объектно-ориентированного подхода в среде разработки Microsoft Visual Studio 2008 Express Edition.

В силу сложности автоматизированной системы проектирования искусственной нейронной сети приведем лишь основные классы объектной модели:

  1. Классы, отвечающие за загрузку данных (abstract DataLoader, DataTxtLoader, DataExcelLoader). Классы реализуют процесс формирования исходных данных для искусственной нейронной сети, преобразовывая данные из файла форматов txt и xls с исходной информацией в вид, приемлемый для подачи на вход сети. В итоге после преобразования все данные для обучения содержатся в объектах типа DataTable (InputData, TargetData), которые служит в дальнейшем для формирования обучаемого, тестового и контрольных множеств (TrainData, TestData, ControlData).
  2. Классы, отвечающие за пред- и постобработку данных (abstract Normalization, NormalizationLogistic, NormalizationLinear, NormalizationDispersion, NormalizationNone). Классы реализуют способы нормализации: линейный, с помощью статистического преобразования, с помощью логистической функции. Процесс нормализации и денормализации осуществляют методы Normalaze(double x) и DeNormalaze(double y).
  3. Классы, отвечающие за архитектуру сети (Net, Layer, Neuron). После того, как создается объект класса Net, создаются списки слоев List<Layer> layers и нейронов List<Neuron> neurons, а также вызывается конструктор, который строит архитектуру сети «по умолчанию». Список слоев находится на уровне класса Net, а список нейронов на уровне класса Layer. В результате можно увеличивать или уменьшать количество слоев и нейронов благодаря реализованной функции Init(), обращаясь к объекту класса Net. Автоматический подбор количества нейронов скрытого слоя происходит на основании объединенной теоремы Колмогорова–Арнольда–Хехт–Нильсена.
  4. Классы, отвечающие за активационные функции (abstract Activation, ActivationImaginary, ActivationZeroWeight, ActivationSigmoid, ActivationGauss, ActivationHyperbolicTangent). Классы содержат параметры и методы расчета значений этих функции. Классы ActivationImaginary, ActivationZeroWeight являются служебными и необходимы для работы с входным слоем и нейронами смещения.
  5. Классы, отвечающие за первичную инициализацию весов (abstract InitWeights, InitWeightsUniform, InitWeightsNormal, InitWeightsWidrow, InitWeightsSegment).
  6. Классы, отвечающие за критерии согласия и информационные критерии. Первая группа классов, наследованных от абстрактного класса PerformanceMesure, реализует критерии согласия. Вторая группа классов, наследованных от абстрактного класса ComplexityPenalty, реализует штрафные слагаемые, используемые при регуляризации сложности [4] и в расчете информационных критериев.
  7. Классы, отвечающие за «учителей» искусственной нейронной сети, в зависимости от типа задачи: классификации или прогнозирования (abstract Trainer, TrainerClassification, TrainerPredication). С помощью метода Training () происходит организация всей логики обучения. Для этого используются два метода класса Net, GoForward(DataVector input) и GoBack(DataVector target), реализующих прямой и обратный проход алгоритма обратного распространения ошибки.
  8. Классы, отвечающие за алгоритмы обучения искусственной нейронной сети (методы оптимизации функции ошибки). Реализованы следующие методы: простой градиентный спуск, методы сопряженных градиентов, квазиньютоновские методы. Классы, наследуемые от абстрактного класса Hessian, реализуют расчет матрицы Гессе, используемую в квазиньютоновских методах и при реализации прореживания синаптических весов искусственной нейронной сети.

ierarx_classovРисунок 3. Иерархия классов, реализующая алгоритмы обучения искусственной нейронной сети

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

В результате разработки системы реализовано:

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

 

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

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

Прогнозирование выручки предприятия

Финансовое прогнозирование является одной из основных задач, решаемых с помощью искусственных нейронных сетей, поэтому для тестирования разработанной системы проведен прогноз выручки одного из крупных предприятий юга России. Данного рода анализ необходим в ходе мониторинга банками кредитного риска заемщиков. В качестве данных выбран временной ряд, содержащий значения выручки предприятия  с 01.04.2006 по 01.01.2009 с интервалом 1 квартал (итого 12 наблюдений). Выполнен прогноз на 01.04.2009 и 01.07.2009 и сопоставлен с уже имеющимися данными.

Таблица 1. Результаты прогнозирования на 01.04.2009 и 01.07.2009

Дата Факт Сеть Ошибка прогноза в %
01.04.2009 2181030,7 1924404,8 12
01.07.2009 7592538,2 5571196,9 27
Средняя ошибка прогноза 19

 

Отметим, что прогноз оказался достаточно точным (таблица 1) при таком небольшом объеме исходных данных. Прогноз на 01.04.2009 оказался точнее, чем на 01.07.2009. Это связано с тем, что при проведении многошагового прогнозирования в качестве исходных данных берутся спрогнозированные значения, вследствие чего накапливается ошибка. Ошибка на обучающем множестве составила 1,4 %. Следует отметить, что в ходе проведения экспериментов с разработанной системой NeuroNADS [5] была получена ассамблея сетей, на основании которых и определялись окончательные результаты.

Заключение

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

Список использованных источников:

  1. Бэстен Д.-Э. и др. Нейронные сети и финансовые рынки.– М.: ТВП, 1997. – 236 с.
  2. Пучков Е.В. Разработка среды моделирования искусственных нейронных сетей. Решение задачи прогнозирования временного ряда.// Вестник Ростовского государственного университета путей сообщения. – 2009. – №2. – С. 44-50.
  3. Тархов Д.А. Нейронные сети. Модели и алгоритмы. – М.: Радиотехника, 2005. – 256 с.
  4. Хайкин С. Нейронные сети: полный курс. 2-е изд. М.: Вильямс, 2006. – 1104 с.
  5. http://www.i-intellect.ru (дата обращения: 30.05.2010)

 

Опубликовано в: Международный журнал "Программные продукты и системы", Тверь, №2, 2011, с. 30 - 34.