layerConnect, outputConnect, tartegtConnect).

Связи между слоями должны быть только прямыми, входы необходимо соединить с первым слоем, а выход - с последним. Выход должен быть целевым, первый слой должен иметь смещения.

Смысл и значения параметров конструктора для создания модели сети заданной архитектуры таковы:

numImputs = 2 - количество входов сети;

numLayers = 3 - количество слоёв в сети;

biasConnect = [1; 0; 0] - матрица связности для смещений размера numLayers * 1;

imputConnect = [1 1; 0 0; 0 0] - матрица связности для входов размера numLayers * numImputs;

layerConnect = [0 0 0;1 0 0 0 ; 0 1 0] - матрица связности для слоев размера numLayers * numLayers;

outputConnect = [0 0 1] - матрица связности для выходов размера 1* numLayers;

tartegtConnect = [0 0 1] - матрица связности для целей размера 1 * numLayers.

Порядок выполнения задания следующий:

 

1. Создать шаблон сети, выполнив команду

net= network (2, 3, [1; 0; 0], [1 1; 0 0 ; 0 0],[0 0 0 ; 1 0 0 ; 0 1 0], [0 0 1])

 

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

3. Проверив значения вычисляемых полей модели, которые дополняют описание архитектуры сети

numOutputs = 1 - количество выходов сети;

numInputDelays = 0 - максимальное значение задержки для входов сети

numLayerDelays = 0 - максимальное значение задержки для слоёв сети.

Заметив, что каждый выход и каждая цель присоединяются к одному или нескольким слоям при этом количество компонент выхода или цели равно количеству нейронов в соответствующем слое. Для увеличения возможности модели в сеть включают линии задержки либо на её входах, либо между слоями. Каждая линия задерживает сигнал на один такт. Параметры numInputDelaysи NumLayerDelays определяют максимальное число линий для какого-либо входа или слоя соответственно.

4. Проанализировав структурную схему построенной сети, выполнив команду gensim(net)и детализируя блоки с помощью двойного щелчка левой клавиши мыши по рассматриваемому блоку.

 

Рис. 2. Структурная схема созданной многослойной нейронной сети

 

На структурных схемах искусственных нейронных сетей в пакете NNT используются следующие обозначения:

а) Neural Network- искусственная нейронная сеть с обозначениями входов x{1}, x{2}, …и выхода y{1};

б) входы Input1 ,или x{1}и Input2, или x{2};

в) дисплей y{1};

г) Layer 1, Layer 2, Layer 3, … слои нейронов с обозначениями входов x{1}, x{2], a{1}, a{2}, … и выходов a{1}, a{2}, a{3}, … , y{1};

д) TDL- линии задержки (Time Delay)с именами Delays1, Delays2, ..., которые обеспечивают задержку входных сигналов или сигналов между слоями нейронов на 1, 2, 3, …такта;

е) Weights- весовая матрица для входных сигналов или сигналов между слоями нейронов; размер матрицы весов для каждого вектора входа S×R, где S- число нейронов входного слоя, а R- число компонент вектора входа, умноженное на число задержек; размер матрицы для сигналов от слоя jк слою iравен S×R,где S- число нейронов в слое i, а R- число нейронов в слое j, умноженное на число задержек;

ж) dotprod- блок взвешивания входных сигналов и сигналов между слоями, на выходе которого получается сумма взвешенных, т. е. умноженных на соответствующие веса компонент сигнала;

з) mux- концентратор входных сигналов и сигналов между слоями, преобразует набор скалярных сигналов в вектор, а набор векторов в один вектор суммарной длины;

и) netsum- блок суммирования компонент для каждого нейрона слоя: компонент от нескольких векторов входа с учётом задержек, смещения и т. п.;

к) hardlim, purelinи т. д. - блоки функций активации;

л) pd{1, 1}, pd{1, 2}, ad{2, 1}, ...- сигналы после линий задержки (d - delay);

м) iz{1, 1}, iz{1, 2}, lz{2, 1}, lz{3, 2}- вектор-сигналы с выхода концентратора;

н) bias- блок весов смещений для слоя нейронов;

о) IW- массив ячеек с матрицами весов входов: IW{i, j}- матрицы для слоя iот входного вектора j;

п) LW- массив ячеек с матрицами весов для слоёв: LW{i, j}- матрицы для слоя iот слоя j.

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

