Скобцов Ю.А, Ткаченко А.В. Программная реализация нейронных сетей для обучения в системах реального времени // Наукові праці Донецького національного технічного університету серія: “Обчислювальна техніка та автоматизація” - випуск 90.-Донецьк : ДонНТУ. – 2005.-с. 119-126. (0.8д.а.)

Программная реализация нейронных сетей
для обучения в системах реального времени


Скобцов Ю.А, Ткаченко А.В.

Донецкий национальный технический университет,

кафедра автоматизированных систем управления





Abstract
Skobtsov Y.A., Tkachenko A.V. Program realization of neural networks for learning in real-time systems. Problem of program realization of artificial neural networks for real-time system is considered. Best methods for neural network training are overviewed. Resilient backpropagation algorithm is considered as one of the most efficient weight adaptation method. Application of conjugate graph for gradient generation is shown. Problem of weight initialization is considered and Ngueyn-Widrow method is applied to give good first approximation. Program library implementing overviewed methods is developed on C. High speed of the library is shown in comparison with Math lab.

Анализ исследований по рассматриваемой проблеме. Существуют два способа реализации искусственных нейронных сетей - аппаратная и программная. Программная реализация, уступая аппаратной по скорости работы и автономности, обладает рядом очевидных преимуществ, связанных с простотой использования и внедрения в информационно-управляющую систему. Несмотря на то, что работы по программной реализации нейронных сетей осуществляются на протяжении более чем 30 лет, найти библиотеку программ позволяющую моделировать и обучать многослойные сети прямого распространения, пригодную для использования в некоторой разрабатываемой системе довольно сложно. Перечислим некоторые средства моделирования доступные в Internet:

  1. Stuttgart Neural Network Simulator [7];
  2. Qnet[8];
  3. NeuroSolutions [9];
  4. Fast Artificial Neural Network Library [10];
  5. Jets Neural Library [11].


Обычно это готовые программные продукты, либо библиотеки программ, написанные под Unix, которые имеют трудности при переносе в Windows.
Самым распространенным инструментом для применения нейронных сетей является Matlab Neural Network Toolbox. Нейронные сети в Matlab, в следствие поставленной цели моделирования широкого класс сетей, имеют громоздкую реализацию и невысокую скорость при решении конкретного класса задач. Кроме того, использование Matlab в системе реального времени затруднительно.
В системах реального времени построение математических моделей управляемых процессов должно быть автоматизировано в максимально возможной степени. Поэтому возникает потребность интегрирования нейросетевого комплекса в систему управления, что позволить повысить ее адаптивные свойства.
Очевидно, что при использовании нейронной сети, наиболее эффективна оптимизированная под данную конкретную задачу программная реализация. Когда требования к скорости обучения высоки, разработка конкретной программной реализации нейронной сети становится необходимостью.
Постановка задачи и цели исследований. Цель данного исследования - разработка библиотеки программ, сокращенно называемой OSNN (On-Line System Neural Network), позволяющей моделировать и обучать 'многослойные нейронные сети прямого распространения в системах реального времени. В качестве языка программирования используется широко известный и легко переносимый на другие платформы язык C++. Для организации обучения будут использоваться методы признанные в настоящее время наиболее эффективными. Под эффективностью алгоритма будем понимать в первую очередь время работы алгоритма, а во вторую объем требуемых ресурсов. В тоже время при одинаковой эффективности предпочтение будет отдаваться алгоритмам более простым в реализации. В качестве возможных функций активации сети будет рассматриваться линейная функция f(u) = u и гиперболический тангенс f(u) = (еu –е-u)/( еu + е-u).
Задача обучения нейронной сети. Задано множество пар векторов {x,d} называемое обучающим множеством, где {х} входной вектор, a {d} желаемый выходной вектор, {у} -множество реакций нейронной сети на вход {х}. Тогда мера разницы между {у} и {d} (Е=||y-d||) называется ошибкой обучения. Используя среднюю квадратичную меру ошибки получим

