Нейронные сети и аппроксимация данных

УДК 612.8:519.6

В.И. Гализдра, Ш.Б. Бабаев НЕЙРОННЫЕ СЕТИ И АППРОКСИМАЦИЯ ДАННЫХ

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

Ключевые слова: восстановление пропущенных значений, нейросетевая технология, нейронная сеть, функция активации, перцептрон.

V. Galizdra, S. Babaev NEURAL NETWORKS AND DATA APPROXIMATION

The article views the approach of restoration the missing data in the matrix of observations using neural network technologies and suggests a neural network allowing to restore the missing data of groundwater level. The authors present the results of calculations and estimation of equivalence of the missing data in the false gaps.

Keywords: restoration the missing data, neural network technology, neural network, activation function, perceptron.

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

Рис. 1. Классификация алгоритмов импутирования

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

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

Нейронные сети могут применяться:

для классификации образов - указание принадлежности входного образа (речевого сигнала, рукописного символа), представленного вектором признаков к определённым классам; для аппроксимации функций - нахождение оценки неизвестной функции; для прогноза - предсказание поведения функции в некоторый будущий момент; для оптимизации - нахождение решения, удовлетворяющего системе ограничений, и максимизирует или минимизирует целевую функцию;

для управления - расчёт такого воздействия, при котором система следует по желаемой траектории.

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

В конце 1980-х годов американским математиком В. Крейновичем была доказана обобщённая аппроксимационная теорема: с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с некоторой наперёд заданной точностью. Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета, синуса или многочлена. От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может достаточно точно аппроксимировать функционирование любого непрерывного автомата.

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

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

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

цию (рис. 2). Он состоит из тела и отростков нервных волокон двух типов - дендритов, по которым принимаются импульсы, и единственного аксона, по которому нейрон может передавать импульс. Тело нейрона включает ядро, содержащее информацию о наследственных свойствах, и плазму, обладающую молекулярными средствами для производства необходимых нейрону материалов. Нейрон получает сигналы (импульсы) от аксонов других нейронов через дендриты (приёмники) и передаёт сигналы, сгенерированные телом клетки, вдоль своего аксона (передатчика), который в конце разветвляется на волокна. На окончаниях этих волокон находятся специальные образования - синапсы, влияющие на силу импульса.

Нейрон - это составная часть нейронной сети (НС) (рис. 3).

Входы Синапсы Ячейка нейрона Аксон Выход

Л*

Л'

Н'

П'

о

ГШ

О У

Л'п

Рис. 3. Структура искусственного нейрона

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

я = + ь, у = / (5),

I=1

где wi - вес синапса, Ь - значение смещения, 5 - результат суммирования, х1 - компонент входного вектора (входной сигнал), у - выходной сигнал нейрона, п - число входов нейрона, / -нелинейное преобразование (функция активации). Синаптические связи с положительными весами называются возбуждающимися, с отрицательными весами - тормозящими.

Таким образом, нейрон полностью описывается своими весами wi и функцией активации

/ (5).

На входной сигнал 5 нелинейный преобразователь отвечает выходным сигналом / (5) , который представляет собой выход нейрона у. Примеры активационных функций приведены в табл. 1.

Таблица 1

Перечень функций активации нейронов

Название Формула Область значений

Пороговая 10,5 < Т, I

Знаковая

Сигмоидальная

Полулинейная |5, 5 > 0, I

Линейная I (5) = 5

Радиальная базисная

Полулинейная с насыщением I

Линейная с насыщением I

Гиперболический тангенс

Треугольная |1-151,| 51< 1, I

Искусственная нейронная сеть - это набор соединённых между собой нейронов, элементом которой является однослойный перцептрон (рис. 4).

Л" Н ¥

Рис. 4. Однослойный перцептрон

Вопрос о построении нейронной сети решается в два этапа: выбор типа (архитектуры) сети; подбор весов (обучение) сети. На первом этапе следует выбрать:

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

Эта задача на первый взгляд кажется необозримой, но, к счастью, необязательно придумывать нейросеть «с нуля» - существует несколько десятков различных нейросетевых архитектур, эффективность которых доказана. Наиболее популярные и изученные архитектуры - это многослойный перцептрон (рис. 5), нейросеть с общей регрессией, сеть Кохонена и др.

Рис. 5. Многослойный перцептрон

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

