Современные информационные технологии/2.Вычислительная
техника и программирование
С.Н. Данилин, М.В. Макаров, С.А. Щаников
Муромский
институт Владимирского государственного университета
602245, г.
Муром, Владимирской обл., ул. Орловская, 23
E-mail: nauka-murom@yandex.ru
Аппроксимация базовых математических функций с использованием
нейросетевых алгоритмов
Решение многих практических задач, стоящих перед разработчиками современных систем обработки информации, сдерживается эффективностью вычислительной техники текущего уровня развития. Особенно заметно ограниченность возможностей вычислительной техники с классической фон-неймановской архитектурой проявляется в случаях многократного увеличения размерности пространства решений или необходимости резкого сокращения времени получения результата. Успешный выход из подобных ситуаций оказывается возможным при использовании вычислительных средств, работающих в нейросетевом логическом базисе [1].
К важнейшим
базовым задачам, решаемым компьютером, относится вычисление простейших
(элементарных) математических функций. Рассмотрим в качестве примера вычисление
(аппроксимацию) в нейросетевом логическом базисе функций и .
Основными
этапами синтеза нейронной сети (НС) являются подбор необходимого количества
слоёв для НС, определение числа нейронов и функции активации в каждом слое,
обучение НС по выбранному критерию оптимизации.
В процессе
исследований для каждой функции синтезировались двухслойные нейронные сети
прямого распространения с полными связями. Были выбраны следующие функции
активации: для первого слоя – сигмовидная ; для второго слоя – линейная .
В качестве
инструментального средства исследований использовался пакет прикладных программ
Neural Network Toolbox
версии 4, функционирующий под управлением ядра системы Matlab версии 6.5.
Процесс обучения нейронных сетей – это минимизация функционала оптимизации. В качестве такого функционала использована сумма квадратов отличий реальных значений аппроксимируемых функций и результатов, полученных с помощью нейронной сети:
(1)
В качестве
алгоритма обучения использовался алгоритм Левенберга-Маркварта, дополненный
регуляризацией по Байесу. Данный алгоритм находит широкое применение при
решении задач аппроксимации нелинейных зависимостей. Он выполняет процедуру
обучения, если функции взвешивания, накопления и активации имеют производные. В
отличие от других алгоритмов, здесь используется метод регуляризации, который
позволяет успешно справится с
проблемой переобучения путём минимизации комбинированного функционала качества
обучения, учитывающего не только сумму квадратов ошибок обучения, но и квадраты
весов. Для вычисления якобиана функционала качества по переменным веса и
смещения применён метод обратного распространения ошибки [2].
Исследуемая
структура нейронной сети представлена на рисунке 1.
При использовании нейронных сетей математическое выражение аппроксимируемых
функций запишется следующим образом:
(2)
где - входное значение сети.
Рассмотрим
задачу аппроксимации функции вычисления квадратного корня в интервале значений
аргумента [0..1] с шагом 0,05.
Входной сигнал
нейронной сети для вычисления функции квадратного корня x=[0,…,xi,…,X]=[0;0,05;0.1;…;1].
Выходной сигнал
нейронной сети – набор аппроксимированных нейронной сетью значений функции
квадратного корня y.
Желаемый
выходной сигнал нейронной сети – это набор значений функции квадратного корня , полученный с помощью использования стандартной функции sqrt(x),
входящей в состав пакета Matlab, при указанных выше значениях
x.
Зависимость значения функционала оптимизации и абсолютной погрешности аппроксимации от числа нейронов в первом слое приведена в таблице 1.
Таблица 1. Зависимость точности аппроксимации функции от числа нейронов в первом слое.
Число нейронов в первом слое |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
SSE |
0,021 |
2*10-4 |
8,67*10-7 |
1,04*10-8 |
8,44*10-10 |
6,3*10-11 |
2,57*10-11 |
1,8*10-12 |
Макс. абс. погрешность |
0,1 |
0,0075 |
4,5*10-4 |
5,5*10-5 |
1,5*10-5 |
3,8*10-6 |
2,8*10-6 |
0,6*10-6 |
Синтезированная
нейронная сеть с пятью нейронами в первом слое и одним во втором обеспечивает
абсолютную погрешность 1,5*, что уже лучше погрешности алгоритмов (), построенных по классической схеме преобразования [3-6].
Использование
восьми нейронов в первом слое позволяет снизить погрешность на два порядка (рисунок
2) и достичь результата порядка ().
Рисунок 2. Погрешность аппроксимации функции при восьми нейронах в
первом слое.
Рассмотрим задачу аппроксимации функции вычисления обратного числа в интервале значений аргумента [1..100] с шагом 0.5.
Зависимость значения функционала оптимизации и абсолютной погрешности аппроксимации от числа нейронов в первом слое приведена в таблице 2.
Таблица 2. Зависимость точности аппроксимации функции y=1/х от числа нейронов в первом слое.
Число нейронов в первом слое |
2 |
3 |
4 |
5 |
6 |
SSE |
5,36* |
3,47* |
1,6* |
6,37*10-12 |
5,42* |
Максимальная абсолютная погрешность |
1,6* |
0,95*10-6 |
9* |
6,5* |
0,6* |
Синтезированная
нейронная сеть с пятью нейронами в первом слое и одним во втором обеспечивает
абсолютную погрешность аппроксимации 6,5*10-7, что лучше погрешности
алгоритмов (2,2*10-6), построенных по классической схеме
преобразования [3-6].
Использование
шести нейронов в первом слое позволяет снизить погрешность на целый порядок
(таблица 2) и достичь результата порядка (0,6*10-8). К тому же, быстродействие обученной
нейронной сети составляет, как и в первом примере, всего 2 машинных цикла, что
практически на порядок меньше любых известных последовательных алгоритмов
вычисления рассматриваемых функций.
Рисунок 3. Погрешность
аппроксимации функции y=1/х
при шести нейронах в первом
слое.
Как показано на рисунке 3 максимальная погрешность аппроксимации на
промежутке от 1 до 100 составляет 0,6*10-8.
Таким образом,
предлагаемый нейросетевой алгоритм значительно превосходит по своей эффективности
известные алгоритмы, построенные по традиционной последовательной схеме
вычисления. Достигнутого значения точности аппроксимации и времени
преобразования более чем достаточно для большинства практических случаев.
Дальнейшее повышение точности легко осуществимо путём увеличения числа нейронов
в первом слое, при этом аппаратные затраты возрастают незначительно, а время
преобразования остаётся прежним.
1. Нейроматематика. Кн.6: Учеб. Пособие
для вузов./ Под ред. А.И. Галушкина. – М.: ИПРЖР, 2002. - 448 с. (Серия
Нейрокомпьютеры и их применение).
2. Медведев В.С., Потемкин В.Г. Нейронные
сети. MATLAB 6. / Под общ. ред. В.Г. Потемкина. – М.: ДИАЛОГ-МИФИ,
2002. – 496 с.
3. Акчурин Э.А. Программная реализация
взаимных преобразований алгебраического и экспоненциального представления
комплексного сигнала на цифровых сигнальных процессорах // Радиотехника. – 1995
– № 1-2 – С. 21-23.
4. Амосов А.А., Дубинский Ю.А., Копчёнова
Н.В. Вычислительные методы для инженеров. – М.: Высш. шк., 1994. – 544 с.
5. Чекушкин В.В. Реализация вычислительных
процессов в системах управления и контроля. Учебное пособие. – Муром.: 2001. –
44, 99с.
6. Костров В.В. Оценочно-корреляционная
обработка сигналов и ее применение: Учеб. пособие / Владим. гос. ун-т, 1997. –
108 с.