
Омский государственный технический университет
Кафедра ИВТ
Дисциплина
«Вычислительные системы и сети»
Лабораторная работа № 5
Искусственные нейронные сети
Омск, 2019
Введение
Иску́сственная нейро́нная се́ть (ИНС) — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей
ИНС представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Традиционно нейроны сети группируют в слои. В общем случае увеличение числа слоёв увеличивает возможности сети по моделированию более сложных объектов, однако переобучение сети, избыточность слоёв и нейронов (соответственно, определение необходимых размеров обучающей выборки, числа слоёв и нейронов) являются одними из базовых проблем построения сетей для решения конкретных задач.
Каждый нейрон периодически получает и генерирует простые сигналы, т.е. обменивается сигналами с другими нейронами. Хотя сигналы и нейроны весьма просты, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, нейроны способны выполнять довольно сложные задачи.
С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.
С математической точки зрения, обучение нейронных сетей — это многопараметрическая задача нелинейной оптимизации.
С точки зрения кибернетики, нейронная сеть может использоваться в задачах адаптивного управления и как алгоритмы для робототехники.
С точки зрения развития вычислительной техники и программирования, нейронная сеть — способ решения проблемы эффективного параллелизма.
Отметим также, что успехи практической реализации ИНС означают принципиальную возможность построения ИНС, эмулирующей реальный мозг.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Для обучения не нужны алгоритмы и вообще какие-либо сведения о закономерностях функционирования изучаемого обьекта – нужны только экспериментальные данные о нескольких «сеансах» взаимодейтсвия с ним – обучающие выборки. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искажённых данных.
Одна из универсальных и самых мощных систем математической обработки данных MathWorks MATLAB предоставляет достаточно широкий набор средств для работы с нейронными сетями. При этом сеть может быть объединена с другими компонентами из системы Matlab – к примеру, внедрена в эмулятор микроконтроллера.
Для создания НС в Matlab есть несколько возможностей. Наиболее гибкий способ – с помощью команд встроенного систему в М-языка. Одно из основных преимуществ этого способа – отсутствие существенных ограничений на количество слоёв создаваемой сети.
Далее мы рассмотрим в Matlab наиболее типичное применение НС - воспроизведение неизвестной функции по известным значениям входных и выходных параметров. При самостоятельном изучении возможностей сетей во-первых стоит обратить внимание на то, что современные НС располагают большим количеством алгоритмов, более эффективных чем классчиеские. Во-вторых для экспериментов с сетями с интернете можно найти множество обучающих выборок, некоторые из которых считаются эталонными для тестирования специализированных НС.
Задача 1
Простейшей сетью является сеть из одного слоя, преобразующая входные сигналы в выходные.
Создадим векторы входа и целей (код Matlab):
x = [1.0 1.5 3.0 -1.2];
y = [0.5 1.1 3.0 -1.0];
Теперь создадим линейную нейронную сеть:
b=newlind(x,y); % Создание линейной НС с именем b
В результате получим сеть из 4 нейронов, веса которых настроены в соответствии с заданными векторами. Проведем опрос сети для значения входа, равного 3.0:
y1 = sim(b, 3.0) % Опрос сети
Оцените результат выполнения данных операций.