е (*>)=£ (у - ^ ^

1=1

где у 1 - значение 1-го выхода нейросети, d^ - целевое значение 1-го выхода, р - число нейронов в выходном слое, например, методом градиентного спуска.

Рассмотрим теперь полный алгоритм обучения нейроной сети.

Подать на вход НС один из требуемых образов и определить значения выходов нейронов нейронной сети.

Рассчитать для выходного слоя НС

^) _/^I(N) \

К * ) =

dS/

1

Л

и рассчитать изменения весов выходного слоя м, ^^ = -^01 х1 , где ц- скорость обучения.

Найти 0( п), (и) для остальных слоёв НС, п = N - 1, ..., 1

1 У

¿Г) = 1Ип+1ХГ ] ^, ) = п) хп), к ]

где к - число нейронов в слое п +1. Скорректировать все веса НС

wín)(/) = w(:¡^ -1) + ),

где ^ - номер итерации (эпохи).

Если ошибка существенна, то перейти на шаг 1 (рис. 6).

база данных

сеть обучена

применение нейросети

А ошибка

ответ мала

сети

расчет

* ошибки

подстройка весов сети

ошибка велика

Рис. 6. Процесс обучения нейронной сети

Рассмотрим применение нейронной сети в задаче аппроксимации.

Создать и обучить нейронную сеть, выполняющую операцию у = х12 +x2 , если заданы последовательности входа P и цели T.

Выберем нейронную сеть типа feed-forward backprop с прямой передачей сигнала и с обратным распространением ошибки. Количество нейронов в скрытом слое Nc может быть найдено из условия:

(N -1) Na

p у out

с < Nm + Nout +1:

N <

где Nin и Nout - количество нейронов во входном и выходном слоях, N - количество обучающих примеров (объём выборки).

Используем пакет прикладных программ Neural Network Toolbox в среде системы MATLAB. Весам синапсов необученной НС изначально присваиваются произвольные значения. Для подготовки входного и эталонного массивов воспользуемся следующим алгоритмом. Выбираем случайным образом значения компонент матрицы P размера 2 х M (входной массив), где P1i = xXi, P2i = x2i. Из этих значений сформируем эталонный массив T размера 1х M , где

T1i = yi, M = 10 - объём выборки (рис. 7).

f

File Edit D«buO DeiUop

G^ * с- Щ Ztf

Shortcuts How to Add 1CJ VMhaTs Now

Current Directory I CiWATLABiVwork

m

To ort stnLicd, aeleci HATLAB Help OE Dettfla f eem cue Help tnifiu. » I"J г

- Fditor - C:\MATl AB7\work\netwi.m ВИИ*

F.le Ecfct Text Coi Tools Debug Desktop Wm< iow Help "" ^ X

О est H X Щщ ЩЦ о* 1 ш Ф% У. Q "Ш Ш W Ш Ш | Stack: | П ^

1 — P-ierosС Z, 10) г

z — T-2CCOS(l,ID)j

э — foe i-1 : Ю

