Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Искусственные нейронные сети



Цель работы: изучение архитектуры искусственных нейронных сетей, способов их графического изображения в виде функциональных и структурных схем и программного представления в виде объектов специального класса network, включающих массив структур с атрибутами сети и набор необходимых методов для создания, инициализации, обучения, моделирования и визуализации сети, а также приобретение навыков построения сетей различной архитектуры с помощью инструментального программного пакета Neural Network Toolbox системы MATLAB.

Теоретические сведения

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

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

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

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

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

Структурная схема сети изображается с помощью типового набора блоков, соединительных элементов и обозначений, принятых в инструментальном программном пакете Neural Network Toolbox системы MATLAB и пакете имитационного моделирования Simulink той же системы. Структурная схема сети может быть укрупнённой или детальной, причём степень детализации определяется пользователем. Системы обозначений блоков, элементов и параметров сети является векторно-матричной, принятой в системе MATLAB. Если в обозначении используется два индекса, то, как правило, первый индекс (индекс строки) указывает адресата, или пункт назначения, а второй индекс (индекс столбца) – источник структурной схемы сети. Структурные схемы создаются системой автоматически с помощью команды gensim. Если элементом вектора или матрицы на структурной схеме является сложный объект, то используются соответственно ячейка и массив ячеек.

Программным представлением, или вычислительной моделью искусственной нейронный сети, является объект специального класса network, который включает массив структур с атрибутами сети и набор методов, необходимых для создания сети, а также для её инициализации, обучения, моделирования и визуализации. Класс Network имеет два общих конструктора, один из которых не имеет параметров и обеспечивает создание массива структур с нулевыми значениями полей, а второй – имеет минимальный набор параметров для создания модели нейронной сети, достраиваемой затем до нужной конфигурации с помощью операторов присваивания. Для создания нейронных сетей определённого вида используются специальные конструкторы.

Практические задания

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

Net = network (numInputs, numLayers, biasConnect, imputConnect, layerConnect, outputConnect, tartegtConnect).

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

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

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

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

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

inputConnect=[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;

targetConnect=[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 – количество выходов сети;

numTargets = 1 – количество целей сети;

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

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

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

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

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

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

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

г) Layer 1, Layer 2, Layer 3, … слои нейронов с обозначениями входов p{1}, p{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} = - ¼;

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) и проверить параметры блока.

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

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

PG = [0.5 1; 1 0.5];

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

AG = sim(net, PG);

AS = 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).

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

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

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

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

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

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

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

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

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

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

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





Дата публикования: 2015-10-09; Прочитано: 634 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.016 с)...