страница 1 ... страница 7 | страница 8 | страница 9 страница 10 страница 11 ... страница 13 | страница 14
ВЫЧИСЛИТЕЛЬНАЯ МОДЕЛЬ НЕЙРОННОЙ СЕТИ
Пакет NNT использует специальный класс объектов network.object. Эти объекты представлены в пакете в виде массива записей, поля которых определяют их свойства, характеристики и параметры. Массивы записей позволяют задать вычислительную модель нейронной сети, для которой используется стандартное имя net, являющееся также и именем массива записей.
Архитектура нейронной сети характеризуется количеством входов, слоев, выходов, целей, смещений, а также топологией их соединения. Описание полей массива сети net приведено в табл. 2.
netИмя поляРазмерТип.numInputsКоличество входов1Ч1integer.numLayersКоличество слоев1Ч1integer.biasConnectМатрица связности для смещенийnumLayers×1 Boolean array.inputConnectМатрица связности для входовnumLayers×
numInputsBoolean array.layerConnectМатрица связности для слоевnumLayers× numLayersBoolean array.outputConnectМатрица связности для выходов1×numLayersBoolean array.targetConnectМатрица связности для целей1×numLayersBoolean
array.numOutputsКоличество выходов1Ч1integer.numTargetsКоличество целей1Ч1integer.numInputDelaysМаксимальное значение задержки для входов1Ч1integer.numLayerDelaysМаксимальное значение задержки для слоев1Ч1integer
Количество векторов входа сети numInputs следует отличать от числа элементов вектора входа. Количество входов задается целым положительным числом и указывает, как много векторов входа подано на сеть. В свою очередь количество элементов каждого входного вектора задается свойством inputs{i}.size. Любое изменение поля numInputs будет влиять на размеры матрицы связности inputConnect и массивов ячеек inputs{i}.
Количество слоев numLayers задается целым положительным числом. Любое его изменение будет влиять на размеры матриц связности biasConnect, inputConnect, layerConnect, outputConnect, targetConnect, а также размеры массивов весов и смещений IW, LW, b.
Одномерная матрица связности для смещений biasConnect является булевой матрицей размера NlЧ1, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие смещений в слое i отмечается в элементе вектора biasConnect(i) как 1 или 0 соответственно. Наличие смещения означает, что в массивах ячеек biases{i} и b{i} будут созданы структуры, задающие все характеристики смещения.
Матрица связности для входов inputConnect является булевой матрицей размера NlЧNi, где Nl – количество слоев, определяемых свойством numLayers, и Ni – количество входов, определяемых свойством numInputs. Наличие или отсутствие веса при связывании слоя i со слоем j отмечается в элементе матрицы inputConnect(i,j) как 1 или 0, соответсвенно. Наличие веса означает, что в массивах ячеек inputWeights{i} и IW{i} будут созданы структуры, задающие характеристики весов входа.
Матрица связности для слоев layerConnect является булевой матрицей размера NlЧNl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие веса в слое i по входу j отмечается в элементе матрицы layerConnect(i,j) как 1 или 0 соответственно. Наличие веса означает, что в массивах ячеек layerWeights{i} и LW{i} будут созданы структуры, задающие характеристики весов слоя.
Матрица связности для выходов outputConnect – одномерная булева матрица размера 1ЧNl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие выхода в слое i отмечается в элементе вектора outputConnect(i) как 1 или 0 соответственно. Наличие выхода изменяет значение свойства numOutputs и означает, что в массиве ячеек outputs{i} будет сформирована структура, задающая характеристики выхода.
Матрица связностей для целей targetConnect – одномерная булева матрица размера 1ЧNl, где Nl – количество слоев, определяемых свойством numLayers. Наличие или отсутствие целевого выхода в слое i отмечается в элементе вектора targetConnect(i) как 1 или 0 соответственно. Наличие цели изменяет значение свойства numTargets и означает, что в массиве ячеек targets{i} будет сформирована структура, задающая характеристики целевого выхода.
Число выходов numOutputs, определенное только для чтения, задается количеством единиц в матрице связности для выходов.
Число целей numTargets, определенное только для чтения, задается количеством единиц в матрице связности для целей.
Максимальное значение задержки для входов numInputDelays (только для чтения) определяет максимальное значение задержки для входных последовательностей.
Максимальное значение задержки для слоев numLayerDelays определяет максимальное значение задержки для всех слоев сети.
Перечень функций, используемых для инициализации, адаптации и обучения нейронной сети net, приводится в табл. 3.
Таблица 3
netИмя поляСоставТип.initFcnФункции инициализацииinitcon |initiay
initnw | initnwb |
initzerochar.initParamПараметры функции инициализации .adaptFcnФункции адаптацииadaptwb | trainschar.adaptParamПараметры функции адаптации.trainFcnФункции обученияtrainbr | trainc | traincgb | traincgf| traingda | traingdm| traingdx | trainlm| trainoss | trainr | trainrp | trainscgchar.trainParamПараметры функции обучения.performFcnФункции оценки качества обученияmae | mse | sse | mseregchar.performParamПараметры функции оценки качества обучения
Параметры всех функций этой таблицы определяют набор параметров для используемой функции. Узнать набор таких параметров можно, применив оператор help, например:
Help(net.trainFcn).
Функции инициализации initFcn определяют, какая из функций инициализации будет использована для задания начальных матриц весов и векторов смещений при вызове метода init для всей сети. При изменении этого свойства параметры функции инициализации initParam будут использовать значения, соответствующие новой функции.
Функции адаптации adaptFcn определяют, какая из функций адаптации будет использована при вызове метода adapt.
Функции обучения trainFcn определяют, какая из функций обучения будет использована при вызове метода train.
Функции оценки качества обучения performFcn определяют, какая из функций оценки качества обучения будет использована при вызове метода train.
Пользователь может дополнить список используемых функций инициализации, адаптации, обучения и оценки качества обучения.
Элементы сети задаются с помощью массивов ячеек, которые включают структуры для описания входов, слоев, выходов, целей, смещений и весов входа. Все эти структуры определяются однотипно, поэтому в пособии рассмотрим только описание слоев.
Описание полей структуры, используемой для определения каждого слоя нейронной сети net.layers{i}, приводится в табл. 4.
Таблица 4
netИмя поляТипРазмер, состав.layers{i}Описатель i-го слоя сетиCell arraynumLayers×1.dimensionsРаспределение нейронов по размерностям слояDouble array1×numdim.distanceFcnФункции вычисления расстояния между нейронамиCharboxdist | dist | linkdist | mandist.distancesРасстояния между нейронамиDouble array.initFcnФункции инициализацииCharinitw | initwb.netInputFcnФункции накопленияCharnetprod| netsum.positionsПоложения нейроновArray.sizeКоличество нейроновInteger1Ч1.topologyFcnФункции топологииChargridtop | hextop | randtop.transferFcnФункции активацииCharcompet| logsig |
poslin |purelin |
radbas | satlin | satlins | tansig | tribas | hardlims.userdataИнформация пользователяStruct1Ч1.noteтекстChar1Чvar
Описатель слоев нейронной сети layers{i} является массивом ячеек размера NlЧ1, где Nl – число слоев сети, равное numLayers, состоящим из ячеек layers{i}, каждая из которых является массивом записей для описания i-го слоя сети.
Вектор распределения по размерностям слоя dimensions позволяет описывать многомерные слои нейронов реальных геометрических размерностей: одномерные, двумерные, трехмерные. Многомерный слой размерности numdim может быть задан вектор-строкой, элементы которой указывают число нейронов по каждой размерности, тогда их произведение будет определять общее количество нейронов в многомерном слое layers{i}.size. Это свойство позволяет определить положение нейронов layers{i}.positions, если известна функция топологии слоя layers{i}.topologyFcn. При изменении этого вектора будут автоматически изменяться layers{i}.size, положение нейронов layers{i}.positions и расстояния между ними layers{i}.distances.
Функция оценки расстояния между нейронами distanceFcn задает функцию, используемую для вычисления расстояния между нейронами в слое i. При замене функции будут автоматически пересчитаны значения расстояний между нейронами слоя layers{i}. distances. Список применяемых функций оценки расстояния может быть расширен самим пользователем.
Расстояние между нейронами в i-ом слое определяет свойство layers{i}.distances.
Функция инициализации слоя initFcn определяет, какая функция инициализации используется для слоя i.
Функция накопления netInputFcn определяет, какая функция накопления применяется для слоя i.
Для построения графика расположения нейронов в многомерном слое для слоя i можно использовать функцию plotsom с аргументом net.layers{i}.positions.
Функция активации слоя transferFcn определяет функцию активации, используемую для задания нейрона в слое i.
Поле для записи информации пользователя для слоя i предусмотрено в массиве записей userdata. По умолчанию поле inputs{i}.userdata.note, предусмотренное для записи текста, содержит строку «Put your custom input information here», что означает – «Информацию разместите здесь».
Матрицы весов и векторы смещений описываются функциями, представленными в табл. 5.
Таблица 5
netИмя поляТипРазмер.IWМассив ячеек для матриц весов входаCell arraynumLayers×
numInputs.LWМассив ячеек для матриц весов слояCell arraynumLayers×
numLayers.bМассив ячеек для векторов смещенийCell arraynumLayers×1Массив ячеек IW имеет размеры NlЧNi, где Nl – число слоев numLayers и Ni – число входов numInputs сети net, каждый элемент которого является матрицей весов, связывающе слой i со входом j сети. Структура этого массива согласована с матрицей связности inputConnect(i,j). Каждая матрица весов должна иметь число строк, равное параметру layers{i}.size, а число столбцов соответствовать параметру inputWeights{i,j}.size.
Массив ячеек LW имеет размеры NlЧNl, где Nl – число слоев numLayers сети net, каждый элемент которого является матрицей весов, связывающий слой i со слоем j сети. Структура этого массива согласована с матрицей связности layerConnect(i,j). Каждая матрица весов должна иметь число строк, равное параметру layers{i}.size , а число столбцов соответствовать параметру layerWeights{i,j}.size.
Вектор смещений b является массивом ячеек размера NlЧ1, где Nl – число слоев numLayers объекта net, каждый элемент которого является вектором смещений для слоя i сети. Структура этого вектора согласована с вектором связности biasConnect(i,j). Длина вектора смещений для слоя i должна соответствовать параметру biases{i}.size. Следует отметить, что для получения информации о структуре полей инициированного объекта network можно использовать функцию fieldnames(<имя_сети>), которая отражает текущее состояние нейронной сети.
страница 1 ... страница 7 | страница 8 | страница 9 страница 10 страница 11 ... страница 13 | страница 14
|