Создание, инициализация и моделирование сети 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание, инициализация и моделирование сети



Формирование архитектуры сети. Первый шаг при работе с нейронными сетями - это создание модели сети. Для создания сетей с прямой передачей сигнала в ППП NNT предназначена функция newff. Она имеет 4 входных аргумента и 1 выходной аргумент - объект класса network. Первый входной аргумент - это массив размера R х2, содержащий допустимые границы значений (минимальное и максимальное) для каждого из R элементов вектора входа; второй - массив для задания количества нейронов каждого слоя; третий - массив ячеек, содержащий имена функций активации для каждого слоя; четвертый - имя функции обучения.

Например, следующий оператор создает сеть с прямой передачей сигнала:

Net = newff([-1 2; 0 5], [3,1], {‘tansing’, ‘purelin}’, ‘traingd’}.

Эта сеть использует 1 вектор входа с двумя элементами, имеющими допустимые границы значений [-1 2] и [0 5]; имеет 2 слоя с тремя нейронами в первом слое и одним нейроном во втором слое; используемые функции активации: tansig - в первом слое, purelin-во втором слое; используемая функция обучения - traingd.

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

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

Net = init(net);

Моделирование сети.

Функции моделирования сети. Моделирование нейронной сети в Simulink осуществляется в соответствии с синтаксисом (метод sim):

[Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)

[Y,Pf,Af,E,perf] = sim(net,{Q TS},Pi,Ai,T)

[Y,Pf,Af,E,perf] = sim(net,Q,Pi,Ai,T)

Описание:

Функция [Y, Pf, Af E, perfj = sim(net, P, Pi, Ai, T) выполняет моделирование нейронной сети и имеет следующие входные и выходные аргументы.

Входные аргументы:

net - имя нейронной сети;

Р - массив входов;

Pi - начальные условия на ЛЗ входов, по умолчанию нулевой вектор;

Ai - начальные условия на ЛЗ слоев, по умолчанию нулевой вектор;

Т - вектор целей, по умолчанию нулевой вектор.

Выходные аргументы: Y - массив выходов;

Pf - состояния на ЛЗ входов после моделирования; Af - состояния на ЛЗ слоев после моделирования; Е - массив ошибок; perf - значение функционала качества.

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

Моделирование статических сетей. Статическая нейронная сеть характеризуется тем, что в ее составе нет элементов запаздывания и обратных связей. Ее поведение не зависит от типа вектора входа, поскольку последовательно подаваемые векторы можно рассматривать как действующие одновременно или как один объединенный вектор. Поэтому в качестве модели статической сети рассмотрим сеть, показанную на рисунок 6.22.

 

Рисунок 6.22. Статическая сеть.

 

 

Это однослойная сеть с двухэлементным вектором входа и линейной функцией активации. Для задания такой сети предназначена М-функция newlin из ППП Neural Network Toolbox, которая требует указать минимальное и максимальное значение для каждого из элементов входа; в данном случае они равны -1 и 1 соответственно, а также количество слоев, в данном случае 1:

% Формирование однослойной линейной сети net с двухэлементным входным

% сигналом со значениями от -1 до 1;

Net = newlin([-1 1; -1 1]);

Определим весовую матрицу и смещение равными W = [1 2], b = 0, и зададим эти значения, используя описание структуры сети

net.IW{1,1} = [1 2]; % Присвоение значений весов

net.b{1} = 0; % Присвоение значений смещения.

Предположим, что на сеть подается такая последовательность из четырех векторов входа в двух повторностях:

P = [-1 0 0 1; 0 -1 1 -1].

Теперь можно смоделировать сеть net c вектором входа P и выходом A:

A = sim (net, P)

Результат расчета сети:

А = -1 -2 2 -1.

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

Моделирование динамической сети. Когда сеть содержит линии задержки, вход сети надо рассматривать как последовательность векторов, подаваемых на сеть в определенные моменты времени. Чтобы пояснить этот случай, рассмотрим простую линейную сеть, которая содержит 1 элемент линии задержки (рисунок 6.23).

 

 

Рисунок 6.23- Модель динамической сети.

 

Построим однослойную линейную сеть с линией задержки [0 1].

net = newlin([-1 1], 1[0 1]);

Зададим следующую матрицу весов W = [1 2] и нулевое смещение:

net.IW{1,1} = [1 2]; % Присваивание значений весов

net.biasConnect = 0; % Присваивание значений смещений

Предположим, что входная последовательность имеет вид {-1, -1/2,1/2,1}, и зададим ее в виде массива ячеек

Р = {-1 -1/2 1/2 1};

Теперь можно моделировать сеть, используя метод sim:

А = sim(net,P) % Моделирование сети net с входным сигналом Р и выходом А

Результат:

А = [-1] [-5/2] [-1/2] [2]

Введя массив ячеек, содержащий последовательность входов, сеть сгенерировала массив ячеек, содержащий последовательность выходов. В данном случае каждый выход формируется согласно соотношению a(t) = p(t) +2p(t-1).

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

 

Обучение нейронных сетей

 

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

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

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

Процедуры адаптации и обучения.

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

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

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

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

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

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

На самом деле сеть обучается минимизировать ошибку на некотором ограниченном обучающем множестве. Это не отвечает требованиям теории о наличии идеального и бесконечно большого обучающего множества. Это порождает проблему, которая известна как явление переобучения.

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

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

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

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

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

Способы адаптации и обучения. В ППП Neural Network Toolbox реализовано 2 способа адаптации и обучения: последовательный и групповой, в зависимости от того, применяется ли последовательное или групповое представление входов.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 322; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.20.57 (0.021 с.)