- •Учебное пособие
- •Часть 1. Изучение свойств формального нейрона; создание, инициализация и моделирование сети; использование инструментальных возможностей gui-интерфейса для нейронных сетей и данных.
- •Содержание
- •Лабораторная работа №1 «Определение свойств формального нейрона»
- •Лабораторная работа №2 «Создание, инициализация и моделирование сети. Статический и динамические сети в системе Simulink»
- •Введение
- •1. Функциональные особенности искусственных нейронных сетей (инс)
- •2. Определение инс и их классификация
- •Виды функций активации нейронов
- •Экспериментальная часть
- •Варианты заданий
- •Контрольные вопросы
- •Создание, инициализация и моделирование сети. Статический и динамические сети в системе Simulink
- •Теоретическая часть
- •Экспериментальная часть
- •Контрольные вопросы
- •1. Вычислительные аспекты matlab
- •2. Вычислительная модель нейронной сети
- •3. Применение системы Simulink
- •Теоретическая часть
- •Экспериментальная часть
- •Простейшие однослойные и двухслойные нейронные сети
- •Контрольные вопросы
- •Формирование архитектуры сети
- •Методические указания по выполнению лабораторных работ по дисциплине «математическое моделирование в технике»
- •107023, Г. Москва, б. Семеновская ул., 38
Формирование архитектуры сети
Например, следующий оператор создает сеть с прямой передачей сигнала:
>> net = newff( [-1 2; 0 5] , [3,1] , {'tansig' , 'purelin'} , 'traingd')
net =
Neural Network object:
architecture:
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
targetConnect: [0 1]
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
targets: {1x2 cell} containing 1 target
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
functions:
adaptFcn: 'trains'
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'traingd'
parameters:
adaptParam: .passes
initParam: (none)
performParam: (none)
trainParam: .epochs, .goal, .lr, .max_fail,
.min_grad, .show, .time
weight and bias values:
IW: {2x1 cell} containing 1 input weight matrix
LW: {2x2 cell} containing 1 layer weight matrix
b: {2x1 cell} containing 2 bias vectors
other:
userdata: (user stuff)
>>
Приложение 2
Способы инициализации сети
Способ инициализации зависит от выбора параметров сети net.initFcn и net.layes{i}.initFcn, которые устанавливают ту или иную функцию инициализации. Параметр net.initFcn задает функцию инициализации для всей сети. Для сетей с прямой передачей сигнала по умолчанию используется функция инициализации initlay, которая разрешает для каждого слоя сети использовать собственную функцию инициализации, определяемую свойством net.layes{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' (Enter)
net =
Neural Network object:
architecture:
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
targetConnect: [0 1]
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
targets: {1x2 cell} containing 1 target
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
functions:
adaptFcn: 'trains'
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'traingd'
parameters:
adaptParam: .passes
initParam: (none)
performParam: (none)
trainParam: .epochs, .goal, .lr, .max_fail,
.min_grad, .show, .time
weight and bias values:
IW: {2x1 cell} containing 1 input weight matrix
LW: {2x2 cell} containing 1 layer weight matrix
b: {2x1 cell} containing 2 bias vectors
other:
userdata: (user stuff)
>>
>> net.inputWeights{1,1}.initFcn = 'rands' (Enter)
net =
Neural Network object:
architecture:
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
targetConnect: [0 1]
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
targets: {1x2 cell} containing 1 target
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
functions:
adaptFcn: 'trains'
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'traingd'
parameters:
adaptParam: .passes
initParam: (none)
performParam: (none)
trainParam: .epochs, .goal, .lr, .max_fail,
.min_grad, .show, .time
weight and bias values:
IW: {2x1 cell} containing 1 input weight matrix
LW: {2x2 cell} containing 1 layer weight matrix
b: {2x1 cell} containing 2 bias vectors
other:
userdata: (user stuff)
>> net.biases{1,1}.initFcn = 'rands' (Enter)
net =
Neural Network object:
architecture:
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]
targetConnect: [0 1]
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
subobject structures:
inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
targets: {1x2 cell} containing 1 target
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
functions:
adaptFcn: 'trains'
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'traingd'
parameters:.
Методическое пособие.
Пупков Константин Александрович
Воронов Евгений Михайлович
Гаврилов Александр Игоревич
Крыжановская Татьяна Георгиевна