где S - число обучающих пар, М - размерность выходного вектора. Задача обучения нейронной сети сводится к поиску таких значений весовых коэффициентов wi,j(k), чтобы ошибка обучения Е стала меньше некоторого значения e (E Существует огромное количество алгоритмов обучения нейронных сетей. Для произвольной задачи нельзя заранее сказать какой из них будет наиболее быстрым. Однако для сетей большой размерности (с числом весовых коэффициентов больше 500-1000), лучшие результаты дают методы основанные на применении сопряженных градиентов, и различные эвристические алгоритмы [1,6]. Методы сопряженных градиентов довольно сложны в реализации. Например, метод масштабируемых сопряженных градиентов (scaled conjugate gradient), показывающий лучшие результаты из этого класса методов, требует вычисления производных второго порядка целевой функции [5].


Далее в статье рассматривается метод "неунывающего" обратного распространения RPROP как лучший из эвристических алгоритмов обучения. Также рассматривается метод потоковых графов для генерации градиента целевой функции. Идет речь о методе инициализации весов Нгуена-Видроу и производится сравнительное тестирование разработанной библиотеки программ OSNN и Matlab Release 13.
Основным критерием сравнения программ, который интересует нас при разработки информационно-управляющих систем реального времени, является время обучения. Кроме того, сравнение OSNN и trainrp по количеству итераций позволяет определить лучшую реализацию алгоритма RPROP, в смысле выбора начальных значений и коэффициентов. Сравнение trainrp и trainscg позволит показать эффективность методов для задач различной размерности.
На тестовом наборе SIN OSNN показала значительно лучшие результаты по всем характеристикам: общему времени обучения, времени одной итерации и их количеству. На задаче малой размерности заметно преимущество метода SCG, использующего вторые производные для более быстрой сходимости.
В тесте Cancer время обучения всех программ приблизительно одинаково. Реализация метода RPROP в Mathlab показала результаты по количеству итераций лучше чем OSNN. Это можно объяснить отличной от OSNN реализацией алгоритма начальной инициализация сети, дающее более высокие результаты для слоев с малым количеством нейронов.
В следующем тесте Building OSNN полностью оправдала свою разработку, сократив время обучения более чем в два раза, причем как за счет большей скорости вычислений, так и за счет изменений в реализации RPROP. В этом тесте, как на задаче большой размерности, RPROP наконец, показал свое значительное превосходство над методом SCG.
Выводы. Рассмотрена проблема программной реализации нейронных сетей в системах реального времени. Сделан вывод о необходимости разработки интегрируемой библиотеки программ, позволяющей моделировать и обучать нейронные сети прямого распространения. Рассмотрен алгоритм неунывающего обратного распространения и предложена его эффективная реализация. Изучен способ формирования градиента на основе метода потоковых графов. Рассмотрен алгоритм начальной инициализации весов Нгуена-Видроу. Разработана программная реализация описанных методов в виде библиотеки программ под названием OSNN. Проведено сравнительное тестирование OSNN с реализациями алгоритмов RPROP и SCG на Mathlab.

Литература


  1. Осовский С. Нейронные сети для обработки информации: Пер. с польского. М: Финансы и статистика, 344 с, 2002.
  2. М. Riedmiller, "A direct method for faster backpropagation learning", Proceedings of the 1993 IEEE International Conference on Neural Networks (ICNN '93), Vol. 1, San Francisco, 586- 591.
  3. Nguyen, D., and B. Widrow, "Improving the learning speed of 2-layer neural networks by choosing initial values of the adaptive weights," Proceedings of the International Joint Conference on Neural Networks, vol 3, pp. 21-26, 1990.
  4. RumelhartD.E., HintonG.E., WilliamsRJ. Learninginternal representationsbу error propagation. // Parallel Distributed Processing: Exploration in the Microstructure of Cognition, D.E.Rumelhart and J.L.McClelland (Eds.), vol. 1, Cambridge, MA: MIT Press, 1986. PP. 318 - 362.
  5. Moller, M. F. 'A scaled conjugate gradient algorithm for fast supervised learning', Neural Networks, vol. 6, pp. 525-533, 1993.
  6. Speed and memory comparison: backpropagation (Neural Network Toolbox) http://www.mathworks.com/access/helpdesk/help/toolbox/nnet/backprl4.html.
  7. http://www-ra.informatik.uni-tuebingen.de/SNNS/.
  8. www.qnetv2k.com.
  9. www.neurosolutions.com.
  10. http://farm.sourceforge.net/.
  11. http://www.voltar.org/jneural.