Автор: Matrix Matrx, 10 Декабря 2010 в 16:29, лабораторная работа
Цель работы: получение начальных навыков обучения простейшей нейронной сети
Нейронная сеть (НС) представляет собой совокупность нейронов – вычислительных элементов (называемых персептронами), каждый из которых имеет несколько входов–синапсов и один выход–аксон.
Цель работы: получение начальных навыков обучения простейшей нейронной сети.
Нейронная сеть (НС) представляет собой совокупность нейронов – вычислительных элементов (называемых персептронами), каждый из которых имеет несколько входов–синапсов и один выход–аксон.
Рис. 3.1. Схематическое изображение нейрона
Интеллект одиночного нейрона невысок. Можно считать, что он реализует в НС простую регрессивную модель для N независимых переменных (см. рис. 3.1). Если же объединить множество нейронов, в сетевые структуры, то и реализуемая функция может быть сколь угодно сложной.
Рис. 3.2. Простейшая трехслойная нейронная сеть
На рис. 3.2 НС имеет явно выраженные слои, т.е. ряды нейронов, равноудаленные от входа (выхода). Могут создаваться и другие структуры, в том числе с обратными связями (рекуррентные).
Структура отдельного нейрона может быть произвольной, но чаще всего используется следующая: входные сигналы (переменные) Xi взвешиваются (умножаются на коэффициенты Wi, называемые синаптическими весами), затем суммируются, и полученная взвешенная сумма
S = W1X1+W2X2+…+WNXN
подвергается изменению функцией f(S), называемой функцией активации (см. рис. 3.3). Выходной сигнал Y также может повергаться взвешиванию (масштабированию). В качестве функции активации чаще всего используются:
Рис. 3.3. Пример структуры отдельного нейрона
Известно, что человеческий мозг способен к самообучению, причем достигает успехов зачастую, не зная природы процессов, лежащих в основе выполняемых действий. Например, чтобы попасть мячом в баскетбольное кольцо, робот-баскетболист должен измерить расстояние до кольца и направление, рассчитать параболическую траекторию, и совершить бросок с учетом массы мяча и сопротивления воздуха. Человек же обходится без этого только через тренировки. Многократно совершая броски и наблюдая результаты, он корректирует свои действия, постепенно совершенствуя свою технику. При этом в его мозгу формируются соответствующие структуры нейронов, отвечающие за технику бросков. Иными словами, НС «скользит» вдоль временного ряда, «ощупывая» синапсами по три соседних числа, пытается предсказать значение следующего за ними.
Рис. 3.4. Алгоритм обучения нейронных сетей
Для НС этот процесс может быть представлен следующим алгоритмом (см. рис. 3.4):
Задача обучения сети имеет огромную размерность. Так, для обучения сети, состоящей всего из 10 нейронов, в каждом из которых по 3 синапса, необходимо подобрать значения по меньшей мере 40 параметров (30 значений Wi – синаптических весов, и 10 параметров функций активации li). Если каждый из параметров подбирать с дискретностью 1/100, то общее число прогонов сети на множестве тренировочных данных составит 10040.
Данная задача удовлетворительно решается с помощью алгоритма обратного распространения (back propagation), который заключается в следующем.
Несмотря на простоту, данный алгоритм является весьма трудоемким, и его ускорение представляет собой актуальную задачу.
Рассмотрим на примере решения задачи прогнозирования временных рядов основные приемы манипулирования исходными данными. Для предсказания некоторых величин зачастую используют только данные об их поведении в прошлом. Данный подход используется, в частности, в так называемом техническом анализе, когда в поведении величины во времени обнаруживаются определенные закономерности или стереотипы, например, линии на графике типа «треугольник», «голова-плечи» и т.п., а также уровни поддержки и сопротивления.
Обнаружено, что если некая величина, например, валютный курс неоднократно росла до определенного порога и останавливалась (сформировался уровень сопротивления), то превышение этого порога маловероятно. Если же она выросла до величины, ранее недостигаемой (пробила уровень сопротивления), то весьма вероятно дальнейшее ее повышение. И наоборот, если снижение величины несколько раз останавливалось на определенном уровне (уровне поддержки), то снижение ниже этого уровня маловероятно. Если же уровень поддержки пробит, то и дальнейшее падение весьма вероятно.
Механизм НС
здесь может оказаться
Каким же образом настроить сеть на прогнозирование поведения величины, если входная величина только одна? Для этого следует ее размножить на столько экземпляров, какова глубина предыстории нас интересует, и сдвинуть таким образом, чтобы на вход НС подавались вектора:
X1, X2, … , XN
X2, X3, … , XN+1
X3, X4, … , XN+2
…
Таким образом, одна входная величина превращается в N значений временного ряда в моменты времени 1, 2, … , N и, двигаясь вдоль временной оси, мы получим множество наблюдений. А в качестве выходной величины для сравнения с предсказанным значением мы должны использовать значение этого ряда в момент времени N+1.
Распространенной ошибкой в подготовке исходных данных для обучения сети является случай, когда одна и та же величина оказывается и среди входных и среди выходных данных. Очевидно, в этом случае будет получена простейшая сеть, где выходная величина будет напрямую получаться из ее двойника среди входных данных, правда, не быстро. Этот факт говорит о несовершенстве используемых алгоритмов обучения.
Что касается разбиения множества исходных данных на тренировочные и тестовые наборы, то для временных рядов неприемлема случайная выборка или регулярное «прореживание» исходных данных, поскольку в этих случаях будет нарушена временная последовательность. Здесь необходимо разбить временной ряд на два отрезка, например, первые 50% данных и последние 50%.
Если в результате обучения не был получен удовлетворительный результат, то необходимо изменить структуру сети. Это может быть сделано вручную, либо структура может выбираться из заранее созданного набора (библиотеки структур). Программные продукты, поддерживающие такие решения, существуют. Но наиболее удачным следует признать подход, при котором структура сети формируется автоматически. Примером может служить НС фирмы BioComp Systems Inc. (www.biocompsystems.com).
Данный подход заключается в применении к этой задаче генетических алгоритмов (другое название – «искусственная жизнь»). Дело в том, что в процессе обучения сети выявляются «сильные» нейроны и связи между ними (чувствительные к изменению параметров) и «слабые» (параметры которых можно менять произвольно без существенного влияния на конечный результат). Используя эти данные, можно управлять «популяцией» нейронов. Слабые нейроны и синапсы должны отмирать, а для развития структуры, а также, чтобы предотвратить всеобщее «вымирание», сеть подвергается «мутации»: в нее случайным образом или другим способом, например, для усиления «сильных» нейронов добавляются новые нейроны и синаптические связи. Таким образом, через множество поколений, количество которых может достигать десятков тысяч, сеть будет иметь оптимальную структуру.
В качестве инструментальной среды для начального изучения принципов построения и обучения НС используются электронные таблицы Microsoft Excel. Нейроны воспроизводятся с помощью формул в ячейках электронной таблицы. В этой же таблице размещаются исходные данные, а также все необходимые формулы для вычислений в ходе обучения НС.
Предлагается выполнить обучение простейшей нейронной сети, состоящих из одного нейрона, на решение задачи прогнозирования значений временного ряда yi (см. табл. 3.1).
Пример
тренировочных данных для нейронной сети
прогнозирования значений временного
ряда
Таблица 3.1.
|
Первые 13 чисел используются для обучения сети в качестве тренировочного набора данных. Последние два члена ряда в обучении не участвуют, а служат для тестирования сети.
Прогнозирование заключается в том, чтобы на основе yi, yi+1, yi+2 вычислить yi+3. Иными словами, НС «скользит» вдоль временного ряда, «ощупывая» синапсами по три соседних числа, пытается предсказать значение следующего за ними. Таким образом, для приведенного выше примера входными и выходными величинами будут следующие (см. табл. 3.2).
Ожидаемые значения временного ряда на каждом шаге обучения
Таблица 3.2.
|
Рис. 3.5. Структурная схема нейронной сети прогнозирования значений временного ряда
В лабораторной работе единственный нейрон (рис.3.5)
Представленный нейрон эмулируется следующими формулами:
si = w1*yi-3+ w2*yi-2 + w3*yi-1 ;
Yi = 1/(1+exp(-si))*10 ,
где w1, w2, w3 – синаптические веса; yi-3, yi-2, yi-1 – известные предыдущие значения этого временного ряда (i-й набором входных данных); si – взвешенная сумма i-го набора входных данных; Yi – прогнозируемое значение i-го члена временного ряда yi; 10 – масштабный множитель. В качестве функции активации используется логистическая функция сигмоида Yi= 1/(1+exp(-si)) .
Для того, чтобы
сократить рутинные операции по подстановке
в качестве входных данных троек
чисел из временного ряда, вышеуказанные
формулы размножаются, в результате
чего в электронной таблице