Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

2.2.3. Сети с прямой передачей сигнала

Однослойная сеть с Sнейронами с функциями активацииlogsig, имеющаяRвходов, показана на рис. 2.14.

Рис. 2.14

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

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

Рис. 2.15

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

2.3. Создание, инициализация и моделирование сети Формирование архитектуры сети

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

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

net = newff([–1 2; 0 5],[3,1],{'tansig','purelin'},'traingd');

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

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

Инициализация сети

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

net = init(net);

Способ инициализации зависит от выбора параметров сети net.initFcn и net.layers{i}.initFcn, которые устанавливают ту или иную функцию инициализации. Параметр net.initFcn задает функцию инициализации для всей сети. Для сетей с прямой передачей сигнала по умол­чанию используется функция инициализации initlay, которая разрешает для каждого слоя сети использовать собственную функцию инициализации, определяемую свойством net.layers{i}.initFcn.

Для сетей с прямой передачей сигнала обычно применяется одна из двух функций инициализации слоя: initwbилиinitnw.

Функция initwb позволяет использовать собственные функции инициализации для каждой матрицы весов входа и вектора смещений, задавая параметры net.inputWeights{i, j}.initFcn иnet.biases{i}.initFcn. Для сетей без обратных связей с линейными функциями активации веса обычно инициализируются случайными значениями из интервала [–1 1].

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

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

Например, если мы хотим заново инициализировать веса и смещения в первом слое, используя функцию rands, то надо ввести следующую последовательность операторов:

net.layers{1}.initFcn = 'initwb';

net.inputWeights{1,1}.initFcn = 'rands';

net.biases{1,1}.initFcn = 'rands';

net.biases{2,1}.initFcn = 'rands';

net = init(net);