6. Задал нулевые последовательности сигналов для входов

P = [0 0 ; 0 0]

и произвел моделирование сети

A = sim(net, P)

7. Задал диапазоны входных сигналов и весовые матрицы с помощью следующих присваиваний:

 

net.inputs{1}.range = [0 1];

net.inputs{2}.range = [0 1];

net.b{1}= - 0,25;

net.IW{1, 1} = [0.5];

net.IW{1, 2} = [0.5];

net.LW{2, 1} = [0.5];

net.LW{3, 2} = [0.5].

 

Исполнил команду gensim(net)и проверил параметры блока.

 


Рис. 3. График работы нейронной сети

 

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

ans{1} =

exampleInput: [0 1]

name: 'Input'

processFcns: {}

processParams: {}

processSettings: {1x0 cell}

ans{2} =

exampleInput: [0 1]

name: 'Input'

processFcns: {}

processParams: {}

processSettings: {1x0 cell}

 

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

PG = [0.5 1 ; 1 0.5];

PS= {[0.5 1] [1 0.5]};

PG1 = sim(net, PG);

PS1 = sim(net, PS)

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

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

net.inputWeights{1, 1}.delays = [0 1];

net.inputWeights{1, 2}.delays = [0 1];

net.layerWeights{3, 2}.delays = [0 1 2].

11. Скорректировал весовые матрицы:

net.IW{1, 1} = [0.5 0.5];

net.IW{1, 2} = [0.5 0.25];

net.LW{3, 2} = [0.5 0.25 1].

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

AG = sim(net, PG);

AS= sim(net, PS).

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

 

Рис. 4. График динамической многослойной нейронной сети

 

13. Вывел на печать поля вычислительной модели и их содержимое, используя функций celldisp.

ans{1} =

exampleInput: [0 0,5]

name: 'Input'

processFcns: {0,5 0,5}

processParams: {0,5 0,25}

processSettings: {1x0 cell}

ans{2} =

exampleInput: [0 0,5]

name: 'Input'

processFcns: {0,5 0,5}

processParams: {0,5 0,25 1}

processSettings: {1x0 cell}

 

14. Сохранил содержимое командного окна в М-файле для последующего использования.

Задание 2.

Создать точно такую же динамическую сеть asgnet, используя конструктор класса networkбез параметров и задавая значения соответствующих полей вычислительной модели с помощью операторов присваивания. Убедиться в идентичности сетей netи asgnet.

Сравнить результаты работы полученных сетей.

 

Порядок выполнения.

 

1. Создать динамическую сеть asgnet использую пустой конструктор network

asgnet = network();

 

 
 

2. Задать все параметры и значения полей при помощи присвоения

asgnet.numInputs = 2

 
 

asgnet.numLayers = 3

 
 

asgnet.biasConnect = [1; 0; 0]

asgnet.inputConnect = [1 1; 0 0 ; 0 0]

asgnet.layerConnect = [0 0 0; 1 0 0; 0 1 0]

asgnet.outputConnect = [0 0 1]

 
 

Рис. 5. Структурная схема нейронной сети asgnet

P1 = [0 0 ; 0 0]

A1 = sim(asgnet, P1)

asgnet.inputs{1}.range = [0 1];

asgnet.inputs{2}.range = [0 1];

PG1 = [0.5 1 ; 1 0.5];

PS1= {[0.5 1] ; [1 0.5]};

AG1 = sim(asgnet, PG1);

AS1= sim(asgnet, PS).

asgnet.b{1}= - 0,25;

asgnet.inputWeights{1, 1}.delays = [0 1];

asgnet.inputWeights{1, 2}.delays = [0 1];

asgnet.layerWeights{3, 2}.delays = [0 1 2].

asgnet.IW{1, 1} = [0.5 0.5];

asgnet.IW{1, 2}= [0.5 0.25];

asgnet.LW{2, 1} = [0.5];

asgnet.LW{3, 2} =[0.5 0.25 1]

 

 
 

Рис. 6. График работы нейронной сети asgnet

Рис. 7. График работы нейронной сети net

Даже при помощи простого присвоения и построения по элементам нейронную сеть мы получили идентичные результат работы.

 

Задание 3.Используя блоки имитационного моделирования инструментального пакета Simulink системы MATLAB, построить модель динамической сети asgnet, провести исследование модели, проверить адекватность её поведения поведению модели netи оформить электронный отчёт с помощью генератора Report Generator.