4 P(1,±>-cend«2-l;

5 P(2,1)-rand*2-ii

6 — T(l,l)-P(l,l) .A2+P(2#l);

*7 — e nd ;

а

я

хо

1 X

12

',«*Jt Lr. i Col 1

Рис. 7. Формирование данных в среде MATLAB

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

Рис. 8. Архитектура созданной сети Научные и образовательные проблемы гражданской защиты - 2011'3

Перед обучением сети необходимо задать параметры обучения. Для чего задаём: функцию оценки функционирования SSE - сумма квадратов;

критерий окончания обучения - значение отклонения, при котором обучение будет считаться законченным GOAL = 0;

максимальное количество циклов обучения. После того, как будет выполнено это количество циклов, обучение будет завершено, EPOCHS = 100.

Теперь можно начинать обучение (рис. 9). Процесс обучения иллюстрируется графиком зависимости оценки функционирования от номера цикла обучения.

') Network: networkl

BEB у Network: networkl

WW I BitaiM [ Srouute I Triin [лазщ 1 waguts

ЕЕ

Training taft I Training Parameters | Opttontinfo 1

inputs А Щ Outputs Errors nettforki .outputs

Targets В V nGftforki^trcors

*X Network: network 1

vtew I шпане» | Broutât» | Trän | Adapt | Wflgftts

Training irrfQ [ Training Рампвйге | Optional info

epochs 100 mu_dec 01

goal 0 mujnc 10

maijaia 5 my_mji tel 0

memjeduc 1 show a

min_grad  »Old fame Inf

mu 0001

Manager

View I ЩЦДее | Simulait [ Tram | Adapt | Weights

Training tnfO I Training Parameters

Optional Info

0 Supple opöartal valuation data?

VJMlSOfl Dill Inpuls Targets TescOïU

A v Iniwts Targets *

В В

[ Manager ] | Close

BE [> Tniningwiih mu

BiB

|TninHetwut[

I Ireflt T«fe М4Ф Widow '*4>

Peitaiitice is i J3042e024. Gojl is 0

___tl 10 2ОЭО«60ЙШ8О9)

I m Epochs

Рис. 9. Параметры и процесс обучения сети

Перед тем, как воспользоваться нейронной сетью, необходимо исследовать степень достоверности результатов вычислений сети на тестовом массиве входных векторов. В качестве тестового массива используем массив, компоненты которого отличаются от компонентов массива обучения. В нашем случае для получения тестового массива достаточно ещё раз выполнить программу netwf (рис. 10).

Сравнение результатов эталонных и тестовых вычислений, выполненных нейронной сетью, проведено с помощью регрессионного анализа (график на рис. 10) и показывает правильную работу сети на тестовом массиве данных.

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

y = sim( network 1, P),

где P - набор входных векторов, y - результат анализа в виде набора выходных векторов. Например, пусть P = [0.95,0.9], тогда y = 1.8025 . Подставив этот входной вектор в качестве аргумента функции sim, получим y = 1.7957, что весьма близко к правильному результату (рис. 11).

Fto Edit Debug Desktop Window Help

D ,Y 4a ю Г- caT f*

Shortcuts L£j How to Add L£j Wtaat's New

» netvf; » P

Current Directory: C:WATLAe7\wwk

-0.6541 О.9595

-0.4S71 -О.4953

0.7S1S О.474 6

-О.7270 -О.9765

О * 7в7в -О.6Q17

-0.402 6 О.3229

-О.4312 -Q.0616

—О.S7Q4 О.9767

О.16S6 -О.153 О

О.ОЗЮ -О.3321

» т т -

-О,4180

» А-Р;

» В-Т;

» 7"sün(iwtwockl, A) i

» [m,b,с]-postсев(?(1#i)»T (1,i) } ;

»

Jjaimnp. Willi JRAINLM

Ne Edit View Ireeft T«Ji L'r7-.l--oc W^don Htl Best Linear Fit A= {0 9SS) T +

О Data Points

-Best Linear FH

......A= T

Рис. 10. Тестирование обученной сети

<,). MATLAB

I file Edit Debug Desktop Window Help i

Dei fS> ^ 3 f CurrerU Orectory: C*«TlAB7\WOrk v Shortcuts Isl How to Add >1 Wtrsl's New " E

» P-[0.9S„Q.9J;

» P-P';

» ysiro(networkl, P);

» 1

7 •

1.7957

Рис. 11. Применение нейронной сети Литература

1. Загоруйко Н.Г. Прикладные методы анализа данных и знаний. - Новосибирск: Изд. Института математики, 1999. - 264 с.

2. Литтл Р.Дж.А., Рубин Д.Б. Статистический анализ данных с пропусками. - М.: Финансы и статистика, 1991. - 430 с.

3. Некрасов О.Н., Мирмович Э.Г. Интерполирование и аппроксимация данных полиномами степенного, экспоненциального и тригонометрического вида // НиОПГЗ. - Химки: АГЗ, № 4, 2010. - С. 23 - 32.

4. Дьяконов В., Круглов В. Математические пакеты расширения MATLAB. Специальный справочник. - СПб.: Питер, 2001. - 480 с.

5. Медведев В.С., Потёмкин В.Г. Нейронные сети. MATLAB 6 / Под ред. В.Г.Потёмкина. - М.: Диалог-МИФИ, 2002. - 496 с.

6. Хайкин С. Нейронные сети. Полный курс. - М., 2006. - 1105 с.

7. Demuth H., Beale M. Neural Network Toolbox. For Use with MATLAB. The MathWorks Inc. 1992-2000.

8. Нейронные сети. STATISTICA Neural Networks. Методология и технология современного анализа данных / Под ред. В.П. Боровикова. - М.: Телеком, 2008. 392 с.

9. Горбань А.Н., Россиев Д.А. Нейронные сети на персональном компьютере. - Новосибирск: Наука, 1996. 276 с.