Был создан отчет при помощи пакета Simulink, сам отчет предоставляется с файлам курсовой работы.

Задание 4. Используя конструктор класса networkс параметрами и операторы присваивания для полей и ячеек объектов этого класса, построить, выдать на экран и промоделировать искусственные нейронные сети следующей архитектуры:

а) однослойная сеть с тремя нейронами, тремя двухкомпонентными входами и одним целевым выходом;

task1 = network (3, 1, [1], [1 1 1],[1], [1], [1])

 

Рис. 8. Однослойная сеть с тремя нейронами

б) трёхслойная сеть с прямой передачей сигналов и с тремя нейронами в каждом слое; количество входов -три с двумя, пятью и тремя компонентами; для всех слоёв имеется смещение; выход -один;

 

task2 = network (3, 3, [1 ; 1; 1], [1 0 0; 1 0 0; 1 0 0],[1 0 0; 1 0 0; 1 0 0], [1 0 0], [1 0 0])

 

Рис. 9. Трехслойная сеть с прямой передачей сигналов

в) трёхслойная сеть, в которой каждый слой соединён со всеми остальными; вход -один и состоит из двух компонентов; количество нейронов в каждом слое -три; слои имеют смещения;

 

task3 = network (3, 3, [1 ; 0; 0], [1 1 1; 1 1 1; 1 1 1],[1 1 1; 1 1 1; 1 1 1], [1 0 0], [1 0 0])

Рис. 11. трёхслойная сеть, в которой каждый слой соединён со всеми остальными;

 

г) трёхслойная динамическая сеть с тремя нейронами в каждом слое; число входов -три, из них каждый состоит из трёх компонентов; имеются смещения на всех слоях; линии задержки задерживают сигналы на один и два такта и включены между всеми слоями, а также на входе;

 

task3 = network (3, 3, [1 ; 0; 0], [1 1 1; 1 1 1; 1 1 1],[1 1 1; 1 1 1; 1 1 1], [1 0 0], [1 0 0])

 

 

Рис. 12. трёхслойная динамическая сеть

 

task3.inputWeights{1, 1}.delays = [0 1];

task3.inputWeights{1, 2}.delays = [0 1];

task3.inputWeights{1, 3}.delays = [0 1];

task3.inputWeights{2, 1}.delays = [0 1];

task3.inputWeights{2, 2}.delays = [0 1];

task3.inputWeights{2, 3}.delays = [0 1];

task3.inputWeights{3, 1}.delays = [0 1 2];

task3.inputWeights{3, 2}.delays = [2 1 2];

 

task3.IW{1, 1} = [0.5 0.8];

task3.IW{1, 2} = [0.5 0.2];

task3.IW{1, 3} = [0.2 1];

task3.IW{2, 1} = [0.2 1];

task3.IW{2, 2} = [0.5 0.2];

task3.IW{2, 3} = [0.5 1];

task3.LW{3, 1} = [0.5 0.2 0.1];

task3.LW{3, 2} = [0.1 0.2 0.1];

task3.LW{3, 3} = [0 0.2 1];

 

Рис. 13. График трехслойной динамической сети

 

д) квадратная сеть с десятью слоями и десятью нейронами в каждом слое; десять векторов подключаются по одному к каждому слою; имеется десять выходов от всех слоёв сети; смещения подключены к каждому слою.

P1 = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0];

P2 = {

[1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1]

[ 1 1 1 1 1 1 1 1 1 1] };

P3 = [1 1 1 1 1 1 1 1 1 1];

task5 = network(10, 10, P1, P2, P2, P3, P3)

 

Нейронная сеть получилась достаточно большая по массивности связей и слоев, по этому внешний вид схемы был сохранен в фай task5.mdl.

 

 

Выводы

Искусственная нейронная сеть – это сеть, состоящая из искусственных нейронов.

Нейронные сети делится по характеру обучения:

· нейронные сети, использующие обучение с учителем;

· нейронные сети, использующие обучение без учителя.

Обучение сети состоит в подстройке весовых коэффициентов каждого нейрона.

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

Используя математический пакет MatLab мы смогли построить простейшие нейронные сети, поэкспериментировать с их обучением, а так же изучив их структуру в контекстном и графическом режиме.

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